我为 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/中的字符特殊文件,尽管没有给出对实际磁盘的访问权限?
最佳答案
据我所知,ionice
影响的操作系统层是 I/O 调度程序。至少在内核 2.6.17 之前,cfq
是唯一真正支持 ionice
的调度器,我相信一切都没有改变,至少在内核提供的默认调度器方面是这样.
I/O 调度程序仅用于 block 设备,其中可以对操作进行排队或更改它们的顺序、延迟或合并它们等(参见 here 例如)。这也符合以下事实,即您可以通过 /sys
虚拟文件系统更改调度程序,仅适用于 block 设备(/sys/devices/pci0000:00/0000:00 等文件: 08.0/host0/target0:0:0/0:0:0:0/block/sda/queue/scheduler
).您的鼠标驱动程序是一个字符设备,因此它完全不受 I/O 调度程序或 ionice
的影响。
关于linux - Linux IOnice 会影响/dev/nodes 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9689826/