ps 명령 사용
ps 명령은 시스템에서 실행 중인 프로그램과 프로그램이 사용 중인 자원을 식별하는 매우 유연한 도구로서, 프로세스 또는 스레드 ID, I/O 활동, CPU 및 메모리 사용량 등 시스템의 프로세스에 대한 통계와 상태 정보를 표시합니다.
이 절에서는 CPU와 관련된 옵션과 출력 필드에 대해 설명합니다.
세 개의 가능한 ps 출력 열은 CPU 사용량을 각기 다른 방식으로 보고합니다.
- 열
- 값:
- C
- 최근에 프로세스에 사용된 CPU 시간입니다(클럭 틱 단위).
- TIME
- 프로세스가 시작된 이후로 프로세스에 사용된 총 CPU 시간입니다(분 및 초 단위).
- %CPU
- 프로세스가 시작된 이후로 프로세스에 사용된 총 CPU 시간을 프로세스 시작 이후 경과 시간으로 나눈 값입니다. 이 시간은 프로그램의 CPU 의존도를 측정한 것입니다.
CPU 집약
# ps -ef | egrep -v "STIME|$LOGNAME" | sort +3 -r | head -n 15 UID PID PPID C STIME TTY TIME CMD
mary 45742 54702 120 15:19:05 pts/29 0:02 ./looper
root 52122 1 11 15:32:33 pts/31 58:39 xhogger
root 4250 1 3 15:32:33 pts/31 26:03 xmconsole allcon
root 38812 4250 1 15:32:34 pts/31 8:58 xmconstats 0 3 30
root 27036 6864 1 15:18:35 - 0:00 rlogind
root 47418 25926 0 17:04:26 - 0:00 coelogin <d29dbms:0>
bick 37652 43538 0 16:58:40 pts/4 0:00 /bin/ksh
bick 43538 1 0 16:58:38 - 0:07 aixterm
luc 60062 27036 0 15:18:35 pts/18 0:00 -ksh열(C)은 최근에 사용된 CPU를 나타냅니다. 루핑 프로그램의 프로세스가 리스트를 생성합니다. 스케줄러는 120에서 계수를 중지하기 때문에 C 값은 루핑 프로세스의 CPU 사용량을 최소화할 수 있습니다. 멀티스레드 프로세스의 경우 이 필드는 해당 프로세스 내의 모든 스레드에 대해 나열되는 CP의 합계를 나타냅니다.
ps -lmo THREAD -p 8060956
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
root 8060956 6815882 - A 720 120 0 - 200001 pts/0 - ./a.out
- - - 8716483 R 120 120 0 - 400000 - - -
- - - 17105017 R 120 120 0 - 400000 - - -
- - - 24182849 R 120 120 0 - 400000 - - -
- - - 24510589 R 120 120 0 - 400000 - - -
- - - 30277829 R 120 120 0 - 400000 - - -
- - - 35913767 R 120 120 0 - 400000 - - -CP
열에서 값 720은 이 값 아래에 나열되는 개별 스레드의 합계 즉, (5 * 120) + (120)을
나타냅니다. CPU 시간 비율
정기적으로 실행되는 ps 명령은 TIME 열 아래에 CPU 시간을 표시하고, %CPU 열 아래에 실제 시간 대비 CPU 시간 비율을 표시합니다. 사용량을 주도하는 프로세스를 찾으십시오. au 및 v 옵션은 사용자 프로세스에 대해 유사한 정보를 제공합니다. aux 및 vg 옵션은 사용자 및 시스템 프로세스를 모두 표시합니다.
# ps au
USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND
root 19048 24.6 0.0 28 44 pts/1 A 13:53:00 2:16 /tmp/cpubound
root 19388 0.0 0.0 372 460 pts/1 A Feb 20 0:02 -ksh
root 15348 0.0 0.0 372 460 pts/4 A Feb 20 0:01 -ksh
root 20418 0.0 0.0 368 452 pts/3 A Feb 20 0:01 -ksh
root 16178 0.0 0.0 292 364 0 A Feb 19 0:00 /usr/sbin/getty
root 16780 0.0 0.0 364 392 pts/2 A Feb 19 0:00 -ksh
root 18516 0.0 0.0 360 412 pts/0 A Feb 20 0:00 -ksh
root 15746 0.0 0.0 212 268 pts/1 A 13:55:18 0:00 ps au(프로세스 CPU 시간 / 프로세스 지속 시간) * 100
예를 들어, 다음과 같은 두 개의 프로세스가 있습니다. 첫 번째 프로세스는 5초 실행 후에 종료되지 않고 이어서 두 번째 프로세스도 5초 실행 후에 종료되지 않습니다. ps 명령이 첫 번째 프로세스에 대해 50% %CPU(10초 경과 시간 대비 5초 CPU)를 보여주고, 두 번째 프로세스에 대해 100%(5초 경과 시간 대비 5초 CPU)를 보여줍니다.
SMP의 경우, 이 값은 시스템에서 사용 가능한 CPU 수로 나눈 값입니다. 이전 예를 다시 살펴보면, 4방향 프로세서 프로세서 시스템에서 해당 예가 실행되었기 때문에 cpubound 프로세스에 대한 %CPU 값이 25를 초과하지 않습니다. cpubound 프로세스는 한 프로세서의 100%를 사용하지만, %CPU 값은 사용 가능한 CPU 수로 나눈 값입니다.
THREAD 옵션
# ps -mo THREAD
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
root 20918 20660 - A 0 60 1 - 240001 pts/1 - -ksh
- - - 20005 S 0 60 1 - 400 - - -TID 열은 스레드 ID를 표시하며, BND 열은 프로세서에 바인드된 프로세스 및 스레드를 표시합니다.
CPU 시간을 사용하는 kproc(운영 체제 버전 4에서 PID 516)라는 이름의 프로세스가 표시되는 것이 일반적입니다. 시분할 동안 실행할 수 있는 스레드가 없는 경우, 스케줄러는 해당 시분할에 대한 CPU 시간을 유휴 또는 대기 kproc라는 커널 프로세스(kproc)에 지정합니다. SMP 시스템에는 프로세서마다 유휴 kproc가 있습니다.
ps 명령에 대한 자세한 세부사항은 명령 참조의 내용을 참조하십시오.