1

我已经为 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/ 中的字符特殊文件,尽管没有授予对实际磁盘的访问权限?

4

1 回答 1

1

据我所知,操作系统中ionice影响的层是 I/O 调度程序。至少在内核 2.6.17 之前,cfq它是唯一真正支持的调度程序ionice,我相信没有任何改变,至少就内核提供的默认调度程序而言。

I/O 调度程序仅与块设备一起使用,可以对操作进行排队或更改其顺序、延迟或合并它们等(例如,请参见此处)。这也符合您可以通过/sys虚拟文件系统更改调度程序仅用于块设备(文件,如/sys/devices/pci0000:00/0000:00:08.0/host0/target0:0:0/0:0:0:0/block/sda/queue/scheduler)的事实。您的鼠标驱动程序是一个字符设备,因此它完全不受 I/O 调度程序或ionice.

于 2012-03-13T20:35:52.563 回答