| ๋ฐ์ ์ฃผ | ๋ฐ์ ๋น |
|---|---|
| @gorapang | @Ungbbi |
์๋ฒ ํ๊ฒฝ์์ CPU ๋ฐ I/O ๋ถํ๋ฅผ ๋ฐ์์ํค๋ ๋ฐฉ๋ฒ ํ์ต๊ณผ ํ๊ท ๋ถํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ฉฐ, ํ๋ก์ธ์ค๋ณ CPU ์ฌ์ฉ๋ ๋ฐ I/O ์ฌ์ฉ๋์ ๋ถ์ํ๋ ๋ฅ๋ ฅ์ ํตํด ์ถํ ์๋ฒ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ํ ์ ์๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
- ํจ์จ์ ์ธ ๋ถํ ํ
์คํธ: CPU ๋ฐ I/O์ ๋ถํ๋ฅผ ๊ฐํ์ฌ ์์คํ
์ ํ๊ณ๋ฅผ ํ์
๊ฐ๋ฅํ๋ค.
- ์ค์๊ฐ ๋ชจ๋ํฐ๋ง: ํ๊ท ๋ถํ์ ํ๋ก์ธ์ค๋ณ ์์ ์ฌ์ฉ๋์ ํ์ธํ์ฌ ์์คํ
์ฑ๋ฅ์ ์ต์ ํํ๋ค.
- ์๋ฒ ์์ ์ฑ ํฅ์: ์์คํ
์ ๋ณ๋ชฉ ํ์์ ๋ฐ๊ฒฌํ๊ณ ์ด๋ฅผ ํด๊ฒฐํจ์ผ๋ก์จ ์๋ฒ์ ์์ ์ฑ์ ๋์ผ ์ ์๋ค.
์์คํ
์ด ๋๋ ค์ก๋ค๊ณ ๋๋ ๋, ๊ฐ์ฅ ๋จผ์ ํ๋์ผ์ ๋ณดํต 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๋ถ ๋์์ ํ๊ท ๋ถํ
- ์คํ ๊ฐ๋ฅํ ์ํ(Runnable), ์ค๋จ ๋ถ๊ฐ๋ฅํ ์ํ(Uninterruptible)์ ์๋ ํ๋ก์ธ์ค๋ค์ ํ๊ท ์ ์ด๋ค.
- Active process๋ค์ ํ๊ท ์ ์ด๋ค.
- ๋จ์ ์๊ฐ๋น CPU ์ฌ์ฉ๋ฅ ์ด ์๋๋ค.
- -> (๋จ์ ์๊ฐ๋น Active process์ ํ๊ท ์ ์ด๋ค.)
๊ทธ๋ ๋ค๋ฉด Linux์์ Runnable/Uninterruptible process๋ ๋ฌด์์ผ๊น?
- Runnable process๋ CPU๋ฅผ ์ฌ์ฉ ์ค์ด๊ฑฐ๋ CPU ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ๋ก์ธ์ค๋ค.
ps๋ช ๋ น์์ R ์ํ๋ก ํ์๋๋ ํ๋ก์ธ์ค๋ค์ด๋ค.
- ์ค์ํ ์ปค๋ ํ๋ก์ธ์ค ๋ด์ ์์ด ์ค๋จ ๋ถ๊ฐ๋ฅํ ์ํ์ ํ๋ก์ธ์ค์ด๋ค.
ps๋ช ๋ น์์ D ์ํ๋ก ํ์๋๋ ํ๋ก์ธ์ค๋ค์ด๋ค.- Ex) ํ๋์จ์ด ์ฅ์น๋ก๋ถํฐ I/O๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค
- CPU : 2 -> ๋ชจ๋ CPU๊ฐ ์์ ํ ์ ์ ๋ ์ํ
- CPU : 4 -> CPU ์ฉ๋ น์ 50%๊ฐ ์ฌ์ ์๋ ์ํ
- CPU : 1 -> ์ ๋ฐ์ Process๊ฐ CPU ์๊ฐ์ ๋๊ณ ๊ฒฝ์ํ๊ณ ์๋ ์ํ
์ฒ์ uptime ๋ช
๋ น์ด์ ์ถ๋ ฅ์์, ์ด๋ค ๋ฒ์์ load average๊ฐ System load๊ฐ ๋์์ง, ๋ฎ์์ง ํ๋จ์ ์ด๋ป๊ฒ ํ ๊น?
-
์ด์์ ์ธ load average๋ CPU ์์ ๊ฐ์ ๋์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ฐ์ CPU ๊ฐ์๋ฅผ ์๋ ๊ฒ์ด ์ฒซ๋ฒ์งธ์ด๋ค. -
CPU ๊ฐ์๋ฅผ ์๊ณ ์ถ๋ค๋ฉด
top๋ช ๋ น์ด๋/proc/cpuinfoํ์ผ์ ์ฝ์ด์ค๋ฉด ๋๋ค. -
$ grep 'model name' /proc/cpuinfo | wc -l 2
-
uptime๋ช ๋ น์ด๋ฅผ ํตํด ๋์จ ๊ฐ๋ค ์ค load average๋ฅผ ์ดํด๋ณด์ -
๋ถํ๊ฐ ๊ฐ์ํ ๊ฒฝ์ฐ
load average: 0.63, 0.83, 0.88
15๋ถ์ผ ๋๊ฐ ๊ฐ์ฅ ๊ฐ์ด ๋์์ผ๋ ์ ์ฐจ ์ต๊ทผ์ผ ์๋ก ๊ฐ์ด ๋ฎ์์ง ๊ฒ์ ๋ณด์ ๋ถํ๊ฐ ์ ์ ๊ฐ์ํ์์ ์ ์ ์๋ค. -
๋ถํ๊ฐ ์ฆ๊ฐํ ๊ฒฝ์ฐ
load average: 0.89, 0.60, 0.55
5๋ถ ์ ๊น์ง๋ง ํด๋ ๋ถํ๊ฐ ์์์ผ๋ 1๋ถ ์ฌ์ด์ ๊ธ๊ฒฉํ ๋ถํ๊ฐ ์ฆ๊ฐํ์์ ์ ์ ์๋ค.
์์ ์ ์ด๋์๋ฏ์ด load average๋ Runnable, Uninterruptible ์ํ์ process ์๋ฅผ ๋ํ๋ด์ง๋ง,
CPU ์ฌ์ฉ๋ฅ ์ CPU๊ฐ ์ค์ ๋ก ์ผ๋งํผ ๋ฐ๋นด๋์ง๋ฅผ ๋ณด์ฌ์ค๋ค.
- ๋ฐ๋ผ์ I/O๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ ๋ง์ผ๋ฉด average load๋ ๋์ ์ ์์ผ๋ CPU ์ฌ์ฉ๋ฅ ์ ๋ฎ์ ์ ์๋ค.
์ธ ๊ฐ์ง ์์๋ฅผ ํตํด ์์ ์ธ ๊ฐ์ง ์ํฉ์ ์ดํดํ๊ณ , 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๊ฐ์ ํฐ๋ฏธ๋์ ์ด์ด ๋์ผํ ์ ์ ๋ก ๋ก๊ทธ์ธํ๋ค.
ํฐ๋ฏธ๋ #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-
ํน์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ 100% ์ฌ์ฉํ๊ณ ์์์ ๋ณด์ฌ์ค๋ค.
-
pidstat๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ CPU ์ฌ์ฉ๋ฅ ์ด 100%์ธ ํ๋ก์ธ์ค๊ฐ ๋ฌด์์ธ์ง ํ์ธํ ์ ์๋ค.stressํ๋ก์ธ์ค๊ฐ CPU ์ฌ์ฉ๋ฅ 100%๋ฅผ ์ฐจ์งํ๊ณ ์์
ํฐ๋ฏธ๋ #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์์คํ ์ CPU ์๋ณด๋ค ๋ง์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ฉด ๊ณผ๋ถํ๊ฐ ๋ฐ์ํ๋ค.
stress๋ก 8๊ฐ์ CPU ์ง์ฝ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ค.
stress -c 8 --timeout 600- CPU๊ฐ 2๊ฐ์ธ ์์คํ ์์๋ ํ๊ท ๋ถํ๊ฐ 7.97๊น์ง ์์นํ๋ค.
2๊ฐ์ CPU๋ง ์กด์ฌํ๋ ์์คํ
์์, 8๊ฐ์ CPU-intensive ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ค.
๋์์ ์คํ ์ค์ธ 8๊ฐ์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ค.
์ฆ, CPU๊ฐ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ ์์
์๋ณด๋ค ๋ง์ ์์
์ด ์์ฌ์ ๊ณผ๋ถํ๊ฐ ๋ฐ์ํ๋ค.
ํ๊ท ๋ถํ๋ ์์คํ
์ ์ ์ฒด ์ฑ๋ฅ์ ํ๊ฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก, ์์คํ
์ ์ ๋ฐ์ ์ธ ๋ถํ ์ํฉ์ ๋ํ๋ธ๋ค.
๊ทธ๋ฌ๋ ํ๊ท ๋ถํ๋ง์ ๋ณด๊ณ ์๋ ์ด๋์์ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ๋์ง ์ง์ ์ ์ผ๋ก ์ ์ ์์ผ๋ฏ๋ก ํ๊ท ๋ถํ๋ฅผ ์ดํดํ ๋ ๋ค์ ์ฌํญ๋ค์ ๊ณ ๋ คํด์ผ ํ๋ค.
- ๋์ ํ๊ท ๋ถํ๋ CPU-intensive ํ๋ก์ธ์ค์ ์ํด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค.
- ํ๊ท ๋ถํ๊ฐ ๋๋ค๊ณ ๋ฐ๋์ CPU ์ฌ์ฉ๋ฅ ์ด ๋์ ๊ฒ์ ์๋๋ฉฐ, I/O ์ฆ๊ฐ๋ก ์ธํด ํ๊ท ๋ถํ๊ฐ ์ฆ๊ฐํ ์๋ ์๋ค.
- ๋์ ๋ถํ๋ฅผ ๋ฐ๊ฒฌํ์ ๋,
mpstat,pidstat์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ถํ์ ์์ธ์ ๋ถ์ํด์ผ ํ๋ค.


