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가 몇 개냐에 따라 전혀 다른 의미 일 수 있다.
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