Состояния процессов (STATE) в top

Материал из wiki.lissyara.su
Перейти к: навигация, поиск

Из man top: STATE — это текущее состояние процесса. Одно из "START", "RUN" (показывается как "CPUn" на SMP-системах), "SLEEP", "STOP", "ZOMB", "WAIT", "LOCK" или событие, которое ожидает процесс.

START

RUN, CPU0, CPU1, CPU2, ...

Процесс выполняется. У однопроцессорной машины будет показано RUN, а у SMP — номер процессора. Process is ready to run but has been suspended while another process is running.

SLEEP

STOP

ZOMB

Процесс остался без PID'a, но всё равно выполняется. Избавиться от зомби можно, только перезагрузив систему.

WAIT

LOCK

*Giant

ucond

means the thread is waiting on a userland condition variable. This is a type of synchronization point in userland accessed via the pthread_cond_*(3) api. Это может обозначать, что поток ждёт выполнения другого занятого потока.

biord

Дисковая активность (Input/Output)?

select

Process is blocked in the select(2) syscall. Обычно это значит, что процесс ждёт внешнего ввода (сеть, терминал, изменение файла, и т.п.). select поддерживает только ожидание чего-то, что связано с файловым дескриптором (например socket, tty, vnode).

nanslp

Process is blocked in the nanosleep(2) syscall, which is an explicit request to pause for a certain amount of time. Hard to generalize this one. It should be infrequent, or it might be used by something implementing its own polling.

kserel

Process is blocked waiting for an event to trigger a KSE upcall. This isn't easy to explain in a few words, but you can read kse(2) for most of the relevant details. Usually means the process is waiting for external input (similar to select).

kse — это поддержка так называемых пользовательских потоков [1](Рус.) («user threads»). С помощью user threads можно загрузить только одно ядро процессора (см. man 2 kse).

pause

Process is blocked in the pause(2) or sigsuspend(2) syscall. It might be waiting for a signal, or you might see this if another thread is running and the main thread is waiting for all other threads to end.

lockf

Process is blocked waiting for a file lock to be released. Could be an flock(2) lock or an fcntl(2)/F_SETLK record lock.

kqread

Процесс заблокирован вызовом kqueue(2). Это похоже на select(2) — ожидание внешнего ввода. kqueue более эффективен, чем select и поддерживает several other events that can be waited on.

sbwait

Process is waiting for a socket buffer to be filled or emptied.

piperd

Process is waiting for data to arrive on a pipe ("rd" is short for read).

ttyin

В этом состоянии обычно висят процессы ждущие ввода на контрольном терминале. (getty, ed, vi, sh, cat, passwd).

Примечания

http://forum.lissyara.su/viewtopic.php?f=8&t=8904
http://www.webhostingtalk.com/archive/index.php/t-583672.html
http://forums.freebsd.org/showpost.php?p=29488&postcount=6