Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

12 Commits
ย 
ย 

Repository files navigation

Average Load In Linux

๐Ÿƒ๐Ÿƒโ€โ™‚๏ธTeam

๋ฐ•์ •์ฃผ ๋ฐ•์›…๋นˆ
@gorapang @Ungbbi



๐Ÿค“ ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ

์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ CPU ๋ฐ I/O ๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ํ•™์Šต๊ณผ ํ‰๊ท  ๋ถ€ํ•˜๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ฉฐ, ํ”„๋กœ์„ธ์Šค๋ณ„ CPU ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ I/O ์‚ฌ์šฉ๋Ÿ‰์„ ๋ถ„์„ํ•˜๋Š” ๋Šฅ๋ ฅ์„ ํ†ตํ•ด ์ถ”ํ›„ ์„œ๋ฒ„ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

  • ํšจ์œจ์ ์ธ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ: CPU ๋ฐ I/O์— ๋ถ€ํ•˜๋ฅผ ๊ฐ€ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ํ•œ๊ณ„๋ฅผ ํŒŒ์•… ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง: ํ‰๊ท  ๋ถ€ํ•˜์™€ ํ”„๋กœ์„ธ์Šค๋ณ„ ์ž์› ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•˜์—ฌ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•œ๋‹ค.

  • ์„œ๋ฒ„ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ: ์‹œ์Šคํ…œ์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ์ด๋ฅผ ํ•ด๊ฒฐํ•จ์œผ๋กœ์จ ์„œ๋ฒ„์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ” 01. Introduction

์‹œ์Šคํ…œ์ด ๋А๋ ค์กŒ๋‹ค๊ณ  ๋А๋‚„ ๋•Œ, ๊ฐ€์žฅ ๋จผ์ € ํ•˜๋Š”์ผ์€ ๋ณดํ†ต top์ด๋‚˜ uptime ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด ์‹œ์Šคํ…œ์˜ ๋ถ€ํ•˜(load)๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

$ uptime
02:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.88

์œ„ uptime๋ช…๋ น์–ด์˜ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํ•ด์„ํ•ด๋ณด๋ฉด

  • 02:34:03 : ํ˜„์žฌ ์‹œ๊ฐ„
  • up 2 days, 20:14 : ์‹œ์Šคํ…œ ๊ฐ€๋™ ์‹œ๊ฐ„
  • 1 user : ๋กœ๊ทธ์ธ๋œ ์‚ฌ์šฉ์ž ์ˆ˜
  • load average : 0.63, 0.83, 0.88 : ๊ฐ๊ฐ ์ตœ๊ทผ 1๋ถ„, 5๋ถ„, 15๋ถ„ ๋™์•ˆ์˜ ํ‰๊ท  ๋ถ€ํ•˜


๐Ÿ“Œ 02. Load Average(ํ‰๊ท ๋ถ€ํ•˜)

  • ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ(Runnable), ์ค‘๋‹จ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ(Uninterruptible)์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ํ‰๊ท  ์ˆ˜ ์ด๋‹ค.
  • Active process๋“ค์˜ ํ‰๊ท  ์ˆ˜ ์ด๋‹ค.
  • ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น CPU ์‚ฌ์šฉ๋ฅ ์ด ์•„๋‹ˆ๋‹ค.
  • -> (๋‹จ์œ„ ์‹œ๊ฐ„๋‹น Active process์˜ ํ‰๊ท  ์ˆ˜ ์ด๋‹ค.)

๊ทธ๋ ‡๋‹ค๋ฉด Linux์—์„œ Runnable/Uninterruptible process๋Š” ๋ฌด์—‡์ผ๊นŒ?

โœ… Runnable process

  • Runnable process๋Š” CPU๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๊ฑฐ๋‚˜ CPU ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋‹ค.
  • ps ๋ช…๋ น์—์„œ R ์ƒํƒœ๋กœ ํ‘œ์‹œ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด๋‹ค.

โœ… Uninterruptible process

  • ์ค‘์š”ํ•œ ์ปค๋„ ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์žˆ์–ด ์ค‘๋‹จ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค์ด๋‹ค.
  • ps๋ช…๋ น์—์„œ D ์ƒํƒœ๋กœ ํ‘œ์‹œ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด๋‹ค.
  • Ex) ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋กœ๋ถ€ํ„ฐ I/O๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค

Q1) ๋งŒ์•ฝ, Average load๊ฐ€ 2๋ผ๋ฉด ๋ฌด์—‡์„ ์˜๋ฏธํ• ๊นŒ?

  • CPU : 2 -> ๋ชจ๋“  CPU๊ฐ€ ์™„์ „ํžˆ ์ ์œ ๋œ ์ƒํƒœ
  • CPU : 4 -> CPU ์šฉ๋ น์˜ 50%๊ฐ€ ์—ฌ์œ  ์žˆ๋Š” ์ƒํƒœ
  • CPU : 1 -> ์ ˆ๋ฐ˜์˜ Process๊ฐ€ CPU ์‹œ๊ฐ„์„ ๋†“๊ณ  ๊ฒฝ์Ÿํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ

๊ทธ๋ ‡๋‹ค๋ฉด ์ ์ ˆํ•œ load average๋Š” ๋ฌด์—‡์ผ๊นŒ?

์ฒ˜์Œ uptime ๋ช…๋ น์–ด์˜ ์ถœ๋ ฅ์—์„œ, ์–ด๋–ค ๋ฒ”์œ„์˜ load average๊ฐ€ System load๊ฐ€ ๋†’์€์ง€, ๋‚ฎ์€์ง€ ํŒ๋‹จ์„ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

โœ… CPU ์ˆ˜

  • ์ด์ƒ์ ์ธ load average๋Š” CPU ์ˆ˜์™€ ๊ฐ™์„ ๋•Œ์ด๋‹ค.
    ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์šฐ์„  CPU ๊ฐœ์ˆ˜๋ฅผ ์•„๋Š” ๊ฒƒ์ด ์ฒซ๋ฒˆ์งธ์ด๋‹ค.

  • CPU ๊ฐœ์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด top ๋ช…๋ น์–ด๋‚˜ /proc/cpuinfo ํŒŒ์ผ์„ ์ฝ์–ด์˜ค๋ฉด ๋œ๋‹ค.

  • $ grep 'model name' /proc/cpuinfo | wc -l
    2

โœ… load average ๊ฐ’

  • uptime ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋‚˜์˜จ ๊ฐ’๋“ค ์ค‘ load average๋ฅผ ์‚ดํŽด๋ณด์ž

  • ๋ถ€ํ•˜๊ฐ€ ๊ฐ์†Œํ•œ ๊ฒฝ์šฐ
    load average: 0.63, 0.83, 0.88
    15๋ถ„์ผ ๋•Œ๊ฐ€ ๊ฐ€์žฅ ๊ฐ’์ด ๋†’์•˜์œผ๋‚˜ ์ ์ฐจ ์ตœ๊ทผ์ผ ์ˆ˜๋ก ๊ฐ’์ด ๋‚ฎ์•„์ง„ ๊ฒƒ์„ ๋ณด์•„ ๋ถ€ํ•˜๊ฐ€ ์ ์  ๊ฐ์†Œํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

  • ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•œ ๊ฒฝ์šฐ
    load average: 0.89, 0.60, 0.55
    5๋ถ„ ์ „๊นŒ์ง€๋งŒ ํ•ด๋„ ๋ถ€ํ•˜๊ฐ€ ์—†์—ˆ์œผ๋‚˜ 1๋ถ„ ์‚ฌ์ด์— ๊ธ‰๊ฒฉํžˆ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

โœ… load average ์™€ CPU ์‚ฌ์šฉ๋ฅ 

์•ž์„œ ์ ์–ด๋†“์•˜๋“ฏ์ด load average๋Š” Runnable, Uninterruptible ์ƒํƒœ์˜ process ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด์ง€๋งŒ,
CPU ์‚ฌ์šฉ๋ฅ ์€ CPU๊ฐ€ ์‹ค์ œ๋กœ ์–ผ๋งŒํผ ๋ฐ”๋นด๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

  • ๋”ฐ๋ผ์„œ I/O๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŽ์œผ๋ฉด average load๋Š” ๋†’์„ ์ˆ˜ ์žˆ์œผ๋‚˜ CPU ์‚ฌ์šฉ๋ฅ ์€ ๋‚ฎ์„ ์ˆ˜ ์žˆ๋‹ค.


โœ๏ธ 03. Case Study

์„ธ ๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์œ„์˜ ์„ธ ๊ฐ€์ง€ ์ƒํ™ฉ์„ ์ดํ•ดํ•˜๊ณ , iostat, mpstat, pidstat ๋“ฑ์˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‰๊ท  ๋ถ€ํ•˜ ์ฆ๊ฐ€์˜ ์›์ธ์„ ํŒŒ์•…ํ•ด๋ณด์ž.

  • ์‹คํ—˜ํ™˜๊ฒฝ

    • Ubuntu 22.04
    • Machine configuration: 2 CPUs, 8GB RAM
    • Package : stress, sysstat
  • stress :

    • ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ
    • ๋น„์ •์ƒ์ ์ธ ํ”„๋กœ์„ธ์Šค๋กœ ์ธํ•ด ํ‰๊ท  ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • sysstat:

    • ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌ๋ˆ…์Šค ์„ฑ๋Šฅ ๋„๊ตฌ๋“ค์„ ํฌํ•จํ•œ๋‹ค.
    • mpstat: ๋ฉ€ํ‹ฐ ์ฝ”์–ด CPU ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ๋กœ, ๊ฐ CPU ๋ฐ ๋ชจ๋“  CPU์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • pidstat: ํ”„๋กœ์„ธ์Šค ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ๋กœ, ํ”„๋กœ์„ธ์Šค๋ณ„ CPU, ๋ฉ”๋ชจ๋ฆฌ, I/O, ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜์˜ ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ค์น˜

sudo apt install stress 
sudo apt install sysstat

์‹คํ—˜์„ ์œ„ํ•ด 3๊ฐœ์˜ ํ„ฐ๋ฏธ๋„์„ ์—ด์–ด ๋™์ผํ•œ ์œ ์ €๋กœ ๋กœ๊ทธ์ธํ•œ๋‹ค.


Scenario 1: CPU-intensive process

ํ„ฐ๋ฏธ๋„ #1

  • stress๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด 10๋ถ„๊ฐ„ CPU๋ฅผ 100%๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰
stress --cpu 1 --timeout 600



ํ„ฐ๋ฏธ๋„ #2

  • uptime ๋ช…๋ น์–ด๋กœ ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ํ™•์ธํ•˜๋ฉด, CPU ๋ถ€ํ•˜๊ฐ€ ์ ์ฐจ 1.00์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
watch -d uptime



ํ„ฐ๋ฏธ๋„ #3

  • mpstat ๋ช…๋ น์–ด๋กœ CPU ์‚ฌ์šฉ๋ฅ ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง
mpstat -P ALL 5

image

  • ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ 100% ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.

  • pidstat๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CPU ์‚ฌ์šฉ๋ฅ ์ด 100%์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

    • stress ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ์‚ฌ์šฉ๋ฅ  100%๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Œ

image




Scenario 2: I/O-intensive process

ํ„ฐ๋ฏธ๋„ #1

  • I/O ๋ถ€ํ•˜๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด, stress ๋ช…๋ น์–ด๋กœ I/O ์ž‘์—…์„ ๊ณ„์† ์‹คํ–‰ํ•œ๋‹ค.
stress -i 1 --timeout 600



ํ„ฐ๋ฏธ๋„ #2

  • uptime์„ ์‹คํ–‰ํ•˜๋ฉด ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
watch -d uptime



ํ„ฐ๋ฏธ๋„ #3

  • mpstat๋ฅผ ์‹คํ–‰ํ•˜๋ฉด I/O ๋Œ€๊ธฐ ์‹œ๊ฐ„(iowait)์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
mpstat -P ALL 5

image


Scenario 3: ๋งŽ์€ ์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค

์‹œ์Šคํ…œ์˜ CPU ์ˆ˜๋ณด๋‹ค ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ณผ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • stress๋กœ 8๊ฐœ์˜ CPU ์ง‘์•ฝ์ ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
stress -c 8 --timeout 600
  • CPU๊ฐ€ 2๊ฐœ์ธ ์‹œ์Šคํ…œ์—์„œ๋Š” ํ‰๊ท  ๋ถ€ํ•˜๊ฐ€ 7.97๊นŒ์ง€ ์ƒ์Šนํ•œ๋‹ค.

2๊ฐœ์˜ CPU๋งŒ ์กด์žฌํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ, 8๊ฐœ์˜ CPU-intensive ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
๋™์‹œ์— ์‹คํ–‰ ์ค‘์ธ 8๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋œ๋‹ค.

์ฆ‰, CPU๊ฐ€ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—… ์ˆ˜๋ณด๋‹ค ๋งŽ์€ ์ž‘์—…์ด ์Œ“์—ฌ์„œ ๊ณผ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.




๐Ÿ“œSummary

ํ‰๊ท  ๋ถ€ํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ์ „์ฒด ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ, ์‹œ์Šคํ…œ์˜ ์ „๋ฐ˜์ ์ธ ๋ถ€ํ•˜ ์ƒํ™ฉ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ํ‰๊ท  ๋ถ€ํ•˜๋งŒ์„ ๋ณด๊ณ ์„œ๋Š” ์–ด๋””์—์„œ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์ง์ ‘์ ์œผ๋กœ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ‰๊ท  ๋ถ€ํ•˜๋ฅผ ์ดํ•ดํ•  ๋•Œ ๋‹ค์Œ ์‚ฌํ•ญ๋“ค์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

  1. ๋†’์€ ํ‰๊ท  ๋ถ€ํ•˜๋Š” CPU-intensive ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค.
  2. ํ‰๊ท  ๋ถ€ํ•˜๊ฐ€ ๋†’๋‹ค๊ณ  ๋ฐ˜๋“œ์‹œ CPU ์‚ฌ์šฉ๋ฅ ์ด ๋†’์€ ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, I/O ์ฆ๊ฐ€๋กœ ์ธํ•ด ํ‰๊ท  ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  3. ๋†’์€ ๋ถ€ํ•˜๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ, mpstat, pidstat์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ•˜์˜ ์›์ธ์„ ๋ถ„์„ํ•ด์•ผ ํ•œ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors