Freebsd

FreeBSD下的頂級程序狀態欄

  • November 19, 2012

當以互動方式執行 top 時,我可以在 state 列中看到各種單詞:

  • nanslp, biord, select, uwait, lockf, pause, kqread, piperd, sbwait …

有些像 nanslp 或 kqread 是不言自明的,有些則不是。

試過先生手冊頁:

STATE 是目前狀態(“START”、“RUN”(在 SMP 系統上顯示為“CPUn”)、“SLEEP”、“STOP”、“ZOMB”、“WAIT”、“LOCK”之一或程序等待),C 是正在執行程序的處理器編號(僅在 SMP 系統上可見)

試過的搜尋引擎:

我在哪裡可以獲得 FreeBSD 9 下可能的程序狀態及其含義的完整列表?

top在手冊頁中更進一步的是:

   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));

引用自:https://serverfault.com/questions/433560