Хранение обычно является самой медленной частью системы, и операционные системы, такие как Linux, пытаются ограничить доступ ввода/вывода с помощью «хитростей», таких как кэширование. Планировщик ввода-вывода также может иметь значение, если у вас есть несколько программ, обращающихся к одному и тому же диску, и в Linux 4.12 реализованы два новых планировщика ввода-вывода с несколькими очередями, а именно BFQ (Budget Fair Queuing) и Kyber, предназначенные для повышения производительности систем. Если вы используете Linux 5.2, вы можете даже получить дополнительные улучшения, так как настройки производительности делают время запуска приложения под нагрузкой до 80% быстрее.
До сих пор нам не приходилось видеть BFQ в действии, но Паоло Валенте (Paolo Valente), работающий в Linaro, снял видео с Acer Chromebook 15, показывающее время запуска Google Chrome, используя планировщики mq-deadline и bfq-mq.
Тест включает запись 1,5 ГБ файла на диск с помощью dd и клик по значку Google Chrome, чтобы запустить его. При использовании планировщика mq-deadline запуск Chrome занимает несколько секунд, а при использовании bqf-mq запуск происходит практически мгновенно.
Некоторые заметили, что он не очищает кэш перед вторым запуском с помощью планировщика BFQ, но Паоло объяснил, что это не имеет значения:
Во-первых, я выполнил этот тест, удаляя кеши, а затем обнаружил, что результаты не изменяются относительно отбрасывания или не отбрасывания. Поэтому, опасаясь показаться слишком педантичным, я не повторял тест, который я уже записал.
Посмотреть демо – это хорошо, но нам бы хотелось опробовать его в своих системах и увидеть, как он работает. Мы используем Ubuntu 18.04.3 LTS с Linux 5.0.0.
1 2 3 |
cd /sys/block/sda/queue/ cat scheduler [mq-deadline] none |
Почему-то у нас есть только вариант mq-deadline? Ubuntu Wiki объясняет, как включить планировщики с несколькими очередями:
1 2 |
sudo modprobe bfq-iosched sudo modprobe kyber-iosched |
Теперь у нас есть доступ к kybr и bfq:
1 2 |
cat scheduler [mq-deadline] kyber bfq none |
Мы точно не знаем как включить bfq-mq, как в демо-версии Chromebook. Тем не менее, если вы хотите включить bfq, просто выполните следующую команду:
1 |
echo "bfq" | sudo tee /sys/block/sda/queue/scheduler |
Убедитесь, что планировщик включен:
1 2 |
cat scheduler mq-deadline kyber [bfq] none |
Все готово. Мы провели не много испытаний. Предоставим полную информацию после того, как протестируем устройство более длительное время. Если вы уже проверили устройство, пожалуйста, напишите о вашем опыте.
Также может быть полезно прочитать «Лучший планировщик ввода/вывода» со страницы Wiki Ubuntu, на которую есть ссылка, поскольку «deadline» является рекомендуемым планировщиком для практически всех случаев использования.
Выражаем свою благодарность источнику с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.