Linux 로드 평균 이해 및 Linux 성능 모니터링

이 문서에서는 시스템/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 코어 수와 관련하여 이를 자세히 살펴보겠습니다. 또한, 우리는 topglances와 같은 다른 잘 알려진 도구를 사용할 수 있습니다. 이 도구들은 실행 중인 Linux 시스템의 실시간 상태를 표시합니다:

Top Command

$ top
Display Running Linux Processes
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
Glances – Linux System Monitoring Tool
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분 동안.

아래 링크도 참고하세요:

  1. 리눅스 성능 모니터링을 위한 20개의 명령 줄 도구 – 파트 1
  2. 리눅스 성능 모니터링을 위한 13가지 도구 – 파트 2
  3. 리눅스용 성능 모니터링 및 분석 도구 Perf
  4. Nmon: 리눅스 시스템 성능 분석 및 모니터링

결론적으로, 시스템 관리자라면 높은 부하 평균에 대해 진정으로 걱정해야 합니다. 높은 부하가 CPU 코어 수보다 높을 때는 CPU에 대한 높은 수요를 나타내며, CPU 코어 수보다 낮은 저 부하 평균은 CPU가 underutilized되고 있다는 것을 알려줍니다

Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/