我已经为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/中的字符特殊文件,尽管没有提供对实际磁盘的访问权限?
发布于 2012-03-14 04:35:53
据我所知,在操作系统中,ionice影响的层是I/O调度程序。至少在内核2.6.17之前,cfq是唯一真正支持ionice的调度器,我相信没有什么变化,至少在内核提供的默认调度器方面是这样。
I/O调度器仅与块设备一起使用,在块设备中,可以对操作进行排队或更改顺序,延迟或合并操作等(例如,参见here )。这也符合这样一个事实,即您只能通过块设备(如/sys/devices/pci0000:00/0000:00:08.0/host0/target0:0:0/0:0:0:0/block/sda/queue/scheduler等文件)的/sys虚拟文件系统来更改调度程序。您的鼠标驱动程序是一个字符设备,因此,它完全不受I/O调度程序或ionice的影响。
https://stackoverflow.com/questions/9689826
复制相似问题