vmstat, mpstat, sar 및 top을 사용하여 높은 로드 평균 이해

vmstat, mpstat, sar 및 top을 사용하여 높은 로드 평균 이해

유휴 상태일 때 시스템의 로드 평균을 이해하려고 합니다. 다음은 거의 아무것도 설치하지 않은 상태에서 시스템을 몇 시간 동안 실행한 후의 결과입니다.

가상 머신 상태

root@arm:~# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      0  62092  17860 135940    0    0     9    21  158  245  1  1 97  0
 0  0      0  62092  17860 135940    0    0     0     0  105  137  0  0 100  0
 0  0      0  62060  17860 135940    0    0     0     0  105  128  0  0 100  0
 0  0      0  62060  17860 135940    0    0     0     0  105  174  0  0 100  0
 0  0      0  62060  17860 135940    0    0     0     0  105  155  0  0 100  0
 0  0      0  62092  17860 135940    0    0     0     0  105  134  0  0 100  0
 0  0      0  62092  17860 135940    0    0     0     0  105  127  0  0 100  0
 0  0      0  62092  17860 135940    0    0     0     0  106  133  0  0 100  0
 0  0      0  62092  17860 135940    0    0     0     0  105  129  0  0 100  0
 0  0      0  62092  17868 135940    0    0     0    52 2101 4081  0  4 95  1
 0  0      0  62092  17868 135940    0    0     0     0  103  173  0  0 100  0
 0  0      0  62060  17868 135940    0    0     0     0  103  129  0  0 100  0

통계자료

root@arm:~# mpstat 1
Linux 3.10.0 (arm)  03/25/15    _armv7l_    (1 CPU)

20:02:04     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
20:02:05     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:06     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:07     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:08     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:09     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:10     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:11     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:12     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:13     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:14     all    0.00    0.00    0.00    0.00    0.00    0.99    0.00    0.00   99.01
20:02:15     all    0.00    0.00    0.00    0.00    0.00    0.99    0.00    0.00   99.01
20:02:16     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

남자 이름

root@arm:~# sar
Linux 3.10.0 (arm)  03/25/15    _armv7l_    (1 CPU)

17:53:42          LINUX RESTART

17:54:01        CPU     %user     %nice   %system   %iowait    %steal     %idle
17:55:01        all      0.25      0.00      0.63      0.00      0.00     99.12
17:56:01        all      0.07      0.00      0.47      0.00      0.00     99.47
17:57:01        all      0.25      0.00      0.43      0.02      0.00     99.30
17:58:01        all      0.20      0.00      0.47      0.03      0.00     99.30
17:59:02        all      0.13      0.00      0.30      0.03      0.00     99.53
18:00:01        all      0.08      0.00      0.36      0.02      0.00     99.54
18:01:01        all      0.12      0.00      0.45      0.02      0.00     99.4

세 가지 유틸리티 모두 비슷한 결과를 보였습니다. 이제 정상을 향해...

맨 위

top - 19:50:39 up  2:47,  1 user,  load average: 0.81, 0.77, 0.77
Tasks:  50 total,   1 running,  49 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.4 us,  0.8 sy,  0.0 ni, 97.3 id,  0.4 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem:    251692 total,   189540 used,    62152 free,    17724 buffers
KiB Swap:        0 total,        0 used,        0 free,   135920 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                               
 5249 root      20   0  3100 1176  864 R  10.7  0.5   0:00.07 top                                   
    1 root      20   0  2104  708  612 S   0.0  0.3   0:01.16 init                                  
    2 root      20   0     0    0    0 S   0.0  0.0   0:00.01 kthreadd                              
    3 root      20   0     0    0    0 S   0.0  0.0   0:00.05 ksoftirqd/0                           
    5 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0H                          
    6 root      20   0     0    0    0 S   0.0  0.0   0:00.25 kworker/u2:0                          
    7 root      20   0     0    0    0 S   0.0  0.0   0:00.01 rcu_preempt                           
    8 root      20   0     0    0    0 S   0.0  0.0   0:00.00 rcu_bh                                
    9 root      20   0     0    0    0 S   0.0  0.0   0:00.00 rcu_sched                             
   10 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 khelper                               
   11 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kdevtmpfs                             
  202 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 writeback                             
  204 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 bioset                                
  206 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kblockd                               
  235 root      20   0     0    0    0 S   0.0  0.0   0:00.00 khubd      

로드 평균은 다음과 같습니다.[0.81, 0.77, 0.77]!

이렇게 높은 "로드 평균"을 발생시키는 원인이 무엇인지 아시나요?

편집: 이 질문은 로드 평균과 관련이 없습니다.

"로드 평균 수는 실행 중인 대기열(상태 R) 또는 디스크 I/O를 기다리고 있는(상태 D) 작업 수를 나타냅니다."

I/O가 거의 0인 경우 어떻게 상태 D 프로세스가 있을 수 있으며 실행 대기열에 어떻게 그렇게 많은 작업이 있을 수 있습니까? 어떤 직업이 있는지 알 수 있는 방법이 있나요?

답변1

로드 평균은 상대적인 용어입니다. 0.01, 3.00, 14.00일 수 있습니다. 이는 백업되는 작업량을 나타내는 지표일 뿐이며 사용 가능한 코어 수에 따라 달라집니다. 4코어 시스템에서 3.9는 아무것도 백업되지 않음을 의미합니다(하지만 거의...).

출력을 보면 topCPU의 10.7%만 사용하고 있는 것으로 나타났습니다 top. 하지만 당신은 저가형 코어를 가지고 있는 것 같아요. 이 경우 평균값은 0.8 범위에 쉽게 도달할 수 있습니다.

로드 평균은 CPU의 유휴 상태가 아닌 비율과 직접적인 관련이 있는 것이 아니라 전달되는 작업량 및 경합 수준(있는 경우)과 관련이 있다는 점에 유의하는 것이 중요합니다.

다음은 loadavg 계산의 실제 복잡성에 대한 보다 철저한 답변입니다.https://stackoverflow.com/questions/11987495/linux-proc-loadavg

답변2

성능이 시스템에서 실행되고 있다고 가정하면(이전 노트북에서 충돌이 발생함) 전체의 백분율을 보여주는 보다 세부적인 CPU 통계를 얻을 수 있습니다. 즉, 모든 유휴 시간을 무시하므로 큰 백분율을 얻게 됩니다. :

perf top --sort=comm

나는 이것이 IO와 관련하여 실제로 도움이 되지 않는다고 생각합니다. 비록 항상 잠을 자고 있는 것이 아니라 실제로 깨어나는 최우선 순위를 강조할지라도 말입니다.

관련 정보