Верхний столбец состояния процесса в 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));

Другие вопросы по тегам