我有一些虚拟机运行Ubuntu基于云的镜像14.04-1 LTS版本。 我想查看虚拟机上不同IO调度程序的IO性能,所以我到客户机OS上的/sys/block/<drive>/queue/scheduler
来更改IO调度程序。 通常应该有cfq
, deadline
或noop
来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理程序,而无需进行任何调度。