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_INTERRUPTIBLEto idlekthreadsand wait for 'work' becauseTASK_UNINTERRUPTIBLEcontributes to the loadavg. Having all idlekthreadscontribute to the loadavg is somewhat silly.Now mostly this works OK, because
kthreadshave all their signals masked. However there's a few sites where this is causing problems andTASK_UNINTERRUPTIBLEshould be used, except for that loadavg issue.This patch adds
TASK_NOLOADwhich, when combined withTASK_UNINTERRUPTIBLEavoids the loadavg accounting.As most of imagined usage sites are loops where a thread wants to idle, waiting for work, a helper
TASK_IDLEis 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