Significa "Inativo"
/* states beyond TASK_REPORT: */
"I (idle)", /* 0x80 */
Referência: O que o estado do processo do Linux "I" significa na saída superior?
Digging more in kernel sources I found that the record for I is
TASK_REPORT_IDLE
, which is returned from kernel guts (function__get_task_state
) when process has status TASK_IDLE, which in fact is a combination of#define TASK_IDLE (TASK_UNINTERRUPTIBLE | TASK_NOLOAD)
Além disso, veja este commit no kernel intitulado: sched / wait: introduza TASK_NOLOAD e TASK_IDLE .
Currently people use
TASK_INTERRUPTIBLE
to idlekthreads
and wait for 'work' becauseTASK_UNINTERRUPTIBLE
contributes to the loadavg. Having all idlekthreads
contribute to the loadavg is somewhat silly.Now mostly this works OK, because
kthreads
have all their signals masked. However there's a few sites where this is causing problems andTASK_UNINTERRUPTIBLE
should be used, except for that loadavg issue.This patch adds
TASK_NOLOAD
which, when combined withTASK_UNINTERRUPTIBLE
avoids the loadavg accounting.As most of imagined usage sites are loops where a thread wants to idle, waiting for work, a helper
TASK_IDLE
is introduced.
NOTA: parece que foi adicionado ao kernel do Linux em 4.14-rc3 :
sched/debug: Add explicit TASK_IDLE printing
/ proc
Dado que isso vem do kernel do Linux, as ferramentas downstream como ps
e top
imediatamente podem exibir esse novo estado, I
, sem precisar ser explicitamente informado, pois elas derivam suas informações de /proc
.
Você pode ver o estado de /proc
por meio do /proc/<PID>/stat
:
$ cat /proc/10/stat
10 (lru-add-drain) S 2 0 0 0 -1 69247072 ....
^--- state = S = Sleep