我的笔记本电脑中有一个 SSD,并且有人告诉我最好切换到“noop”调度程序。
我如何更改为 noop 调度程序,以及在哪里进行更改以使其在重启后仍然有效?
答案1
假设你的硬盘是/dev/sda
。那么你可以检查一下它当前正在使用什么调度程序:
cat /sys/block/sda/queue/scheduler
(当前正在使用的调度程序将用[
]
括号括起来。)
你可以让它使用 noop 调度程序:
echo noop > /sys/block/sda/queue/scheduler
看本文了解更多信息。
为了使更改持久化,您可以将命令放入 中/etc/rc.local
。
答案2
编辑/etc/default/grub,例如gksudo gedit /etc/default/grub
,这里需要添加elevator=noop。
改成。GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"
然后运行sudo update-grub2
并重新启动。
答案3
Debian 参考展示如何动态检测 SSD 并相应地更改调度程序:
在具有不同驱动器类型的系统中,您可以使用 udev 规则调整设置(创建 /etc/udev/rules.d/60-ssd-scheduler.rules):
# 为非旋转磁盘设置截止期限调度程序
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0",ATTR{queue/scheduler}="deadline"
为了确保您的内核可以检测旋转状态:
$ for f in /sys/block/sd?/queue/rotational; do printf "$f is "; cat $f; done
/sys/block/sda/queue/rotational is 1
/sys/block/sdb/queue/rotational is 1
/sys/block/sdc/queue/rotational is 0 <=== Only this is SSD!
以上所有内容均直接引用自 Debian 参考,其中还有许多其他对首次使用 SSD 的用户感兴趣的元素。
答案4
vi /etc/rc.local
添加行
for f in /sys/block/sd?/queue/scheduler; do echo "noop" > $f; cat $f; done
然后运行命令
chmod +x /etc/rc.local