Как перейти на планировщик noop?

29

У меня в ноутбуке есть SSD, и мне сказали, что переключение на планировщик "noop" предпочтительнее.

Как перейти к планировщику noop и где я могу внести изменения, чтобы они были постоянными при перезагрузках?

Хорхе Кастро
источник

Ответы:

21

Отредактируйте / 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и перезапустите.

анонимное
источник
6
Анонимный ответ хорош для изменения значения по умолчанию для всех дисков в системе. В отличие от этого, ответ Элии Каган устанавливает значение по умолчанию для определенных дисков. Для ноутбука с одним диском либо работает нормально. Для систем с несколькими дисками, особенно дисков с твердотельными накопителями и вращающимися дисками, ответ Элии Каган обеспечивает более точное управление.
Ройс Уильямс
28

Предположим, ваш жесткий диск /dev/sda. Затем вы можете проверить, какой планировщик в данный момент используется для него:

cat /sys/block/sda/queue/scheduler

(Используемый в настоящее время планировщик будет заключен в [ ]квадратные скобки.)

И вы можете сделать это, используя планировщик noop:

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

Смотрите эту статью для получения дополнительной информации.

Чтобы сохранить изменения, вы можете ввести команду /etc/rc.local.

Элия ​​Каган
источник
1
Я получаю сообщение об ошибке «Отказано в разрешении», даже при использовании sudo
Лукас Бустаманте
@LucasBustamante Ты бежишь sudo echo noop > /sys/block/sda/queue/scheduler? Это не работает, так как оболочка, которая работает как ваш пользователь, устанавливает перенаправление перед запуском команды, чей вывод перенаправляется. Вы можете использовать echo noop | sudo tee /sys/block/sda/queue/schedulerвместо этого. См. Не удается повторить «привет»> x.txt даже с sudo? и Как решить «отказано в разрешении» при использовании sudo с перенаправлением в Bash? для получения дополнительной информации и других подходов. (Если это не то, что вы имеете в виду, пожалуйста, дайте мне знать.)
Элия ​​Каган
спасибо за ответ, это тоже не помогло. Я использую SSD NVMe, я думаю, что он вообще не использует планировщик, из того, что я понял serverfault.com/questions/693348/…
Лукас Бустаманте
14

Эта ссылка на Debian показывает, как динамически определять твердотельные накопители и соответственно изменять планировщик:

В системах с различными типами дисков вы можете настроить параметры с помощью правила 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 # для f в / sys / block / sd? / queue / вращательный; сделать printf "$ f is"; cat $ f; Выполнено / sys / block / sda / очередь / ротация равно 0 / sys / block / sdb / очередь / ротация равно 0 / sys / block / sdc / очередь / ротация равно 1 / sys / block / sdd / очередь / ротация равно 1 root @titan: / home / kessaras # cat / sys / block / sd * / queue / scheduler [mq-deadline] нет [mq-deadline] нет [mq-deadline] нет [mq-deadline] нет Здесь что-то не так. Это изменяет все жесткие диски до крайнего срока
Павлос Теодору
Команда ничего не меняет - она ​​просто сообщает, является ли диск «вращающимся» (HDD). Rotational = 0 означает, что это SSD или другой не вращающийся диск.
Ройс Уильямс
что ты имеешь в виду, это ничего не меняет? И там написано правило udev, что оно делает? Это тоже внутри желтой коробки. Ты имеешь в виду, что я слепой или я не умею читать?
Павлос Теодору
1
Моя ошибка. Кажется в последнем ядре убрали планировщики ... ??? для поиска в / sys / block / sd? / queue / scheduler; сделать printf "$ f is"; cat $ f; done / sys / block / sda / queue / планировщик равен [mq-deadline] нет / sys / block / sdb / queue / scheduler равен [mq-deadline] нет / sys / block / sdc / queue / scheduler равен [mq-deadline ] none / sys / block / sdd / queue / scheduler is [mq-deadline] none Статья и все, что вы написали, в порядке. Просто есть только крайний срок и больше нечего выбирать.
Павлос Теодору