Eu li a página do manual de ionice(1)
e ele diz:
For kernels after 2.6.26 with the CFQ I/O scheduler, a process that has not asked for an I/O priority inherits its CPU scheduling class. The I/O priority is derived from the CPU nice level of the process (same as before kernel 2.6.26).
E o cálculo da prioridade de E / S antes do kernel 2.6.26 é:
io_priority = (cpu_nice + 20) / 5
Então eu fiz as seguintes experiências:
root@jacky:~# nice
0
root@jacky:~# sleep 5566 &
[1] 32527
root@jacky:~# ionice -p 32527
none: prio 4
root@jacky:~# ps hp 32527 -o nice
0
root@jacky:~# nice -n -20 sleep 5566 &
[2] 32538
root@jacky:~# ionice -p 32538
none: prio 4
root@jacky:~# ps hp 32538 -o nice
-20
O primeiro processo (pid 32527) tem a prioridade de E / S de 4, e é razoável porque (0 + 20) / 5 = 4. O segundo processo (pid 32538) tem CPU de -20, então deveria tem prioridade de E / S de (-20 + 20) / 5 = 0. No entanto, também tem prioridade de E / S de 4.
Alguém pode explicar isso para mim? Obrigado!
p.s. Estou usando o Arch Linux e meu uname -r
é 4.13.4-1-ARCH
.
Tags ionice