当Linux没有I / O调度器时,这意味着什么?

我有一些虚拟机运行Ubuntu基于的镜像14.04-1 LTS版本。 我想查看虚拟机上不同IO调度程序的IO性能,所以我到客户机OS上的/sys/block/<drive>/queue/scheduler来更改IO调度程序。 通常应该有cfqdeadlinenoop来select。 但是我看到的是none 。 这是否意味着Canonical已经删除了基于云的映像中的I / O调度程序或调度程序none这里是更名的noop调度程序? 以及如果系统中没有I / O调度程序会发生什么情况? 所有的IO请求都是以FIFO的顺序直接发送给主机的?

感谢您舍弃一些光明!

从这个Debian Wiki :

低延迟IO调度器

(对于使用NVMe协议而不是SATA的SSD来说,这一步不是必需的,它可以绕过传统的I / O调度程序,而使用blk-mq模块。

默认的I / O调度程序排队数据,以最大限度地减less在HDD上的search,这对SSD不是必需的。 因此,使用"deadline"调度程序,确保批量事务不会减慢小事务:安装sysfsutils

 echo "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf 

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

 echo deadline > /sys/block/sdX/queue/scheduler 

所以,答案是: none不是noop的别名。 none意思是“调度器不使用”。

看起来内核> = 3.13 none一个noop的别名了。 在blk-mq I / O框架正在使用时显示。 这意味着完全绕过旧的调度器,因为blk-mq (现在)没有任何调度器可供select。

在早期的内核中, none真正的noop没有logging在别名中。 在这里看到更多的细节。

接受的答案是不正确的。 没有人不是noop的别名。

没有只是因为没有调度程序正在使用。 使用NVMe协议而非SATA的固态盘可以绕过传统的I / O调度器。

来宾虚拟机具有虚拟机pipe理程序提供的虚拟I / O设备。 因此,实际的I / O设备调度是由pipe理程序内核执行的,客户机将所有设备I / O直接传递给pipe理程序,而无需进行任何调度。