유휴 상태일 때 시스템의 로드 평균을 이해하려고 합니다. 다음은 거의 아무것도 설치하지 않은 상태에서 시스템을 몇 시간 동안 실행한 후의 결과입니다.
가상 머신 상태
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는 아무것도 백업되지 않음을 의미합니다(하지만 거의...).
출력을 보면 top
CPU의 10.7%만 사용하고 있는 것으로 나타났습니다 top
. 하지만 당신은 저가형 코어를 가지고 있는 것 같아요. 이 경우 평균값은 0.8 범위에 쉽게 도달할 수 있습니다.
로드 평균은 CPU의 유휴 상태가 아닌 비율과 직접적인 관련이 있는 것이 아니라 전달되는 작업량 및 경합 수준(있는 경우)과 관련이 있다는 점에 유의하는 것이 중요합니다.
다음은 loadavg 계산의 실제 복잡성에 대한 보다 철저한 답변입니다.https://stackoverflow.com/questions/11987495/linux-proc-loadavg
답변2
성능이 시스템에서 실행되고 있다고 가정하면(이전 노트북에서 충돌이 발생함) 전체의 백분율을 보여주는 보다 세부적인 CPU 통계를 얻을 수 있습니다. 즉, 모든 유휴 시간을 무시하므로 큰 백분율을 얻게 됩니다. :
perf top --sort=comm
나는 이것이 IO와 관련하여 실제로 도움이 되지 않는다고 생각합니다. 비록 항상 잠을 자고 있는 것이 아니라 실제로 깨어나는 최우선 순위를 강조할지라도 말입니다.