Linux Process ํ๋ก์ธ์ค ์ํ ํ์ธ - ps, top
Definition: Process
ํ๋ก์ธ์ค๋ ์คํ์ค์ธ ๋ช
๋ น์ ๋ณต์ฌ๋ณธ(์ธ์คํด์ค)๋ก์จ PID๋ก ์๋ณ๋๋ค.
์คํ์ค์ธ ํ๋ก์ธ์ค์ ๊ดํ ์ ๋ณด๋ฅผ ํ์ํ๋ ๋ช
๋ น(ps, top ๋ฑ)์ ๋๋ถ๋ถ /proc ํ์ผ์์คํ
์ ์ ์ฅ๋ ์์ ๋ฐ์ดํฐ์์ ํด๋น ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค. ํ๋ก์ธ์ค๋ค์ ์ด ์ ๋ณด๋ฅผ /proc์ ์๋ธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด ์ ์ฅํ๋๋ฐ, ์ด ๋ ์๋ธ ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์ด ํด๋น ํ๋ก์ธ์ค ID๋ก ์ ์ฅ๋๋ค. ์ ์ฅ๋ ์์ ๋ฐ์ดํฐ๋ ์ด ๋๋ ํ ๋ฆฌ์ ๋ด๊ธด ํ์ผ์ ๋ด์ฉ์ ์ถ๋ ฅํ๋ฉด ์ผ๋ถ์ด๊ธด ํ์ง๋ง cat, less ๋ฑ์ ์ปค๋งจ๋๋ฅผ ํตํด ์ง์ ํ์ธํ ์ ์๋ค.
Command: ps
$> ps #ํ๋ก์ธ์ค ๋ฆฌ์คํธ ์ถ๋ ฅ
$> ps aux #ํ๋ก์ธ์ค ๋ฆฌ์คํธ ์ถ๋ ฅ + bg ํ๋ก์ธ์ค ํฌํจ
ps ๋ช ๋ น์ ์ฌ์ฉ์๋ณ๋ก ํ์ํ๋๋ก ์คํํ ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
$> ps u
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
yonlog 91854 0.1 0.0 408693440 6288 s001 S 11:07PM 0:00.12 -zsh
yonlog 63578 0.0 0.0 408955584 368 s000 S+ 3:11PM 0:00.14 -zsh
๋ด์ฉ์ ํด์ํ๋ฉด, yonlog ์ ์ ๊ฐ -zsh ์
ธ์ ์ด๊ณ ๋ก๊ทธ์ธ ํ์ผ๋ฉฐ STAT ์ด์ S ๋ฅผ ํตํด ์ ์๊ธฐ ์ํ์์ ์ ์ ์๋ค.
S ์์ + ๊ธฐํธ๋ ํ๋ก์ธ์ค๊ฐ foreground๋ก ๋์ํ๊ณ ์์์ ์๋ฏธํ๋ค. ํ๋ก์ธ์ค State ๋ณ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
PROCESS STATE CODES
R running or runnable (on run queue)
D uninterruptible sleep (usually IO)
S interruptible sleep (waiting for an event to complete)
Z defunct/zombie, terminated but not reaped by its parent
T stopped, either by a job control signal or because
it is being traced
%CPU, %MEM ์ด์ ๊ฐ๊ฐ ํ๋ก์ธ์ค๊ฐ ์๋นํ๋ ํ๋ก์ธ์์ ๋ฉ๋ชจ๋ฆฌ(RAM) ์ฌ์ฉ๋ฅ ์ ํ์ํ๋ค.
VSZ ์ด์ ๊ฐ์ ์ธํธ ํฌ๊ธฐ(Virtual Set Size)๋ก ํ๋ก์ธ์ค์ ํฌ๊ธฐ๋ฅผ ํฌ๋ก๋ฐ์ดํธ ๋จ์๋ก ๋ณด์ฌ์ฃผ๋ฉฐ, ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ์๋ฏธํ๋ค.
RSS ์ด์ ์์ฃผ ์ธํธ ํฌ๊ธฐ(Resident Set Size)๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ฉฐ, ์ค์ ๋ก ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ์๋ฏธํ๋ค.
START๋ ํ๋ก์ธ์ค๊ฐ ์์๋ ์๊ฐ, TIME์ ์ด ์ฌ์ฉ ์๊ฐ์ด๋ค. ๋ง์ ์ปค๋งจ๋๊ฐ CPU ์๊ฐ์ ๊ฑฐ์ ๋นผ์์ง ์๊ธฐ ๋๋ฌธ์ 0:00.12์ ๊ฐ์ด CPU ์๊ฐ์ 1์ด๋ ์ฌ์ฉํ๊ณ ์์ง ์์ ์ํ์์ ์ ์ ์๋ค.
ํ์ฌ ์ฌ์ฉ์์ฉ์ผ๋ก ๋ฆฌ๋ ์ค ์์คํ ์์ ์คํ๋๊ณ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ํ์ด์ง๋ณ๋ก ์ถ๋ ฅํ๋ ค๋ฉด ps ux์ less๋ฅผ ํ์ดํ ์ฒ๋ฆฌํ๋ค.
$> ps ux | less
์ถ๋ ฅ๋ ๋ด์ฉ์ ํ์ํ ์ด์ ํค์๋๋ก ์ง์ ํ์ฌ ์ ๋ ฌํ ์๋ ์๋ค. ์คํ ์ค์ธ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ์ถ๋ ฅํ๋(-e) ํน์ ์ด๋ง ์ง์ ํ์ฌ(-o) ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๊ธฐ์ค์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๊ฐ์ฅ ๋ง์ ํ๋ก์ธ์ค๊ฐ ๋งจ ์ ํ์ผ๋ก ์ ๋ ฌ๋๋๋ก(-m) ์ถ๋ ฅํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
$> ps -eo pid,user,group,gid,vsz,rss,comm -m | less
# ๋๋
$> ps -evm | less
Sort Order๋ฅผ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ ps manํ์ด์ง์ ์์ธํ๊ฒ ์๋ด๋์ด์๋ค.
The -m, -r, and -v options will change the sort order. If more than one sorting option was given, then the selected processes will be sorted by the last sorting
option which was specified.
-r Sort by current CPU usage, instead of the combination of controlling terminal and process ID.
-m Sort by memory usage, instead of the combination of controlling terminal and process ID.
-v Display information associated with the following keywords: pid, state, time, sl, re, pagein, vsz, rss, lim, tsiz, %cpu, %mem, and command. The -v option implies the -m option.
Command: top
top ๋ช ๋ น์ ps๋ณด๋ค ํ๋ฉด์ ๋ณด๋ค ์ต์ ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. ์์คํ ๋ฆฌ์์ค์ ๋ํ 1,5,15๋ถ ๋จ์ Load Average๋ฅผ ํตํด CPU ๋น ํ๊ท ๋ก๋๋ฅผ ํ์ธํ๊ฑฐ๋ ํ๋ก์ธ์ค๋ฅผ ์ฃฝ์ด๊ฑฐ๋ ์ฐ์ ์์๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฑ์ ๋ค์ํ ํ๋ก์ธ์ค ๋ชจ๋ํฐ๋ง ๋ฐ ๊ด๋ฆฌ ์์ ์ ์ํํ ์ ์๋ค.
top์ ์ผ๋ฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋๋ CPU๋ฅผ ํ์ ์ด์์ผ๋ก ์ ์ ํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋ ค๋ด ์ด๋ ํ ์กฐ์น๋ฅผ ์ทจํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. CPU ์ ์ ์จ์ด ์ง๋์น๊ฒ ๋์ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ๊ทธ ์ฐ์ ์์(nice number)๋ฅผ ๋ณ๊ฒฝํ๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋๋ฌด ๋ง์ด ์๋นํ๋ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ํด๋น ํ๋ก์ธ์ค๋ฅผ ์ฃฝ์ผ ์๋ ์๋ค.
ํ๋ก์ธ์ค ์ฐ์ ์์ ๋ณ๊ฒฝํ๊ธฐ: top ํ๋ฉด์์ ์ฐ์ ์์๋ฅผ ์ข
๋ฃํ ํ๋ก์ธ์ค์ PID๋ฅผ ์๋ณํ์ฌ $> r ์ปค๋งจ๋(renice)๋ฅผ ํตํด ์ฐ์ ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
ํ๋ก์ธ์ค ์ฃฝ์ด๊ธฐ: kill -15 ๋๋ -9 + PID๋ฅผ ํตํด ์ํํ ์ ์๋ค. 15๋ ํ๋ก์ธ์ค๋ฅผ ๊น๋ํ๊ฒ ์ข
๋ฃํ ๋ ์ฌ์ฉํ๊ณ , 9๋ ํ๋ก์ธ์ค๋ฅผ ์ฆ์ฌ์ํฌ ์ ์๋ค. ์ด ์ ํธ๋ฅผ ๋ฐ์ ํ๋ก์ธ์ค๋ ํ๋ ์ผ์ด ์ด๋ค ์ํ์๋์ง ์๊ด ์์ด ๊ณง๋ฐ๋ก ์ข
๋ฃ๋๋ค.
Command: nice, renice
nice ์ปค๋งจ๋๋ ๋จ์ผ ํ๋ก์ธ์ค์ CPU ์๊ฐ์ ๋ ํ ๋นํ๊ฑฐ๋ ์ค์ผ ๋ ์ฌ์ฉ๋๋ฉฐ nice ๊ฐ์ด ๋ฎ์ ์๋ก CPU์ ๋ ๋ง์ด ์ ๊ทผํ๋ค.
ํ๋ก์ธ์ค๋ ์ฒ์๋ถํฐ nice ๊ฐ์ ์ง์ ํ์ด ์คํํ ์๋ ์๊ณ , ์คํ ์ค์ธ ํ๋ก์ธ์ค์ nice ๊ฐ์ renice ์ปค๋งจ๋๋ฅผ ํตํด ๋ณ๊ฒฝํ ์๋ ์๋ค.
์๋ ์์๋ ํ์ผ ์์คํ
์ ์กด์ฌํ๋ ํ์ผ๋ค์ ์ผ์ผ์ด ํ์ด ๊ทธ ์ด๋ฆ์ locate ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ง๋๋ updatedb ์ปค๋งจ๋๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฐฉํด ๋ฐ์ง ์๊ณ ์งํํ๊ธฐ ์ํด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ(&) ํ์์ผ๋ฉฐ, ๊ธฐ๋ณธ ์ฐ์ ์์๋ 5๊ฐ ๋๋๋ก ์ค์ ํ ๋ถ๋ถ์ด๋ค.
$> nice +5 updatedb &
์ด๋ ๊ฒ ์คํ๋ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋์ด๋ ์์ ์ (์ฆ, nice ๊ฐ์ ๋ฎ์ถ๋ ์์ ์) ๋ฃจํธ ์ฌ์ฉ์๋ง ์ํํ ์ ์์ผ๋ฉฐ ์ผ๋ฐ ์ฌ์ฉ์๋ nice ๊ฐ์ ๋ฎ์ถ๊ฑฐ๋ ์์ ๊ฐ์ ์ง์ ํ ์ ์๋ค. ๋ฐ๋ผ์ ์ผ๋ฐ ์ฌ์ฉ์๋ ํ๋ก์ธ์ค๋ค์ด ๊ธฐ๋ณธ์ผ๋ก ๋ฐ๊ณ ์๋ ๊ด์ฌ ๊ฐ ์ด์์ ์๊ตฌํ ์ ์์ผ๋ฉฐ ๋ํ ์์ ์ ํ๋ก์ธ์ค์๋ง nice ๊ฐ์ ์ค์ ํ ์ ์๋ค.
Basic Activities
- ์์คํ
์์ ์คํ๋๊ณ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ์ถ๋ ฅํ ๋ค ํ์ํ ์ ๋ณด๋ฅผ ์ ํ์ ์ผ๋ก ํ์ํ ์ ์๋ค
(i.e. PID, ์ฌ์ฉ์๋ช , ๊ทธ๋ฃน๋ช , ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ, ์์ฃผ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ, ์ปค๋งจ๋) - top ์ปค๋งจ๋๋ฅผ ํตํด ์์คํ ์์ ์คํ๋๊ณ ์๋ ํ๋ก์ธ์ค๋ฅผ ํ์ธํ ๋ค, CPU ์ฌ์ฉ๋๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ ์๋ค.
Advanced Activities
- ์คํ๋๊ณ ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ cgroup์ ์์ฑํ์ฌ ํน์ CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ ์ ์จ ๊ฐ์ ๊ณ ์ ํด๋ณด์
References:
[+] ๋ฆฌ๋
์ค ๋ฐ์ด๋ธ ์ 9ํ
[+] ์ํ์ฝ๋ฉ - Linux Process 1 - https://www.youtube.com/watch?v=mrOxyFzD8SY
[+] ์ํ์ฝ๋ฉ - Linux Process 2 - https://www.youtube.com/watch?v=6anZhqAAaQk
[+] https://idea.popcount.org/2012-12-11-linux-process-states/