Linux IOnice 会影响 /dev/ 节点吗?
Posted
技术标签:
【中文标题】Linux IOnice 会影响 /dev/ 节点吗?【英文标题】:Does Linux IOnice affect /dev/ nodes? 【发布时间】:2012-03-13 18:23:46 【问题描述】:我已经为 Linux 编写了虚拟输入驱动程序,以及通过 /dev 节点与它们通信的服务器。 现在,其中之一是虚拟鼠标,信号服务器接收到的内容尽快到达驱动程序以使鼠标感觉流畅非常重要。
出于这个原因,我将服务器进程的 ionice 设置为 1(仍然没有优先于重要的 linux 守护进程):
if (ioprio_set(IOPRIO_WHO_PROCESS,getpid(), 1 | IOPRIO_CLASS_RT << IOPRIO_CLASS_SHIFT) == -1)
logger->error("ioprio_set() error",errno);
但我不确定它是否值得。差异,即使有,也不明显。在 I/O 优先级方面是否考虑 /dev/ 中的字符特殊文件,尽管没有授予对实际磁盘的访问权限?
【问题讨论】:
【参考方案1】:据我所知,ionice
影响的操作系统层是 I/O 调度程序。至少在内核 2.6.17 之前,cfq
是唯一真正支持 ionice
的调度程序,我相信没有任何改变,至少在内核提供的默认调度程序方面。
I/O 调度程序仅与块设备一起使用,其中可以对操作进行排队或更改其顺序、延迟或合并它们等(例如,请参阅here)。这也符合您可以通过/sys
虚拟文件系统仅针对块设备(例如/sys/devices/pci0000:00/0000:00:08.0/host0/target0:0:0/0:0:0:0/block/sda/queue/scheduler
的文件)更改调度程序的事实。您的鼠标驱动程序是一个字符设备,因此它完全不受 I/O 调度程序或ionice
的影响。
【讨论】:
太棒了,谢谢 :) 我之前错过了关于“块设备”的部分以上是关于Linux IOnice 会影响 /dev/ 节点吗?的主要内容,如果未能解决你的问题,请参考以下文章