linux 查看io调度策略,磁盘IO调度策略

简介

IO调度是决定读或写请求执行的内核部分。 Linux内核有四个选择[noop] anticipatory deadline cfq ,但大多数发行版使用默认的“CFQ”(完全公平队列)调度,它自2.6.18版本后一直是Linux的默认情况下的调度策略。这通常是一个很好的全面调度,并应提供良好的性能,同时共享访问驱动器“完全公平”这是试图在同一时间访问一个驱动器之间的所有不同的进程。在硬盘驱动器上,它似乎不辜负它的名字。

修改调度策略

更改的IO调度是很容易的。你并不需要更新到一个新的内核,甚至不必重新启动。这意味着你可以随时改变这个值并且看到他的效果;

比如

echo noop > /sys/block/sdb/queue/scheduler

less /sys/block/sdb/queue/scheduler

[noop] anticipatory deadline cfq

修改为另外一个调度策略

echo cfq > /sys/block/sdb/queue/scheduler

当你下一次进入时,调度策略就生效了;

修改为默认的调度策略

如上所说,只是修改调度策略很容易,但是如果重启后,修改的调度策略就会失效,要想修改默认的调度策略,需要修改内核参数

如要修改为默认的deadline

elevator=deadline

哪一个调度策略是最好的?

光说无用,只能通过实验来说明结论,本人没有测试,不能心乱下结论;所有的调度策略(除了noop)都有相关的knobs参数可以调整来达到他们的最佳性能,他们通常放在

/sys/block/sdX/queue/iosched/下面

比如闪存的一个有效调整如下

echo 1 > /sys/block/sdb/queue/iosched/fifo_batch

有些linux内核并没有内置所有的调度策略,他们可能作为一个模块被编译,如果作为一个模块编译需要调用相关的模块才能改变调度策略;

简要说明4种调度策略;

NOOP:将所有的写入放入一个简单的FIFO队列并且合并请求来提供性能;

The NOOP scheduler inserts all incoming I/O requests into a simple FIFO queue and implements request merging.

CFQ:给所有同步进程分配时间片,然后才排队访问磁盘;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值