The ionice manual states that:
Note that before kernel 2.6.26 a process that has not asked for an io priority formally uses "none" as scheduling class, but the io scheduler will treat such processes as if it were in the best effort class. The priority within the best effort class will be dynamically derived from the cpu nice level of the process: io_priority = (cpu_nice + 20) / 5.
For kernels after 2.6.26 with CFQ io scheduler a process that has not asked for an io priority inherits CPU scheduling class. The io priority is derived from the cpu nice level of the process (same as before kernel 2.6.26).
I am post 2.6.26, but that still leaves some open questions (I'm assuming CFQ):
What is the inheritance mapping for the scheduled class? Does TS SCHED_OTHER = Best Effort (io class 2)?
When using the ionice -p command to get the value, it returns
none: prio 0
. However, the formula mentioned in the ionice man would suggest that the same process (cpu nice of zero) would bebest-effort: prio 4
since (0 + 20) / 5 = 4.
So my assumption at this point is that none: prio 0
= best-effort: prio 4
, but I'm hoping someone can cite some kernel source in order to prove that this is authoritatively true.