Верхний столбец состояния процесса в FreeBSD
При интерактивном запуске top я вижу различные слова в столбце состояния:
- nanslp, biord, select, uwait, lockf, pause, kqread, piperd, sbwait...
Некоторые, такие как nanslp или kqread, говорят сами за себя, другие - нет.
Пробовал г-н man страниц:
STATE - текущее состояние (одно из "START", "RUN" (отображается как "CPUn" в системах SMP), "SLEEP", "STOP", "ZOMB", "WAIT", "LOCK" или событие, при котором процесс ожидает), C - номер процессора, на котором выполняется процесс (отображается только в системах SMP)
Испытанные поисковые системы:
Где я могу получить полный список возможных состояний процесса в FreeBSD 9 и их значения?
1 ответ
Чуть дальше в top
man-страница есть:
If a process is in the "SLEEP" or "LOCK" state, the state column will report the name of the event or lock on which the process is waiting. Lock names are prefixed with an asterisk "*" while sleep events are not
Таким образом, в основном все некапитальные "STATE", без префикса со звездочкой, являются именами событий сна.
Эти метки установлены в ядре FreeBSD, поэтому вы должны найти их значение. К сожалению, нет хорошего резюме, так как имя события задается sleep
звонки.
Например, где-то в /usr/src/sys/kern/sys_pipe.c
в pipe_read
функция:
error = msleep(rpipe, PIPE_MTX(rpipe), PRIBIO | PCATCH, "piperd", 0);
Или в /usr/src/sys/kern/sys_pipe.c
в kern_nanosleep
функция:
error = tsleep(&nanowait, PWAIT | PCATCH, "nanslp", tvtohz(&tv));