вторник, 15 мая 2018 г.

Улучшить отзывчивость интерфейса при тяжелых дисковых операциях в Linux Mint и Ubuntu

Публикация описывает личный опыт применения изложенных на форуме рекомендаций участника с ником slant под заголовком "Mint 18 c ядром 4.13+ – переходим на bfq (улучшаем отзывчивость интерфейса при тяжелых дисковых операциях)". Теоретическое обоснование заимствовано из указанного выше источника. Некоторые речевые обороты изменены.

Представьте, что у вас две программы хотят одновременно читать или писать на диск. Какой из них дать преимущество? А что будет в это время делать вторая? За эти вопросы в системе отвечает так называемый планировщик дисковых операций (ввода-вывода) – подробности.

В Linux Mint по умолчанию используется планировщик cfq, доступны также deadline и none. В принципе, cfq справляется, но бывают случаи, когда система всё же "встаёт колом" – например при копировании с накопителей "флэш", или по гигабитной сети, особенно если диски hdd и не слишком "шустрые".

С целью решения этой проблемы создан планировщик bfq, который способствует гарантированному доступу к диска каждого из процессов, осуществляя управление ресурсами  в очереди запросов ввода-вывода.

То есть при интенсивных дисковых операциях "тормоза" в графическом окружении должны уйти в прошлое, что может способствовать повышению скорости запуска программ и снижению нагрузки на жёсткий диск. Основное преимущество использования этого планировщика проявляется в сценарии "параллельный доступ к множеству мелких файлов на hdd". Для SSD, по словам авторов алгоритма, его применение также будет эффективно.

В настройках в Linux Mint и Ubuntu всё связанное с этим планировщиком полностью выключено. А вот пользователи Manjaro наслаждаются его возможностями "из коробки". Как пишет автор, "будем исправлять несправедливость".

Настройка состоит из выполнения ряда последовательных команд, выполняемых через терминал, а также внесения изменений в некоторые конфигурационные файлы.

Внимание. Для осуществления настройки необходимо наличие ядра 4.13 или новее. Для определения действующей версии ядра запустите uname -r

В процессе осуществления настройки потребуется 2 перезагрузки системы.

Примечание. По тексту для редактирования конфигурационных файлов указана команда sudo xed, так как экспериментальная проверка произведена на Linux Mint. В Ubuntu тестового редактора xed не существует и вместо него используется gedit. Поэтому пользователям Ubuntu вместо sudo xed следует вводить sudo gedit. По устоявшейся ещё с ранней Ubuntu привычке в своей системе всегда ввожу sudo gedit, а для сопоставления команде gedit команды xed был использован материал этой публикации.

1. Включить в ядре поддержку bfq, запустив  sudo xed /etc/default/grub  и добавив в строку GRUB_CMDLINE_LINUX_DEFAULT параметр scsi_mod.use_blk_mq=1

Например,
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash scsi_mod.use_blk_mq=1"

2. sudo update-grub && shutdown -r now

3. sudo modprobe bfq && sudo xed /etc/udev/rules.d/60-scheduler.rules

Так как изначально файл 60-scheduler.rules в системе отсутствует, то он будет создан и передан на редактирование в текстовый редактор. В окне редактора вписать:

ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"

Сохранить изменения.

4. sudo udevadm control --reload && sudo udevadm trigger

5. sudo xed /etc/initramfs-tools/modules

Вписать строку bfq и сохранить.

Содержание файла должно быть:

# List of modules that you want to include in your initramfs.
# They will be loaded at boot time in the order below.
#
# Syntax: module_name [args ...]
#
# You must run update-initramfs(8) to effect this change.
#
# Examples:
#
# raid1
# sd_mod
bfq

6. sudo update-initramfs -u && shutdown -r now

7. После перезагрузки выполнить команду cat /sys/block/sda/queue/scheduler

Должно быть выдано: [bfq] none

Отменить изменения

1) sudo rm /etc/udev/rules.d/60-scheduler.rules

2) Убрать из  /etc/default/grub  параметр scsi_mod.use_blk_mq=1, т.е. вернуть к виду, например, GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

После этого обновить загрузчик sudo update-grub

Комментариев нет:

Отправить комментарий