I've implemented IO nice levels in the CFQ io scheduler.Thanks for putting this in ! It'll be very useful to have some control over I/O priorities.
It works as
follows.
A process has an assigned io nice level, anywhere from 0 to 20. Both of
these end values are "special" - 0 means the process is only allowed to
do io if the disk is idle, and 20 means the process io is considered
realtime. Realtime IO always gets first access to the disk.
Values from 1 to 19 assign 5-95% of disk bandwidth to that process. Any io class isCurrently, cfq is doing bandwidth allocation in terms of number of requests, not bytes. Hence priority inversion can happen if lower priority levels submit larger requests on an average. Any plans to take request sizes into consideration in future ?
allowed to use all of disk bandwidth in absence of higher priority io.
About the patch: stuff like this really needs some resource managementNow thats music to our ears :-) Though you've complicated matters by calling the priority level a "class" ! Please consider renaming
abstraction like CKRM. Right now we just look at the tgid of the
process.