1. Что это такое, и чем его едят.
Все довольно просто. Вот представьте, что у вас две программы хотят одновременно читать или писать на диск. Какой из них дать преимущество? А что будет в это время делать вторая? За эти вопросы в системе отвечает т.н. планировщик дисковых операций (ввода-вывода). Подробности как всегда в гугле, или для ленивых, для понимания вопроса начать можно отсюда: http://src-code.net/planirovshhiki-vvoda-vyvoda/
Нас же будет интересовать в основном практика. В минте по умолчанию используется планировщик cfq и доступны еще deadline и none. cfq в принципе справляется, но бывают случаи, когда система все-же стает колом - например при копировании с флешек, или по гигабитной сети, особенно если диски hdd и не слишком шустрые. Для решения этой проблемы умные люди написали планировщик bfq - планировщик который делает упор на то, что каждый процесс будет иметь гарантированный доступ к диску, и не будет своим ожиданием блокировать систему. Т.е. тормоза в GUI при интенсивных дисковых операциях должны уйти в прошлое, а иногда это довольно сильно способствует скорости запуска программ. Да и нагрузка на диск становится поменьше. Основное преимущество этот планировщик выдает в сценарии "параллельный доступ ко множеству мелких файлов на hdd". Но и для ssd он будет эффективен, по словам авторов алгоритма.
2. Как сделать?
К сожалению, в минте и убунте все связанное с этим планировщиком по умолчанию полностью выключено. Хорошо хоть не вырезано. А вот владельцы Манжаро наслаждаются его возможностями "из коробки" - там он включен по умолчанию. Будем исправлять несправедливость.
!!! Убеждаемся что стоит ядро ветки 4.13 или новее. !!!
Включаем поддержку в ядре:
Идем в /etc/default/grub и добавляем к
GRUB_CMDLINE_LINUX_DEFAULT
такой параметр: scsi_mod.use_blk_mq=1
Обновляем конфиг:
sudo update-grub
перегружаемся.
Смотрим на результат:
cat /sys/block/sda/queue/scheduler
Практически с гарантией результатом будет единственный вариант: none. Без паники - это следствие того что bfq у нас идет модулем а не вкомпилировано в ядро. Грузим модуль:
modprobe bfq
Смотрим еще раз:
cat /sys/block/sda/queue/scheduler
Результат должен быть уже таким:
bfq [none]
Планировщик доступен но неактивен. Теперь надо сделать так, чтобы оно стало активным а потом и грузилось автоматически.
Сначала пишем правило для удава:
Создаем файл
/etc/udev/rules.d/60-scheduler.rules
и пишем туда:ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
Сохраняем, и активируем:
sudo udevadm control --reload
sudo udevadm trigger
Строчка задействует bfq для всех дисков. Т.к. включение поддержки у нас отрубает все остальные планировщики - это оправдано. none - это даже для ssd не очень.
Смотрим еще раз:
cat /sys/block/sda/queue/scheduler
Теперь результат должен быть уже таким:
[bfq] none
Планировщик уже работает.
Но после перезагрузки, пока что, все вернется к none. Нужно заставить систему грузить модуль автоматически.
Редактируем файлик
/etc/initramfs-tools/modules
и добавляем к списку модулей bfq
Сохраняем, и даем команду
sudo update-initramfs -u
Настройка закончена, можно перегружаться спокойно.
Если вдруг не понравится - чтобы вернуть "все взад" нужно убрать правило udev и параметр из /etc/default/grub. И, соответственно, обновить конфиг оного.