[Linux性能调优] 磁盘I/O队列调度策略

傻瓜化说明

简单地说,对于磁盘I/O,Linux提供了cfq, deadline和noop三种调度策略

  • cfq: 这个名字是Complete Fairness Queueing的缩写,它是一个复杂的调度策略,按进程创建多个队列,试图保持对多个进程的公平(这就没考虑读操作和写操作的不同耗时)
  • deadline: 这个策略比较简单,只分了读和写两个队列(这显然会加速读取量比较大的系统),叫这个名字是内核为每个I/O操作都给出了一个超时时间
  • noop: 这个策略最简单,只有单个队列,只有一些简单合并操作

考虑到硬件配置、实际应用场景(读写比例、顺序还是随机读写)的差异,上面的简单解释对于实际选择没有太大帮助,实际该选择哪个基本还是要实测来验证。不过下面几条说明供参考:

  • 根据多篇文章的说法,deadlinenoop差异不是太大,但它们俩与cfq差异就比较大
  • MySQL这类数据存储系统不要使用cfq(时序数据库可能会有所不同。不过也有说从来没见过deadlinecfq差的情况)
  • 对于虚拟机上面的磁盘,建议采用比较简单的noop,毕竟数据实际上怎么落盘取决于虚拟化那一层
  • 我手边几个vm的默认值是:centos6是cfq,ubuntu12.04是xxxx,centos7和ubuntu14.04是deadline ÿ

你可能感兴趣的:(linux,运维,服务器)