웹사이트 검색

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


이 기사에서는 중요한 Linux 시스템 관리 작업 중 하나인 시스템/CPU 로드 및 로드 평균과 관련된 성능 모니터링에 대해 설명합니다.

더 나아가기 전에 모든 Unix 계열 시스템에서 다음 두 가지 중요한 문구를 이해해 보겠습니다.

  • 시스템 로드/CPU 로드 – Linux 시스템의 CPU 사용량 초과 또는 미달 사용량을 측정한 것입니다. CPU에 의해 실행 중이거나 대기 상태에 있는 프로세스의 수입니다.
  • 평균 부하 – 1분, 5분, 15분의 특정 기간 동안 계산된 평균 시스템 부하입니다.

Linux에서 로드 평균은 기술적으로 실행 중이거나 중단할 수 없는 것으로 태그가 지정된 (커널) 실행 대기열에 있는 프로세스의 실행 평균으로 간주됩니다.

참고 사항:

  • Linux 또는 기타 Unix 계열 시스템으로 구동되는 대부분의 시스템은 아니지만 모든 시스템은 사용자의 어딘가에 로드 평균 값을 표시할 수 있습니다.
  • 완전한 유휴 Linux 시스템은 유휴 프로세스를 제외하면 로드 평균이 0일 수 있습니다.
  • 거의 모든 Unix 계열 시스템은 실행 중이거나 대기 중인 상태의 프로세스만 계산합니다. 그러나 Linux에서는 그렇지 않습니다. Linux에는 중단할 수 없는 절전 상태의 프로세스가 포함되어 있습니다. 디스크 I/O 등과 같은 다른 시스템 리소스를 기다리는 것.

Linux 시스템 로드 평균을 모니터링하는 방법

시스템이 실행된 기간을 보여주는 가동 시간, 사용자 수 및 로드 평균을 포함하여 시스템 로드 평균을 모니터링하는 방법에는 여러 가지가 있습니다.

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 코어 수와 관련하여 다음 섹션에서 이에 대해 알아보겠습니다. 또한 실행 중인 Linux 시스템의 실시간 상태를 표시하는 top 및 Glances와 같은 잘 알려진 다른 도구와 기타 여러 도구를 사용할 수도 있습니다.

최고 사령부

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
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 – 터미널에 Linux 로드 평균을 색상으로 구분한 그래프 표시

데스크톱 컴퓨터에는 시스템 로드 평균을 보는 데 사용할 수 있는 그래픽 사용자 인터페이스 도구가 있습니다.

CPU 수와 관련된 시스템 평균 부하 이해

CPU 코어 수가 성능에 미치는 영향을 밝히지 않고는 시스템 로드나 시스템 성능을 설명할 수 없습니다.

멀티프로세서 vs 멀티코어

  • 멀티 프로세서 – 두 개 이상의 물리적 CPU가 단일 컴퓨터 시스템에 통합되어 있는 곳입니다.
  • 멀티 코어 프로세서 – 병렬로 작동하는 최소 2개 이상의 별도 코어(또는 처리 장치라고도 함)가 있는 단일 물리적 CPU입니다. 즉, 듀얼 코어에는 2개의 처리 장치가 있고, 쿼드 코어에는 4개의 처리 장치가 있습니다.

또한 하이퍼 스레딩이라고 하는 병렬 컴퓨팅을 개선하기 위해 Intel이 처음 도입한 프로세서 기술도 있습니다.

하이퍼 스레딩에서는 단일 물리적 CPU 코어가 운영 체제에 두 개의 논리적 CPU 코어로 표시됩니다(그러나 실제로는 하나의 물리적 하드웨어 구성 요소가 있습니다).

단일 CPU 코어는 한 번에 하나의 작업만 수행할 수 있으므로 다중 CPU/프로세서, 다중 코어 CPU 및 하이퍼스레딩과 같은 기술이 구현되었습니다.

하나 이상의 CPU를 사용하면 여러 프로그램을 동시에 실행할 수 있습니다. 현재 Intel 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%) 활용되었습니다. 지난 1분 동안 1개의 프로세스가 CPU(1.00)에서 실행되었습니다.
  • CPU는 평균 60% 정도 유휴 상태였습니다. 지난 5분 동안 CPU 시간(0.40)을 기다리는 프로세스가 없었습니다.
  • CPU는 평균 235% 과부하되었습니다. 지난 15분 동안 2.35개의 프로세스가 CPU 시간(3.35)을 기다리고 있었습니다.
듀얼 코어 시스템에서 이는 다음을 의미합니다.
  • 하나의 CPU는 평균적으로 100% 유휴 상태였으며 하나의 CPU가 사용되고 있었습니다. 지난 1분 동안 CPU 시간(1.00)을 기다리는 프로세스가 없었습니다.
  • CPU는 평균 160% 유휴 상태였습니다. CPU 시간을 기다리는 프로세스가 없었습니다. (0.40) 지난 5분 동안.
  • CPU는 평균 135% 과부하되었습니다. 1.35개의 프로세스가 CPU 시간을 기다리고 있었습니다. (3.35) 지난 15분 동안.

당신은 또한 다음을 좋아할 수도 있습니다:

  1. Linux 성능을 모니터링하는 20가지 명령줄 도구 - 1부
  2. 13 Linux 성능 모니터링 도구 - 2부
  3. Perf - Linux용 성능 모니터링 및 분석 도구
  4. Nmon: Linux 시스템 성능 분석 및 모니터링

결론적으로, 시스템 관리자라면 평균 로드가 높아 걱정할 필요가 없습니다. CPU 코어 수보다 높으면 CPU에 대한 수요가 높다는 것을 의미하고, CPU 코어 수보다 낮은 로드 평균은 CPU 활용도가 낮다는 것을 나타냅니다.