Por que “sono ininterrupto” não é contado como “IDLE”?

6

Quando executo top -bi , onde o parâmetro -i significa "ignorar processos inativos", a lista de resultados (veja abaixo) dos processos é R ou D, embora haja processos S nesse momento.

Então, por que o sono ininterrupto não é contado como "inativo"? E parece que "load average" é igual ao número de processos R mais o número de processos em D?

top - 17:47:44 up 141 days, 14:29,  2 users,  load average: 4.10, 4.18, 4.17
Tasks: 224 total,   1 running, 223 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.4%sy,  0.0%ni, 87.2%id, 12.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16432240k total, 16345816k used,    86424k free,  4934652k buffers
Swap: 16386292k total,     6996k used, 16379296k free,    71432k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                             
7479 root      18   0 1357m 1.1g  904 D    1  7.0  10:27.86 rsync                                                               
7463 root      18   0 1315m 1.0g  840 D    1  6.6   9:45.83 rsync                                                               
7469 root      18   0 1088m 889m  840 D    0  5.5   8:10.20 rsync                                                               
7524 root      18   0 1106m 895m  840 D    0  5.6   8:13.60 rsync                                                               
30958 root      15   0 12720 1148  788 R    0  0.0   0:01.07 top
    
por twimo 26.01.2013 / 23:52

2 respostas

2

Porque 'sono ininterrupto' não significa inatividade ou dormir. O ps manpage explica isso: geralmente IO, que no caso do rsync dificilmente é uma surpresa.

    
por 26.01.2013 / 23:54
2

Quando um processo está interrompido, significa que o kernel está fazendo algo (entrada / saída, principalmente) que foi solicitado pelo processo. O processo está dormindo enquanto o kernel processa a solicitação. Enquanto o processo em si está inativo, o kernel está ocupado em nome do processo, então o processo está ocupado por procuração. Tanto o código do modo de usuário (R) quanto o código do modo kernel (D) contam como ocupados.

    
por 28.01.2013 / 00:47