Linux 没有 I/O 调度器意味着什么

Ha *_*Hai 8 virtualization cloud io scheduler ubuntu-14.04

我有一些运行基于 Ubuntu 云的映像 14.04-1 LTS 版本的虚拟机。我想在 VM 上查看不同 IO 调度程序的 IO 性能,因此我/sys/block/<drive>/queue/scheduler在来宾操作系统上更改了 IO 调度程序。通常,应该有cfqdeadline、 或noop可供选择。但我看到的是none. 是不是说Canonical在云端镜像中去掉了I/O调度器,或者none这里的调度器是重命名的noop调度器?如果系统中没有 I/O 调度程序会发生什么?所有的io请求都是按FIFO顺序直接发送给主机的?

感谢您的启发!

sho*_*hok 16

似乎在内核上 >= 3.13不再none是 的别名noop。在使用blk-mqI/O 框架时显示;这意味着完全绕过旧的调度程序,因为blk-mq(现在)根本没有调度程序可供选择。

在早期的内核中,none对于noop. 请参阅此处了解更多详情。


Siu*_*ji- 5

来自Debian 维基

低延迟 IO 调度器

(对于使用 NVMe 协议而不是 SATA 的 SSD,则不需要执行此步骤,因为它会绕过传统的 I/O 调度程序并使用该blk-mq模块。)

默认 I/O 调度程序对数据进行排队,以最大程度地减少 HDD 上的查找,这对于 SSD 来说不是必需的。因此,使用"deadline"仅确保批量事务不会减慢小事务的调度程序:安装sysfsutils

echo "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf
Run Code Online (Sandbox Code Playgroud)

(调整 sdX 以匹配您的 SSD)重新启动或

echo deadline > /sys/block/sdX/queue/scheduler
Run Code Online (Sandbox Code Playgroud)

所以,答案是:none不是 的别名noopnone表示“未使用调度程序”。

  • 据我所知,“noop”仍然会做出一些调度决策(例如请求合并),而“None”则意味着根本没有。 (4认同)
  • 我不确定这句话如何让您得出“noop”不是“none”的结论。你能详细说明一下吗? (2认同)