Não é necessariamente um mau sinal, mas deixe-me responder primeiro à sua última pergunta:
O que significa exatamente?
No código-fonte top
(de link ), o preso é referido como identificador LIBTOP_STATE_STUCK
(de libtop.c
):
libtop_state_str(uint32_t state)
{
const char *strings[] = {
"zombie",
#define LIBTOP_STATE_ZOMBIE 0
"running",
#define LIBTOP_STATE_RUN 1
"stuck",
#define LIBTOP_STATE_STUCK 2
"sleeping",
#define LIBTOP_STATE_SLEEP 3
"idle",
#define LIBTOP_STATE_IDLE 4
"stopped",
#define LIBTOP_STATE_STOP 5
"halted",
#define LIBTOP_STATE_HALT 6
"unknown"
#define LIBTOP_STATE_UNKNOWN 7
};
(...)
}
Posteriormente, no mesmo arquivo, LIBTOP_STATE_STUCK
é mapeado para o estado do kernel TH_STATE_UNINTERRUPTIBLE
:
/* Translate a mach state to a state in the state breakdown array. */
static int
libtop_p_mach_state_order(int state, long sleeptime)
{
switch (state) {
case TH_STATE_RUNNING:
return LIBTOP_STATE_RUN;
case TH_STATE_UNINTERRUPTIBLE:
return LIBTOP_STATE_STUCK;
(...)
}
Portanto, um processo no estado preso significa que o processo / thread está em um estado de espera ininterrupto , que é como TH_STATE_UNINTERRUPTIBLE
é definido na estrutura do kernel thread_basic_info
(consulte link ):
struct thread_basic_info
{
(...)
integer_t run_state;
(...)
};
em que run_state
é:
run_state: The thread's run state. Possible values are:
(...)
- TH_STATE_UNINTERRUPTIBLE: The thread is in an un-interruptible wait state.
(...)
Isso geralmente é causado por um processo aguardando E / S, ou seja, o processo solicitou ler ou gravar em / de disco ou na rede e aguarda a chamada do sistema retornar (consulte link ou link para mais informações).
(Quando não estiver usando as opções do BSD, como é geralmente o caso no Linux, ps
mostra o modo de suspensão ininterrupta como estado D .
Isso faz parte do ciclo de vida normal do processo?
Sim, é. O que não é normal é que um processo permaneça neste estado por um longo tempo. Isso é um mau sinal.
Por que este processo em particular?
Difícil dizer. Geralmente é causada por gargalos de E / S com atividade de disco pesada ou conectividade degradada ao usar sistemas de arquivos de rede (o cenário mais comum, na minha experiência).