Планировщики


Планировщик (scheduler) — это часть ядра, которая определяет, какие задачи и процессы могут получить процессор и в какой последовательности. Это очень важный компонент системы, от которого в значительной степени зависит ее производительность. Правильно выбранный планировщик обеспечивает устойчивую производительность системы, в то время как неправильно выбранный планировщик приводит к существенному снижению производительности, несмотря на то, что процессоры простаивают. Планировщик не может произвольным образом назначать приоритеты: если серверу базы данных дать больший квант времени во время интенсивного выполнения дисковых операций ввода-вывода, это не повысит производительность базы данных, если она ожидает завершения записи на диск. Планировщики должны учитывать типы процессоров, объем памяти, степень нагрузки и другие параметры. На первый взгляд, достаточно просто написать планировщик для конкретного типа нагрузки, но создать планировщик, который работал бы на сервере базы данных, веб-сервере, настольном компьютере и ноутбуке одинаково хорошо, очень сложно.

В операционной системе FreeBSD есть два основных планировщика — 4BSD и ULE. Планировщик 4BSD появился давно, еще в 4.4BSD. Он хорошо зарекомендовал себя за последние несколько десятков лет под различными видами нагрузок. Планировщик показывает достаточную зрелость, однако он плохо подходит для четырехпроцессорных и крупных систем. В операционной системе FreeBSD 7.0 по умолчанию используется планировщик 4BSD, в конфигурации ядра ему соответствует параметр SCHED_4BSD.

Планировщик ULE был специально разработан для многопроцессорных систем, но он показывает неплохие результаты и на однопроцессорных системах. ULE показал существенный прирост производительности в многопроцессорных системах, но у него нет такой долгой истории тестирования и отладки, как у 4BSD. Скорее всего, в недалеком будущем планировщик ULE станет планировщиком по умолчанию (к моменту написания этих строк еще не стал). Активизировать планировщик ULE можно с помощью параметра ядра SCHED_ULE.

Вообще говоря, планировщик ULE обеспечивает более высокую производительность в многопроцессорных системах, где работают такие сложные приложения, как серверы базы данных. Группа разработки FreeBSD использует тесты производительности на основе MySQL и PostgreSQL, и по мнению разработчиков уровень производительности должен совпадать или даже превышать уровень производительности текущей версии Linux*, при использовании одних и тех же тестов на одном и том же аппаратном обеспечении.

Какой планировщик выбрать?

Я рекомендую ULE для всех типов систем. Если с этим планировщиком работа системы ухудшится, сообщите о проблеме и, если нужно, вернитесь к планировщику 4BSD. Ядро может использовать только один планировщик.

Комментарии запрещены.