Tag Archives: scheduler

在Linux下更改硬盘的 I/O scheduler

要开始测试SSD Tuning这个feature了,SSD的特点之一就是随机读取性能很好,那么就不需要什么I/O scheduler了。所以测试的时候就要改一下scheduler,由一般默认的CFQ改成noop,让I/O scheduler什么都不做就好了。

那么怎么在Linux系统下更改I/O scheduler呢,不会的就google吧。

1. 临时更改

如果想不重启系统而临时更改某个设备的scheduler,那么就用/sys接口吧。

cat /sys/block/<device>/queue/scheduler

可以看到类似如下的输出

noop anticipatory deadline [cfq]

列出的四种都是系统支持的scheduler,方括号中的是现在使用的,也就是cfq。(关于什么是cfq, anticipatory, deadline,自己搜索吧,我也不清楚呢)

要更改的话echo进去一个新值就可以了

# echo noop > /sys/block/<device>/queue/scheduler

2. 永久更改 (这个不是针对某个设备,而是整个系统了吧)

这就需要重启系统了。在grub的启动参数中增加 elevator=noop 参数,noop可以换成其他支持的scheduler。

另外重新编译内核,指定默认的scheduler应该也是可以的吧。

PS. 关于sudo和echo连起来用,还是没搞明白,其实应该是sudo没搞明白。

普通用户下, sudo echo noop > /sys/block/<device>/queue/scheduler是不可以的,没有权限,直接echo就要换成root,或者su -c “echo noop > /sys/block/<device>/queue/scheduler。

而使用 echo noop | sudo tee /sys/block/<device>/queue/scheduler 就是可行的。

谁能给详细介绍下sudo?