Porque 'sono ininterrupto' não significa inatividade ou dormir. O ps
manpage explica isso: geralmente IO, que no caso do rsync dificilmente é uma surpresa.
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
Porque 'sono ininterrupto' não significa inatividade ou dormir. O ps
manpage explica isso: geralmente IO, que no caso do rsync dificilmente é uma surpresa.
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.