coluna do estado do processo superior no FreeBSD

3

Ao executar o topo de forma interativa, posso ver várias palavras na coluna de estado:

  • nanslp, biord, selecione, uwait, lockf, pausa, kqread, piperd, sbwait ...

Alguns como nanslp ou kqread são auto-explicativos, outros não.

Tentei as man pages do senhor:

STATE is the current state (one of "START", "RUN" (shown as "CPUn" on SMP systems), "SLEEP", "STOP", "ZOMB", "WAIT", "LOCK" or the event on which the process waits), C is the processor number on which the process is executing (visible only on SMP systems)

Mecanismos de pesquisa tentados:

Onde posso obter uma lista completa do possível estado do processo no FreeBSD 9, e seus significados?

    
por Community 01.10.2012 / 10:07

1 resposta

4

Um pouco mais à frente na página 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

Então, basicamente, todos os "STATE" não maiúsculos, não prefixados com um asterisco, são nomes de eventos do sono.

Esses rótulos são definidos no kernel do FreeBSD, então é aqui que você deve procurar o significado deles. Infelizmente, não há um resumo agradável, pois o nome do evento é definido pelas sleep chamadas.

Por exemplo, em algum lugar em /usr/src/sys/kern/sys_pipe.c na função pipe_read :

error = msleep(rpipe, PIPE_MTX(rpipe), PRIBIO | PCATCH, "piperd", 0);

Ou em /usr/src/sys/kern/sys_pipe.c na função kern_nanosleep :

error = tsleep(&nanowait, PWAIT | PCATCH, "nanslp", tvtohz(&tv));

    
por 01.10.2012 / 12:16