이 문서에서는 시스템/CPU 부하와 부하 평균과 관련된 중요한 리눅스 시스템 관리 작업 중 하나를 설명하겠습니다.
더 나아가기 전에, 모든 Unix류 시스템에서 이 두 가지 중요한 용어를 이해해 봅시다:
- 시스템 부하/CPU 부하 – 리눅스 시스템에서 CPU의 과소 또는 과도한 활용을 측정한 것으로, CPU에서 실행되거나 대기 상태에 있는 프로세스 수입니다.
- 부하 평균 – 특정 시간 동안 계산된 평균 시스템 부하로, 1분, 5분 및 15분 동안의 값을 포함합니다.
리눅스에서는 부하 평균이 기술적으로 실행 중이거나 인터럽트할 수 없는 상태로 태그된 실행 큐의 프로세스의 평균입니다.
참고할 점:
- 리눅스 또는 기타 Unix류 시스템에서 대부분의 경우 사용자에게 어딘가에 부하 평균 값을 표시할 것입니다.
- A downright idle Linux system may have a load average of zero, excluding the idle process.
- 거의 모든 Unix류 시스템은 실행 중이거나 대기 중인 프로세스만을 계산합니다. 그러나 리눅스는 이와 달리 인터럽트할 수 없는 슬립 상태의 프로세스를 포함하여 디스크 I/O 등 다른 시스템 리소스를 기다리는 프로세스를 포함합니다.
리눅스 시스템 부하 평균 모니터링 방법
시스템 부하 평균을 모니터링하는 다양한 방법이 있으며, 운영 시간을 보여주는 uptime을 포함하여 사용자 수와 부하 평균이 있습니다:
$ uptime 07:13:53 up 8 days, 19 min, 1 user, load average: 1.98, 2.15, 2.21
숫자는 왼쪽에서 오른쪽으로 읽으며, 위의 출력은 다음을 의미합니다:
- 지난 1분 동안의 평균 부하는 1.98입니다.
- 지난 5분 동안의 평균 부하는 2.15입니다.
- 지난 15분 동안의 평균 부하는 2.21입니다.
높은 부하 평균은 시스템이 과부하되었음을 나타냅니다; 많은 프로세스가 CPU 시간을 기다리고 있습니다.
다음 섹션에서 CPU 코어 수와 관련하여 이를 자세히 살펴보겠습니다. 또한, 우리는 top 및 glances와 같은 다른 잘 알려진 도구를 사용할 수 있습니다. 이 도구들은 실행 중인 Linux 시스템의 실시간 상태를 표시합니다:
Top Command
$ top
top - 12:51:42 up 2:11, 1 user, load average: 1.22, 1.12, 1.26 Tasks: 243 total, 1 running, 242 sleeping, 0 stopped, 0 zombie %Cpu(s): 17.4 us, 2.9 sy, 0.3 ni, 74.8 id, 4.6 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8069036 total, 388060 free, 4381184 used, 3299792 buff/cache KiB Swap: 3906556 total, 3901876 free, 4680 used. 2807464 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6265 tecmint 20 0 1244348 170680 83616 S 13.3 2.1 6:47.72 Headset 2301 tecmint 9 -11 640332 13344 9932 S 6.7 0.2 2:18.96 pulseaudio 2459 tecmint 20 0 1707692 315628 62992 S 6.7 3.9 6:55.45 cinnamon 2957 tecmint 20 0 2644644 1.035g 137968 S 6.7 13.5 50:11.13 firefox 3208 tecmint 20 0 507060 52136 33152 S 6.7 0.6 0:04.34 gnome-terminal- 3272 tecmint 20 0 1521380 391324 178348 S 6.7 4.8 6:21.01 chrome 6220 tecmint 20 0 1595392 106964 76836 S 6.7 1.3 3:31.94 Headset 1 root 20 0 120056 6204 3964 S 0.0 0.1 0:01.83 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H ....
Glances Tool
$ glances
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic) Uptime: 2:16:06 CPU 16.4% nice: 0.1% LOAD 4-core MEM 60.5% active: 4.90G SWAP 0.1% user: 10.2% irq: 0.0% 1 min: 1.20 total: 7.70G inactive: 2.07G total: 3.73G system: 3.4% iowait: 2.7% 5 min: 1.16 used: 4.66G buffers: 242M used: 4.57M idle: 83.6% steal: 0.0% 15 min: 1.24 free: 3.04G cached: 2.58G free: 3.72G NETWORK Rx/s Tx/s TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view enp1s0 525Kb 31Kb lo 2Kb 2Kb CPU% MEM% VIRT RES PID USER NI S TIME+ IOR/s IOW/s Command wlp2s0 0b 0b 14.6 13.3 2.53G 1.03G 2957 tecmint 0 S 51:49.10 0 40K /usr/lib/firefox/firefox 7.4 2.2 1.16G 176M 6265 tecmint 0 S 7:08.18 0 0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan DISK I/O R/s W/s 4.9 3.9 1.63G 310M 2459 tecmint 0 R 7:12.18 0 0 cinnamon --replace ram0 0 0 4.2 0.2 625M 13.0M 2301 tecmint -11 S 2:29.72 0 0 /usr/bin/pulseaudio --start --log-target=syslog ram1 0 0 4.2 1.3 1.52G 105M 6220 tecmint 0 S 3:42.64 0 0 /usr/lib/Headset/Headset ram10 0 0 2.9 0.8 409M 66.7M 6240 tecmint 0 S 2:40.44 0 0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2 ram11 0 0 2.9 1.8 531M 142M 1690 root 0 S 6:03.79 0 0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8 ram12 0 0 2.6 0.3 79.3M 23.8M 9651 tecmint 0 R 0:00.71 0 0 /usr/bin/python3 /usr/bin/glances ram13 0 0 1.6 4.8 1.45G 382M 3272 tecmint 0 S 6:25.30 0 4K /opt/google/chrome/chrome ...
이러한 도구들이 표시하는 부하 평균은 /proc/loadavg 파일에서 읽을 수 있으며, 아래와 같이 cat 명령어를 사용하여 볼 수 있습니다:
$ cat /proc/loadavg 2.48 1.69 1.42 5/889 10570
그래프 형식으로 부하 평균을 모니터링하려면 다음을 확인하십시오: ttyload – 터미널에서 리눅스 부하 평균의 색상 코딩된 그래프 표시
데스크톱 기기에서는 시스템 부하 평균을 볼 수 있는 그래픽 사용자 인터페이스 도구가 있습니다.
CPU 수에 따른 시스템 평균 부하 이해
시스템 부하나 시스템 성능을 설명할 수 없을 정도로 중앙 처리 장치 코어 수가 성능에 미치는 영향을 밝히지 않고는.
멀티 프로세서 대 멀티 코어
- 멀티 프로세서 – 두 개 이상의 물리적 CPU가 하나의 컴퓨터 시스템에 통합된 것입니다.
- 멀티 코어 프로세서 – 적어도 두 개 이상의 별도 코어(또는 우리가 처리 장치로도 참조할 수 있는 것)가 병렬로 작동하는 단일 물리적 CPU입니다. 이중 코어는 2개의 처리 장치, 쿼드 코어는 4개의 처리 장치 등을 가지고 있음을 의미합니다.
게다가, 병렬 컴퓨팅을 개선하기 위해 인텔에서 처음 소개한 프로세서 기술인 하이퍼 스레딩이 있습니다.
하이퍼 스레딩에서 단일 물리적 CPU 코어는 운영 체제에 두 개의 논리적 CPU 코어로 나타납니다(하지만 실제로는 하나의 물리적 하드웨어 구성 요소가 있음).
단일 CPU 코어는 한 번에 한 가지 작업만 수행할 수 있으므로, 다중 CPU/프로세서, 멀티 코어 CPU 및 하이퍼 스레딩과 같은 기술이 탄생했습니다.
두 개 이상의 CPU가 있으면 여러 프로그램을 동시에 실행할 수 있습니다. 현재의 인텔 CPU는 다중 코어와 하이퍼 스레딩 기술의 조합을 사용합니다.
시스템에서 사용 가능한 처리 장치 수를 찾으려면 다음과 같이 nproc 또는 lscpu 명령어를 사용할 수 있습니다:
$ nproc 4 OR lscpu
다음과 같이 grep 명령어를 사용하여 처리 단위 수를 찾을 수도 있습니다.
$ grep 'model name' /proc/cpuinfo | wc -l 4
이제 시스템 부하를 더 잘 이해하기 위해 몇 가지 가정을 하겠습니다. 아래와 같은 부하 평균이 있다고 가정해 봅시다:
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
단일 코어 시스템의 경우 다음과 같습니다:
- 평균적으로 CPU는 완전히 (100%) 사용되었습니다; CPU에서 프로세스 1개가 실행되었습니다 (1.00) 지난 1분 동안.
- 평균적으로 CPU는 60%가 빌 때; CPU 시간을 기다리는 프로세스가 없었습니다 (0.40) 지난 5분 동안.
- 평균적으로 CPU가 235%로 과부하되었습니다; CPU 시간을 기다리는 프로세스가 2.35개 있었습니다 (3.35) 지난 15분 동안.
이중 코어 시스템의 경우 다음과 같습니다:
- 평균적으로 하나의 CPU가 100% 비웠습니다. 하나의 CPU가 사용되고 있었습니다; CPU 시간을 기다리는 프로세스가 없었습니다 (1.00) 지난 1분 동안.
- 평균적으로 CPU들은 160%로 비웠습니다; CPU 시간을 기다리는 프로세스가 없었습니다 (0.40) 지난 5분 동안.
- 평균적으로 CPU들은 135%로 과부하되었습니다; CPU 시간을 기다리는 프로세스가 1.35개 있었습니다 (3.35) 지난 15분 동안.
아래 링크도 참고하세요:
- 리눅스 성능 모니터링을 위한 20개의 명령 줄 도구 – 파트 1
- 리눅스 성능 모니터링을 위한 13가지 도구 – 파트 2
- 리눅스용 성능 모니터링 및 분석 도구 Perf
- Nmon: 리눅스 시스템 성능 분석 및 모니터링
결론적으로, 시스템 관리자라면 높은 부하 평균에 대해 진정으로 걱정해야 합니다. 높은 부하가 CPU 코어 수보다 높을 때는 CPU에 대한 높은 수요를 나타내며, CPU 코어 수보다 낮은 저 부하 평균은 CPU가 underutilized되고 있다는 것을 알려줍니다
Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/