在gun/linux上,队列调度决定了到块设备的请求实际上发送到底层设置的顺序。默认情况下是cfg(完全公平排队)策略,随意使用的笔记本和台式机使用中个调度策略没有问题,并且有助于防止io饥饿,但是用于服务器则是有问题的,在mysql的工作负载类型下,cfq会导致很差的响应时间,因为会在队列中延迟一些不必要的请求(如何理解呢)。
可以用下来的命令来查看系统所支持的以及当前在用的调度策略
cat /sys/block/磁盘盘符(比如sda)/queue/scheduler
noop deadline [cfq]([]中就是正在使用的调度策略),cfq之外的两个选项都适合服务器级的硬件,并且在大多数情况下,他们工作同样出色,noop调度适合那些自己在背后实现了调度算法的设备(什么样的设置能够自己实现调度算法),如硬件raid控制器和san。deadline则对raid控制器和直接使用的磁盘都工作良好,我们的基准测试显示,这两者之间的差别是非常小的,重要的是别用cfq,这可能会导致严重的性能问题。
不过这个建议也需要有所保留的,因为磁盘调度策略实际上在不同的内核有很多不一样的地方