ionice without effect

System is Ubuntu 10 LTS 64bit (2.6.35.31), I'm running on xen 4.0, no services active, cron stopped, scheduler is cfq for the disk /usr is mounted from:

time find /usr -exec stat {} \; > /dev/null 2>&1 &

giving

real    0m35.760s
user    0m0.270s
sys 0m3.910s

and

time ionice -c3 find /usr -exec stat {} \; > /dev/null 2>&1 &

giving

real    0m36.110s
user    0m0.310s
sys 0m4.100s

which is exactly as expected, now I run both at the same time:

time find /usr -exec stat {} \; > /dev/null 2>&1 & time ionice -c3 find /usr -exec stat {} \; > /dev/null 2>&1 &

where to my believe the ioniced version should be much slower while the straight version should be as fast as if running alone. but:

straight:

real    1m10.430s
user    0m0.320s
sys 0m3.940s

ioniced:

real    1m10.230s
user    0m0.250s
sys 0m4.020s

which implies that ionice did not work at all. Any hints?


This almost certainly isn't working because you're not using the CFQ kernel scheduler.

Look at /sys/block/xvdh/queue/scheduler to see which you are using. The one in [] brackets is the active one.

It seems to be deadline on most systems now, for which ionice doesn't work. (This all as far as I can tell, it's terribly badly documented).


Since both processes are asking for the same files, whichever one gets there second will get them from the filesystem cache. Since it isn't actually moving spindles, it isn't affected by ionice.