Применение команды ps
Команда ps является очень гибким инструментом для определения работающих в системе программ и оценки используемых ими ресурсов. Она выводит статистику и информацию о состоянии процессов в системе, в том числе ИД процесса или нити, объем выполняемого ввода-вывода и используемый объем ресурсов процессора и памяти.
В этом разделе описаны опции и поля вывода, которые относятся к процессору.
Информацию об использовании процессора содержат три столбца вывода команды ps.
- Столбец
- Значение:
- C
- Показатель использования процессора процессом (в тактах)
- TIME
- Общее процессорное время, затраченное на выполнение процесса (в минутах и секундах)
- %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) означает недавно использованный процессор. В начале списка находится процесс зацикленной программы. Значение C может минимизировать использование процессором зацикленной программы, так как планировщик остановит процесс при счете 120. Для многопотокового процесса в этом поле отображается сумма для всех потоков в этом процессе.
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 - - -Значение 720 в столбце CP означает сумму отдельных потоков, указанных под этим значением: (5 * 120) + (120).процессор, коэффициент использования
В столбце TIME вывода команды ps, запускаемой периодически, указывается обычное время работы процессора, а в столбце %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Представим, что было запущено два процесса: первый проработал с момента запуска пять секунд, а затем был прерван, после чего был запущен второй процесс, который также проработал пять секунд, а затем был прерван. В результате в столбце %CPU вывода команды ps для первого процесса будет указано значение 50 процентов (процессор работал в течение 5 из 10 прошедших секунд), а для второго процесса - 100 процентов (процессор работал в течение всех пяти секунд, прошедших с момента запуска процесса).
В системе SMP это значение делится на число CPU, работающих в системе. По этой причине значение %CPU для процесса cpubound из предыдущего примера никогда не будет больше 25, так как он выполняется в четырехпроцессорной системе. Процесс cpubound полностью загрузил один из процессоров, однако значение %CPU будет равно всего лишь 25, так как оно делится на число работающих процессоров.
Опция 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 указывается ИД нити, а в столбце BND - процессор, с которым связана нить или процессор.
В некоторых случаях может быть показано, что в системе запущен процесс kproc (в операционной системе версии 4 его PID равен 516), на выполнение которого тратится значительная доля процессорного времени. Если ни одна нить в системе не готова к выполнению в течение следующего кванта времени, то планировщик выделяет этот квант времени процессора процессу ядра (kproc), который также называется процессом idle или wait. В системах SMP для каждого процессора есть свой idle kproc.
Более подробная информация о команде ps приведена в книге в книге Справочник по командам.