如何更改为Noop Scheduler?


29

我的笔记本电脑中装有SSD,有人告诉我最好切换到“空转”调度程序。

我如何更改为noop调度程序,以及在哪里进行更改,以使其在重新启动后保持不变?

Answers:


21

编辑/ etc / default / grub,例如gksudo gedit /etc/default/grub,在这里您需要添加lift = noop。

更改GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

然后运行sudo update-grub2并重新启动。


6
匿名的答案非常适合在系统上所有磁盘上更改默认值。相比之下,Eliah Kagan的答案为特定磁盘设置了默认值。对于具有单个驱动器的笔记本电脑,两者都可以正常工作。对于具有多个磁盘的系统-最值得注意的是,同时具有SSD和旋转驱动器的磁盘),Eliah Kagan的答案提供了更细粒度的控制。
罗伊斯·威廉姆斯

28

假设您的硬盘是/dev/sda。然后,您可以检查一下当前正在使用什么调度程序:

cat /sys/block/sda/queue/scheduler

(当前使用的调度程序将用[ ]括号括起来。)

您可以使它使用noop调度程序:

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

请参阅本文以获取更多信息。

要保留更改,可以将命令放在中/etc/rc.local


1
即使使用sudo,我也会运行“权限被拒绝”错误
Lucas Bustamante

@LucasBustamante您在跑步sudo echo noop > /sys/block/sda/queue/scheduler吗?这是行不通的,因为以用户身份运行的外壳程序会在运行输出重定向的命令之前设置重定向。您可以echo noop | sudo tee /sys/block/sda/queue/scheduler改用。请参阅即使使用sudo也无法回显“ hello”> x.txt吗?以及在Bash中使用带有重定向的sudo时如何解决“权限被拒绝”?了解更多信息和其他方法。(如果这不是您的意思,请让我知道。)
Eliah Kagan

感谢您的回答,这也没有帮助。我使用的是NVMe SSD,据我所知serverfault.com/questions/693348/…
Lucas Bustamante

14

该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的用户而言还有许多其他要素。


root @ titan:/ home / kessaras#for / sys / block / sd?/ queue / rotational; 做printf“ $ f is”; 猫$ f; 完成/ sys / block / sda / queue / rotational为0 / sys / block / sdb / queue / rotational为0 / sys / block / sdc / queue / rotational为1 / sys / block / sdd / queue / rotational为1根@titan:/ home / kessaras#cat / sys / block / sd * / queue / scheduler [mq-deadline]无[mq-deadline]无[mq-deadline]无[mq-deadline]无在这里有些错误。它会将所有硬盘更改为截止日期
Pavlos Theodorou

该命令不做任何更改-它仅报告磁盘是否为“旋转”(HDD)。Rotational = 0表示它是SSD或其他非旋转驱动器。
罗伊斯·威廉姆斯

你是什​​么意思,它什么都不会改变?在那里写的udev规则有什么作用?它也在一个黄色的盒子里面。你是说我是盲人还是我看不懂?
Pavlos Theodorou

1
我的错。看来他们在最新内核中删除了调度程序... ??? 对于/ sys / block / sd?/ queue / scheduler中的f; 做printf“ $ f is”; 猫$ f; 已完成/ sys / block / sda / queue / scheduler为[mq-deadline]无/ sys / block / sdb / queue / scheduler为[mq-deadline]无/ sys / block / sdc / queue / scheduler为[mq-deadline ]无/ sys / block / sdd / queue / scheduler为[mq-deadline]无本文和您编写的所有内容都很好。只是只有截止日期,没有其他选择。
Pavlos Theodorou
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.