linux - CFQ、Deadline 和 NOOP 有什么区别?

标签 linux io linux-kernel kernel recompile

<分区>

我正在重新编译我的内核,我想选择一个 I/O 调度程序。它们之间有什么区别?

最佳答案

如果将它们全部编译,您可以在启动时或按设备选择要使用的调度程序。无需在编译时选择,除非您的目标是每个字节都很重要的嵌入式设备。请参阅 Documentation/block/switching-sched.txt 以了解有关在启动时切换每个设备或系统范围的详细信息。

CFQ 调度器允许您通过ionice(1) 工具或ioprio_set(2) 系统调用设置优先级。这允许仅在系统的 block 设备相对空闲时给予某些进程优先权或强制其他进程执行它们的 IO。队列由 segregating the IO requests from processes into queues 实现,并处理来自每个队列的请求,类似于 CPU 调度。有关配置它的详细信息,请参见 Documentation/block/cfq-iosched.txt

相比之下,deadline 调度器同时查看来自所有进程的所有写入;它按扇区号对写入进行排序,并以线性方式写入它们。截止日期意味着它会尝试在截止日期到期之前写入每个 block ,但在这些截止日期内,可以自由地重新安排它认为合适的 block 。有关配置它的详细信息,请参见 Documentation/block/deadline-iosched.txt

关于linux - CFQ、Deadline 和 NOOP 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9338378/

相关文章:

Java在另一个方法中调用变量

c - 为什么在内核代码中一些变量的地址存储在char指针中?

linux - 选择系统调用在 n/w 应用程序中无限期挂起。

c# - 如何通过https获取隐藏文件的内容?

Python 迭代处理多个文件,没有显式的 for 循环

linux - 在双 Xeon 设置的/proc/meminfo 中看不到内存

c - 在启动时自动加载模块和目标文件

linux - 如何在 bash 中编写 "if grep a and grep b"结构?

linux - 系统调用在调用_exit时返回07

python - 将文本附加到文件?