uptime의 load average 부하 분석

Load Average를 이용한 시스템 부하 분석 (uptime)

Table of Contents


이 문서를 읽기 전

이 문서를 읽기 전에 프로세스의 상태를 이해하고 있어야 하기에 ‘프로세스 상태와 다이어그램을 학습하고 오는 것을 권장한다.


01. Load Average의 정의

man proc을 통해 loadavg에서 정의하는 내용

프로세스의 상태의 상태 중 R과 D 상태에 있는 프로세스 개수의 1분, 5분, 15분만다의 평균 값이다

즉, 얼마나 많은 프로세스가 실행 중 혹인 실행 대기 중이냐를 의미하는 수치이다.

Load Average가 높다면 많은 수의 프로세스가 실행 중이거나 I/O 등을 처리하기 위한 대기 상태에 있다는 것이며, 낮다면 적은 수의 프로세스가 실행 중이거나 대기 중이라는 의미이다. 

프로세스의 수를 세는 것이기 때문에 시스템에 있는 CPU Core수가 몇 개냐에 따라 각각의 값은 의미가 상대적이다.

man 페이지에 나오는 아래 내용을 확인해보자.

### loadavg 파일 확인 ###
$ sudo cat /proc/loadavg
3.50 2.30 1.38 6/12252 2890428
 
### man 페이지 설명 ###
$ man proc
.........
       /proc/loadavg
              The  first  three  fields  in this file are load average figures giving the number of jobs in the run queue (state R) or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes.
              They are the same as the load average numbers given by uptime(1) and other programs.  The fourth field consists of two numbers separated by a slash (/).  The first of these is the  number
              of  currently  runnable  kernel  scheduling  entities (processes, threads).  The value after the slash is the number of kernel scheduling entities that currently exist on the system.  The
              fifth field is the PID of the process that was most recently created on the system.
........
  필드는 1, 5  15 동안 평균화된 실행 대기 중인 작업 수를 나타냅니다. 실행 대기 중인 작업이란 상태 R(실행 중인 작업)이나 상태 D(디스크 입출력을 대기 중인 작업) 있는 작업의 수를 의미합니다.  수치는 uptime(1) 등의 프로그램에서 제공되는 로드 평균 숫자와 동일합니다.
 
 번째 필드는 슬래시(/) 구분된  숫자로 구성됩니다.  번째 숫자는 현재 실행 가능한 커널 스케줄링 엔터티(프로세스, 스레드) 수입니다. 슬래시 뒤의 값은 현재 시스템에 존재하는 커널 스케줄링 엔터티의 수입니다.
 
다섯 번째 필드는 시스템에서 가장 최근에 생성된 프로세스의 PID입니다.

Core 수에 따른 처리 예시

아래 그림에서 CPU Core가 하나인 경우와 두 개인 경우 둘 다 Load Average 값은 2의 근사값이 나오지만 그 의미는 다르다.

[ 첫 번째 경우 ]

하나의 Run Queue에 두 개의 프로세스가 있으며 이 경우 한 번에 하나만 실행이 되기 때문에 (A가 실행되거나 B가 실행되거나) 나머지 하나의 프로세스는 대기 상태에 있을 수 밖에 없다.

이는 현재 시스템이 처리할 수 있는 프로세스보다 조금 더 많은 프로세스가 있다는 뜻이다.

[ 두 번째 경우 ]

첫 번째와 똑같이 Run Queue에 두 개의 프로세스가 있지만 서로 다른 CPU에 있기 때문에 A와 B는 동시에 실행될 수 있다.

현재 시스템에 처리 가능한 만큼의 프로세스가 있는 것이다.

결과적으로 같은 Load Average라고 해도 CPU Core가 몇 개냐에 따라 전혀 다른 의미 일 수 있다.

Core 수에 따른 작업 처리 능력

02. CPU Bound vs I/O Bound

  • CPU와 I/O 자원에 따른 시스템 부하의 차이

Load Average의 한계

Load average는 상대적인 값이 아니고 계산하는 순간을 기준으로 존재하는 R(nr_running) 상태의 프로세스 개수와 D(nr_uninterruptible) 상태의 프로세스 개수를 합한 일정 시간 동안의 평균값이다.

Load average가 높다는 것은 단순히 CPU를 사용하려나는 프로세스가 많다는 것을 의미하는 것이 아니고, I/O에 병목이 생겨서 I/O 작업을 대기하는 프로세스가 많을 수도 있다는 의미이다.

때문에 Load average 값 만으로는 시스템에 어떤 상태의 부하가 일어나는지 확인하기 어려우며, 다른 지표와 함께 분석하는 작업이 필요하다

부하를 일으키는 프로세스

크게 두 가지 종류로 나눌 수 있다.

  • nr_running으로 표현되는, CPU 자원을 많이 필요로 하는 CPU Bound 프로세스
  • nr_uninterruptible로 표현되는, 많은 I/O 자원을 필요로 하는 I/O Bound 프로세스

파이썬으로 테스트 프로그램 만들어서 확인하기

1. 무한 루프를 돌면서 수치 연산을 하는 파이썬 스크립트

#!/usr/bin/python
 
test = 0
while True:
        test = test+1

결과

[root@rocky86_virtualbox ~]# uptime
 19:46:16 up  1:49,  2 users,  load average: 0.23, 0.15, 0.05
[root@rocky86_virtualbox ~]# uptime
 19:46:18 up  1:49,  2 users,  load average: 0.30, 0.16, 0.05
[root@rocky86_virtualbox ~]# uptime
 19:46:22 up  1:50,  2 users,  load average: 0.35, 0.18, 0.06
[root@rocky86_virtualbox ~]# uptime
 19:46:28 up  1:50,  2 users,  load average: 0.49, 0.21, 0.07
[root@rocky86_virtualbox ~]# uptime
 19:46:35 up  1:50,  2 users,  load average: 0.53, 0.22, 0.08
[root@rocky86_virtualbox ~]# uptime
 19:46:46 up  1:50,  2 users,  load average: 0.60, 0.25, 0.09

2. 무한 루프를 돌면서 I/O를 발생 시키는 파이썬 스크립트

#!/usr/local/python
 
while True:
        f = open("./io_test.txt", 'w')
        f.write("TEST")
        f.close()

결과

[root@rocky86_virtualbox ~]# uptime
 19:59:08 up  2:02,  2 users,  load average: 0.08, 0.05, 0.06
[root@rocky86_virtualbox ~]# uptime
 19:59:17 up  2:02,  2 users,  load average: 0.15, 0.07, 0.06
[root@rocky86_virtualbox ~]# uptime
 19:59:42 up  2:03,  2 users,  load average: 0.44, 0.14, 0.09
[root@rocky86_virtualbox ~]# uptime
 19:59:50 up  2:03,  2 users,  load average: 0.53, 0.17, 0.10
[root@rocky86_virtualbox ~]# uptime
 20:00:01 up  2:03,  2 users,  load average: 0.68, 0.21, 0.12

둘 다 비슷한 수준의 Load Average를 보여주고 있지만 사실 일으키고 있는 부하는 전혀 다른 부하다

  • 첫 번째는 CPU 리소스를 너무 많이 사용해서 생기는 부하
  • 두 번째는 I/O 리소스를 너무 많이 사용해서 생기는 부하

즉, Load Average가 높다고 해서 단순히 CPU가 더 많은 장비를 사용하는 것으로 해결할 수 없다는 의미이다.
또한 비슷한 Load average라 하더라도 부하를 일으키는 원인이 무엇이냐에 따라 시스템의 반응 속도가 전혀 다를 수 있다.


vmstat으로 부하의 정체 확인 하기

위에서 사용한 스크립트를 돌린 후 vmstat의 r과 d를 확인하자

  • r – 실행되기를 기다리거나 현재 실행되고 있는 프로세스의 개수 (nr_running)
  • b – I/O를 위해 대기열에 있는 프로세스의 개수 (nr_uninterruptible)

첫 번째 수치 연산을 하는 프로그램은 CPU의 us를 보면 매우 높게 올라간 것을 알 수 있다.

[root@rocky86_virtualbox ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  0      0 208548   4204 465536    0    0    56   259  267  548  1  2 97  0  0
 1  0      0 208428   4204 465536    0    0     0     0 1121  237 99  1  0  0  0
 1  0      0 208428   4204 465536    0    0     0     0 1157  237 97  3  0  0  0
 1  0      0 208428   4204 465536    0    0     0     0 1156  238 99  1  0  0  0
 1  0      0 208428   4204 465536    0    0     0     0 1134  225 99  1  0  0  0
 3  0      0 208428   4204 465536    0    0     0     0 1153  230 98  2  0  0  0
 1  0      0 208428   4204 465536    0    0     0     0 1126  236 98  2  0  0  0
 2  0      0 208428   4204 465536    0    0     0     0 1131  229 99  1  0  0  0

두 번째 I/O를 일으키는 프로그램은 b 상태가 올라가고 CPU의 sy가 높이 올라가고 wa를 조금 올리는 것을 알 수 있다.

  • 원래 I/O 부하를 일으키는 프로세스는 Wait CPU만 엄청 사용하는 경우가 많다. 그러나 여기서 Sys가 더 높이 올라가는 이유는 프로그램을 보면 Open, Write, Close 작업으로 시스템 콜이 많이 발생하여서 이다
[root@rocky86_virtualbox ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  1      0 208480   4204 465540    0    0    57   233  258  514  1  2 97  0  0
 1  1      0 208360   4204 465540    0    0     0 19912 6268 25087 12 59 24  5  0
 0  0      0 208360   4204 465540    0    0     0 20214 6352 25410 12 60 23  6  0
 1  1      0 208360   4204 465540    0    0     0 18875 5937 23868 15 56 24  5  0
 1  1      0 208360   4204 465540    0    0     0 20183 6317 25297 13 59 23  5  0
 0  0      0 208360   4204 465540    0    0     0 19704 6204 24859 14 58 23  5  0
 1  1      0 208360   4204 465540    0    0     0 18846 5963 23862 13 58 24  6  0
 1  0      0 208360   4204 465540    0    0     0 19948 6230 25121 12 60 24  5  0
 1  1      0 208360   4204 465540    0    0     0 19909 6212 24987 13 60 22  5  0

사실 I/O가 일으키는 Load Average 값이 1이나 2정도는 낮은 편에 속한다고 해도 CPU가 1개 혹은 2개인 경우에는 높은 수준의 값이다.

그러나 두 번째의 경우 지속적으로 I/O를 일으키는 프로세스가 시스템에 존재한다는 것을 의미하며, 의도하지 않은 불필요한 프로세스일 가능성이 있다

vmstat보다 더 상세히 보는 법 – /proc/sched_debug

/proc/sched_debug에서는 각 CPU의 Run Queue 상태와 스케줄링 정보도 살펴볼 수 있다.

그리고 D 상태 혹은 vmstat에서의 b 열이 높다면 I/O 처리 과정에 문제가 있지 않은지 살펴봐야한다.

[root@rocky86_virtualbox ~]# cat /proc/sched_debug
Sched Debug Version: v0.11, 4.18.0-425.3.1.el8.x86_64 #1
ktime                                   : 9165650.451895
sched_clk                               : 9166212.130746
cpu_clk                                 : 9165645.224635
jiffies                                 : 4303832946
sched_clock_stable()                    : 1
 
sysctl_sched
  .sysctl_sched_latency                    : 6.000000
  .sysctl_sched_min_granularity            : 10.000000
  .sysctl_sched_wakeup_granularity         : 15.000000
  .sysctl_sched_child_runs_first           : 0
  .sysctl_sched_features                   : 16723515
  .sysctl_sched_tunable_scaling            : 1 (logaritmic)
 
cpu#0, 1799.999 MHz
  .nr_running                    : 4         <----------- R 상태의 프로세스
  .nr_switches                   : 4684990
  .nr_uninterruptible            : 0         <----------- D 상태의 프로세스
  .next_balance                  : 4294.667296
  .curr->pid                     : 52314
  .clock                         : 9165645.799719
  .clock_task                    : 9108375.249881
  .avg_idle                      : 1000000
  .max_idle_balance_cost         : 500000
 
cfs_rq[0]:/
  .exec_clock                    : 0.000000
  .MIN_vruntime                  : 1146891.031716
  .min_vruntime                  : 1146894.031716
  .max_vruntime                  : 1146891.031716
  .spread                        : 0.000000
  .spread0                       : 0.000000
  .nr_spread_over                : 0
  .nr_running                    : 4
  .load                          : 4194304
  .load_avg                      : 2041
  .runnable_avg                  : 952
  .util_avg                      : 726
  .util_est_enqueued             : 41
  .removed.load_avg              : 0
  .removed.util_avg              : 0
  .removed.runnable_avg          : 0
  .tg_load_avg_contrib           : 0
  .tg_load_avg                   : 0
  .throttled                     : 0
  .throttle_count                : 0
 
rt_rq[0]:/
  .rt_nr_running                 : 0
  .rt_nr_migratory               : 0
  .rt_throttled                  : 0
  .rt_time                       : 0.022264
  .rt_runtime                    : 950.000000
 
dl_rq[0]:
  .dl_nr_running                 : 0
  .dl_nr_migratory               : 0
  .dl_bw->bw                     : 996147
  .dl_bw->total_bw               : 0
 
runnable tasks:    <-------------- R의 개수를 보면 nr_running의 Run Queue에 들어가 있는 실행/실행 대기 중인 프로세스를 확인할  있다.
 S            task   PID         tree-key  switches  prio     wait-time             sum-exec        sum-sleep
-------------------------------------------------------------------------------------------------------------
 S         systemd     1   1143172.965233      2865   120         0.000000      1406.127611         0.000000 0 0 /
 S        kthreadd     2   1144408.239074       225   120         0.000000         7.494832         0.000000 0 0 /
 I          rcu_gp     3       106.720825         2   100         0.000000         0.004055         0.000000 0 0 /
 I      rcu_par_gp     4       108.221275         2   100         0.000000         0.001792         0.000000 0 0 /
 I    kworker/0:0H     6       265.206991         6   100         0.000000         0.015660         0.000000 0 0 /
 I    mm_percpu_wq     9       114.486306         2   100         0.000000         0.001641         0.000000 0 0 /
 S rcu_tasks_rude_    10       116.487217         2   120         0.000000         0.001487         0.000000 0 0 /
 S rcu_tasks_trace    11       118.486856         2   120         0.000000         0.000544         0.000000 0 0 /
 S     ksoftirqd/0    12   1146880.999753     31289   120         0.000000       189.388299         0.000000 0 0 /
 R       rcu_sched    13   1146891.031716    305301   120         0.000000      1081.553309         0.000000 0 0 /
 S     migration/0    14       124.486853         5     0         0.000000         0.003805         0.000000 0 0 /
 S      watchdog/0    15         0.000000      2294     0         0.000000         5.533090         0.000000 0 0 /
 S         cpuhp/0    16      3400.378305        15   120         0.000000         0.037140         0.000000 0 0 /
 S       kdevtmpfs    18      3776.980178       139   120         0.000000         0.641123         0.000000 0 0 /
 I           netns    19       137.857785         2   100         0.000000         0.005106         0.000000 0 0 /
 S         kauditd    20   1121151.476701       229   120         0.000000         2.811192         0.000000 0 0 /
 S      khungtaskd    21   1142426.963356        76   120         0.000000         1.720002         0.000000 0 0 /
 S      oom_reaper    22       142.361002         2   120         0.000000         0.001546         0.000000 0 0 /
 I       writeback    23       144.361251         2   100         0.000000         0.002237         0.000000 0 0 /
 S      kcompactd0    24       146.362837         2   120         0.000000         0.002246         0.000000 0 0 /
 S            ksmd    25       148.366872         2   125         0.000000         0.002833         0.000000 0 0 /
 S      khugepaged    26   1146225.064382      1687   139         0.000000        48.527168         0.000000 0 0 /
 I          crypto    27       152.364044         2   100         0.000000         0.001826         0.000000 0 0 /
 I     kintegrityd    28       154.364598         2   100         0.000000         0.001736         0.000000 0 0 /
 I         kblockd    29       156.365168         2   100         0.000000         0.001681         0.000000 0 0 /
 I  blkcg_punt_bio    30       158.365200         2   100         0.000000         0.000625         0.000000 0 0 /
 I      tpm_dev_wq    31       222.638834         2   100         0.000000         0.000000         0.000000 0 0 /
 I              md    32       224.140736         2   100         0.000000         0.003794         0.000000 0 0 /
 I     edac-poller    33       225.644968         2   100         0.000000         0.008955         0.000000 0 0 /
 S       watchdogd    34         0.000000         2     0         0.000000         0.000000         0.000000 0 0 /
 I    kworker/0:1H    35   1146737.536206    517239   100         0.000000      8898.134553         0.000000 0 0 /
 R    kworker/u2:1    37   1146891.031716      5243   120         0.000000       133.237271         0.000000 0 0 /
 S         kswapd0    59      1009.192908         3   120         0.000000         0.000962         0.000000 0 0 /
 I        kthrotld   161      1015.712711         2   100         0.000000         0.002962         0.000000 0 0 /
 I acpi_thermal_pm   162      1017.212083         2   100         0.000000         0.001068         0.000000 0 0 /
 I    kmpath_rdacd   163      1018.412839         2   100         0.000000         0.001650         0.000000 0 0 /
 I          kaluad   164      1020.415614         2   100         0.000000         0.006032         0.000000 0 0 /
 I   ipv6_addrconf   165      1031.777864         2   100         0.000000         0.000000         0.000000 0 0 /
 I           kstrp   167      1032.977862         2   100         0.000000         0.000000         0.000000 0 0 /
 I         ata_sff   442      2075.362647         2   100         0.000000         0.008945         0.000000 0 0 /
 S       scsi_eh_0   445      2159.100956         4   120         0.000000        11.931538         0.000000 0 0 /
 I      scsi_tmf_0   447      2078.792897         2   100         0.000000         0.006795         0.000000 0 0 /
 S       scsi_eh_1   448      3379.055430        46   120         0.000000         3.231781         0.000000 0 0 /
 I      scsi_tmf_1   450      2080.409351         2   100         0.000000         0.007062         0.000000 0 0 /
 S       scsi_eh_2   453      2222.170915        22   120         0.000000         6.205298         0.000000 0 0 /
 I    kworker/u2:3   454   1080901.619995      2416   120         0.000000        51.655048         0.000000 0 0 /
 I      scsi_tmf_2   456      2082.739808         2   100         0.000000         0.006109         0.000000 0 0 /
 I  kdmflush/253:0   528      2556.153754         2   100         0.000000         0.003150         0.000000 0 0 /
 I  kdmflush/253:1   537      2588.239650         2   100         0.000000         0.002708         0.000000 0 0 /
 I        xfsalloc   562      2738.417233         2   100         0.000000         0.003985         0.000000 0 0 /
 I   xfs_mru_cache   563      2739.618848         2   100         0.000000         0.003344         0.000000 0 0 /
 I    xfs-buf/dm-0   564      2741.119480         2   100         0.000000         0.001732         0.000000 0 0 /
 I   xfs-conv/dm-0   565      2743.120138         2   100         0.000000         0.001682         0.000000 0 0 /
 I    xfs-cil/dm-0   566      2745.120661         2   100         0.000000         0.001622         0.000000 0 0 /
 I xfs-reclaim/dm-   567      2747.121485         2   100         0.000000         0.001993         0.000000 0 0 /
 I     xfs-gc/dm-0   568      2749.122555         2   100         0.000000         0.002609         0.000000 0 0 /
 I    xfs-log/dm-0   570      2752.897928         2   100         0.000000         0.007088         0.000000 0 0 /
 S    xfsaild/dm-0   571   1146283.381438     38360   120         0.000000       171.096186         0.000000 0 0 /
 S systemd-journal   655   1143172.896976       628   120         0.000000       112.397801         0.000000 0 0 /
 S   systemd-udevd   684   1139519.537886      1223   120         0.000000       127.046651         0.000000 0 0 /
 I    xfs-buf/sda1   686      3284.658825         2   100         0.000000         0.004157         0.000000 0 0 /
 I   xfs-conv/sda1   687      3285.516179         2   100         0.000000         0.002452         0.000000 0 0 /
 I    xfs-cil/sda1   688      3286.518457         2   100         0.000000         0.003953         0.000000 0 0 /
 I xfs-reclaim/sda   689      3287.719301         2   100         0.000000         0.002717         0.000000 0 0 /
 I     xfs-gc/sda1   690      3288.922913         2   100         0.000000         0.005829         0.000000 0 0 /
 I    xfs-log/sda1   692      3291.387486         2   100         0.000000         0.006668         0.000000 0 0 /
 S    xfsaild/sda1   693      3292.588704         2   120         0.000000         0.002034         0.000000 0 0 /
 S   irq/18-vmwgfx   757         0.000720     43571    49         0.000000       232.916497         0.000000 0 0 /
 S     card0-crtc0   758         0.000000         2    49         0.000000         0.004194         0.000000 0 0 /
 S     card0-crtc1   759         0.000000         2    49         0.000000         0.005918         0.000000 0 0 /
 S     card0-crtc2   760         0.000000         2    49         0.000000         0.005382         0.000000 0 0 /
 S     card0-crtc3   761         0.000000         2    49         0.000000         0.005690         0.000000 0 0 /
 S     card0-crtc4   762         0.000000         2    49         0.000000         0.004657         0.000000 0 0 /
 S     card0-crtc5   763         0.000000         2    49         0.000000         0.007606         0.000000 0 0 /
 S     card0-crtc6   764         0.000000         2    49         0.000000         0.008945         0.000000 0 0 /
 S     card0-crtc7   765         0.000000         2    49         0.000000         0.005700         0.000000 0 0 /
 S          auditd   766   1146799.124357       380   116         0.000000        24.366446         0.000000 0 0 /
 S          auditd   767    947506.425577        21   116         0.000000         0.452370         0.000000 0 0 /
 S          auditd   769   1121151.475443       226   116         0.000000         3.788999         0.000000 0 0 /
 S      sedispatch   768   1121536.167931       305   116         0.000000        10.409858         0.000000 0 0 /
 S          smartd   792   1137039.470514       119   120         0.000000        48.585204         0.000000 0 0 /
 S          mcelog   795      3514.901014        14   120         0.000000         2.473878         0.000000 0 0 /
 S         polkitd   796   1120051.277646       275   120         0.000000        67.926845         0.000000 0 0 /
 S           gmain   808      3546.323091         1   120         0.000000         0.024761         0.000000 0 0 /
 S           gdbus   811   1120051.372115        79   120         0.000000         8.202610         0.000000 0 0 /
 S       JS Helper   815      3567.979150         2   120         0.000000         0.029448         0.000000 0 0 /
 S       JS Helper   816      3567.933976         2   120         0.000000         0.127131         0.000000 0 0 /
 S         polkitd   827      6862.995547         8   120         0.000000         0.098114         0.000000 0 0 /
 S     dbus-daemon   801   1137040.040646       614   120         0.000000       118.129055         0.000000 0 0 /
 S  NetworkManager   803   1118120.840687       786   120         0.000000        68.030819         0.000000 0 0 /
 S           gmain   814   1146655.149460      2295   120         0.000000        94.433772         0.000000 0 0 /
 S           gdbus   817   1118120.885929       562   120         0.000000        11.875247         0.000000 0 0 /
 S            sssd   804   1145037.668929       596   120         0.000000        45.952819         0.000000 0 0 /
 S            lsmd   805   1146593.439468       750   120         0.000000        23.103814         0.000000 0 0 /
 S           tuned   819   1146820.342978    186227   120         0.000000      7788.706797         0.000000 0 0 /
 S           tuned  1187   1146820.417465    228582   120         0.000000      9499.231425         0.000000 0 0 /
 S           tuned  1194      4197.686675         6   120         0.000000         0.296065         0.000000 0 0 /
 R           tuned  1195   1146891.031716    114466   120         0.000000     19756.715854         0.000000 0 0 /
 S           tuned  1197      4226.432066         1   120         0.000000         0.778713         0.000000 0 0 /
 S            sshd   820    708123.730483        54   120         0.000000        15.273640         0.000000 0 0 /
 S         sssd_be   822   1146344.873843      2066   120         0.000000       147.307803         0.000000 0 0 /
 S        sssd_nss   828   1146344.896705      2470   120         0.000000       187.568277         0.000000 0 0 /
 S        rsyslogd   842   1137162.425347        62   120         0.000000         7.888420         0.000000 0 0 /
 S    in:imjournal   845   1146820.146922     11547   120         0.000000       343.331901         0.000000 0 0 /
 S   rs:main Q:Reg   846   1121165.141220      1369   120         0.000000        10.821987         0.000000 0 0 /
 S  systemd-logind   848   1143172.949766       267   120         0.000000        62.157281         0.000000 0 0 /
 S          agetty   854      6555.847806        11   120         0.000000         3.190181         0.000000 0 0 /
 S           crond   856   1146469.116849       192   120         0.000000        14.681632         0.000000 0 0 /
 S             atd   857    787110.875431        23   120         0.000000         3.432577         0.000000 0 0 /
 S            sshd  1392   1083145.916013       180   120         0.000000        36.351729         0.000000 0 0 /
 S         systemd  1395   1121161.580056        81   120         0.000000        51.331226         0.000000 0 0 /
 S        (sd-pam)  1399      7861.656818         1   120         0.000000         0.169051         0.000000 0 0 /
 S            sshd  1405      8487.557563        48   120         0.000000        33.083053         0.000000 0 0 /
 S            sshd  1406   1083145.976106     58859   120         0.000000      5484.809836         0.000000 0 0 /
 S            bash  1408   1082868.099634       435   120         0.000000        94.760447         0.000000 0 0 /
 S            sshd  1455      8774.766543        21   120         0.000000         2.596685         0.000000 0 0 /
 S     sftp-server  1456      8775.472000        27   120         0.000000         9.840346         0.000000 0 0 /
 S            sshd 36465   1083156.056986        96   120         0.000000        26.165434         0.000000 0 0 /
 S            sshd 36505   1146881.151638      9513   120         0.000000       894.563863         0.000000 0 0 /
 S            sshd 36506    708157.280890        44   120         0.000000        29.786149         0.000000 0 0 /
 S            bash 36508   1146881.416674       210   120         0.000000        74.595960         0.000000 0 0 /
 S            sshd 36526    709978.433536        21   120         0.000000         2.329967         0.000000 0 0 /
 S     sftp-server 36531    709978.385285        22   120         0.000000         9.033315         0.000000 0 0 /
 I     kworker/0:3 43257   1146820.425070     25346   120         0.000000       642.051069         0.000000 0 0 /
 I     kworker/0:2 45409   1144418.239734     13817   120         0.000000       272.068152         0.000000 0 0 /
 S            bash 48295   1146870.996367      4002   120         0.000000      1220.068987         0.000000 0 0 /
 I     kworker/0:1 49926   1144418.215054      3553   120         0.000000       110.462791         0.000000 0 0 /
 I     kworker/0:0 52075   1146737.580799        23   120         0.000000         0.984959         0.000000 0 0 /
 S           sleep 52313   1146884.365066         1   120         0.000000         0.579732         0.000000 0 0 /
>R             cat 52314   1146895.314932         0   120         0.000000         1.318191         0.000000 0 0 /

03. Load Average가 시스템에 끼치는 영향

같은 수준의 Load Average라면 ?

부하를 일으키는 원인이 무엇이냐에 따라서 같을 수도 다를 수도 있다.
같은 수치의 Load Average라고 해도 그 원인에 따라 영향이 다를 수 있다는 뜻이다.


이전에 사용한 부하 파이썬 스크립트로 테스트

top를 보면 파이썬 스크립트들이 CPU를 차지하고 있고 요청을 처리하기 위한 프로세스들이 중간 중간에 끼어들어서 실행되고 있는 것을 볼 수 있다.

따라서 방해하는 프로세스가 없는 상태보다 다른 서비스들의 응답 속도가 느려질 수 밖에 없는 상황이다.

결과를 보면 I/O를 일으키는 파이썬 스크립트들은 D 상태에 빠져있는 것을 볼 수 있다.

즉, 우리가 돌리고 있는 프로세스가 어떤 시스템 자원을 많이 쓰느냐에 따라서 부하가 시스템에 미치는 영향이 다르다는 뜻이다.

[root@rocky86_virtualbox ~]# top -b -n 1 | head -n 20
top - 20:16:24 up  2:20,  2 users,  load average: 3.18, 1.26, 0.55
Tasks: 119 total,   6 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu(s): 64.7 us, 35.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :    804.7 total,    195.9 free,    149.5 used,    459.3 buff/cache
MiB Swap:    820.0 total,    820.0 free,      0.0 used.    524.2 avail Mem
 
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  47235 root      20   0  241772   8892   5864 R  52.9   1.1   1:10.63 python3
  47750 root      20   0  241772   9020   5988 R  17.6   1.1   0:00.41 python3
  47248 root      20   0  241772   8840   5812 D  11.8   1.1   0:01.85 python3
     35 root       0 -20       0      0      0 R   5.9   0.0   0:08.50 kworker/0:1H-kblockd
      1 root      20   0  172364  10632   8184 S   0.0   1.3   0:01.38 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
     10 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_rude_
     11 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_trace
     12 root      20   0       0      0      0 S   0.0   0.0   0:00.18 ksoftirqd/0

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다