12-IO优先级
6.4.3 I/O优先级
除了调度优先级,Linux还支持进程指定I/O优先级。I/O优先级会影响进程的I/O请求优先级。内核I/O调度器(参考第4章)总是优先响应来自于高I/O优先级的请求。
缺省情况下,I/O调度器通过进程的nice value决定I/O优先级,因此,设置nice value会自动改变I/O优先级。但是,Linux内核还提供了两个系统调用来显式设置或获取I/O优先级,且和nice value无关:
糟糕的是,glibc没有提供对这两个系统调用的用户空间接口。没有glibc的支持,函数用起来是相当麻烦的。在glibc开始支持的时候,接口有可能和系统调用不同。在这之前,有两个可移植方法来操作进程I/O优先级:通过nice value,或者类似于类似ionice的工具,ionice是util-linux包的一部分。[1]
不是所有的I/O调度器都支持I/O优先级,特别地,完全公平队列(Complete Fair Queuing,CFQ)I/O调度器支持I/O优先级,其他标准调度器不支持。如果当前I/O调度器不支持I/O优先级,调用时会直接忽略,而不会给出任何提示信息。