Почему в Ubuntu 16.04 все планировщики ввода-вывода дисков установлены в "крайний срок"?

Я только что установил Xubuntu 16.04-64bit на второй раздел на моем ноутбуке. Я заметил, что это иногда казалось немного медленным, поэтому я проверил, какой планировщик ввода-вывода он использовал для этого диска, который оказывается deadline для всех дисков. У меня есть пара SSD и жестких дисков, поэтому я знаю, что "крайний срок" лучше всего подходит для SSD и cfq для жестких дисков.

Я загрузился в 14.04 на другом разделе, и он использует cfq для вращающихся приводов и deadline для SSD, как и должно быть. Я тоже заглянул в /etc/udev/rules.d чтобы увидеть, использовало ли 14.04 правило для настройки типа диска, но его там не было, поэтому я предполагаю, что это делает ядро.

Так что мне интересно, если это ошибка или они используют "срок" для всего сейчас?

Обновление: комментарий, который я написал о /etc/udev/rules.d, был ошибкой. Фактически, я использовал правило udev для изменения планировщика (как и в ответе ниже) в соответствии с типом ротации с тех пор, как я начал использовать SSD несколько лет назад. Я думаю, я просто забыл... старею. В любом случае, одна из ссылок, которую я использовал, была вики-оптимизация по Debian SSD.

Не было бы хорошей идеей, если бы оно было включено? Просто предложение!

3 ответа

Решение

С выпуском 14.04 планировщик по умолчанию для ядра 3.13 был изменен с CFQ на Deadline.

Больше нет отдельного серверного ядра, и планировщик CFQ не подходит для многих сценариев использования сервера, например, таймаутов записи KVM. На настольных ПК с USB-устройствами даже наблюдается снижение производительности.

Команда ядра Ubuntu регулярно проводит большой анализ различных смоделированных рабочих нагрузок в разных файловых системах и планировщиках ввода-вывода, чтобы получить представление о лучшем общем планировщике ввода-вывода. Общий ответ заключается в том, что не существует идеального выбора планировщика ввода-вывода для универсальной конфигурации для всех различных типов установок для всех различных типов носителей. Важные моменты, которые следует помнить:

  1. Системы переходят на SSD, поэтому для них лучше всего использовать noop или сроки; У noop меньше ресурсов процессора, чем в срок.

  2. CFQ против Deadline - сложный вызов. CFQ позволяет большую гибкость. Однако мы обнаружили, что для более широкого диапазона операций имитации ввода / вывода крайний срок обеспечил меньшие задержки и немного более высокую пропускную способность, чем CFQ.

  3. Я регулярно тестирую ядра (каждый тест ядра занимает более 3 дней) для ряда файловых систем и планировщиков ввода / вывода. Исходя из этой и других различных данных, мы пытаемся принять обоснованное решение о наилучшем выборе, см.:

http://kernel.ubuntu.com/~cking/fs-tests/

Есть плюсы / минусы для всех планировщиков ввода / вывода, поэтому любое значение по умолчанию не является идеальным, и команда ядра Ubuntu всегда готова внести свой вклад в выбор по умолчанию, если убедительные данные и причины показывают, что мы изменим иначе.

Я не знаю, почему разработчики решили выбрать deadline как планировщик по умолчанию, возможно, это потому, что большинство новых компьютеров поставляются с SSD, на котором обычно устанавливаются системы. Вы можете установить планировщик вручную таким образом, если вы еще не установили его... установить gksu:

Откройте терминал и выполните:

sudo apt install gksu  

Затем выполните эту команду:

gksudo gedit /etc/udev/rules.d/60-schedulers.rules  

Вставьте следующий текст в пустой файл и сохраните измененный файл.

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

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

Другие вопросы по тегам