Cálculo de prioridade para a classe de agendamento de E / S “none”

0

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 .

    
por 林自均 25.12.2017 / 03:49

0 respostas

Tags