Представлен новый вариант планировщика задач BFS
16 декабря 2012 года
В списке рассылки разработчиков ядра Linux представлен новый планировщик задач, основанный на коде планировщика BFS (Brain Fuck Scheduler), но отличающийся возможностью использования нескольких очередей выполнения (runqueue). Патчи с реализацией нового планировщика подготовлены для ядра 3.6.2 (в оригинальном BFS несколько дней назад появилась поддержка ядра 3.7).
Планировщик BFS ориентирован на обеспечение оптимальной отзывчивости, интерактивности и пропускной способности при решении типичных пользовательских задач на обычных компьютерах. Основная реализация BFS, поддерживаемая Коном Коливасом (Con Kolivas), манипулирует процессами в рамках одной глобальной очереди задач для всех CPU, что позволяет свести к минимуму паразитную нагрузку от работы планировщика, но приводит к проблемам с масштабируемостью на многоядерных системах (BFS эффективен на системах, имеющих менее 16 ядер). Маттиас Кёлер (Matthias Kohler), автор нового варианта BFS, переработал архитектуру планировщика для обеспечения его оптимальной работы на многоядерных системах.
Суть внесённых изменений сводится к добавлению нескольких очередей выполнения, каждая из которых привязывается к одному или нескольким ядрам CPU и отвечает за планирование выполнения процессов только для указанных ядер CPU. Таким образом, удаётся обойти проблемы с масштабируемостью BFS на системах с большим числом процессорных ядер. Ценой наличия нескольких очередей является необходимость поддержания дополнительных механизмов для балансировки нагрузки между очередями, что снижает эффективность.
В качестве выхода предоставлена возможность гибкой настройки числа очередей, что позволяет выбрать оптимальное число очередей для имеющегося числа процессорных ядер или особенностей рабочей нагрузки на систему. Например, возможно использование одной глобальной очереди как в классическом BFS (для максимальной отзывчивости), использование отдельной очереди для каждого ядра CPU (для максимальной масштабируемости) или привязка одной очереди к паре ядер CPU.
По заявлению автора проекта разработка пока находится на стадии начального прототипа и ещё требует проведения доработки и оптимизации алгоритма балансировки нагрузки. В будущем в проект планируется добавить некоторые возможности из используемого по умолчанию в ядре Linux планировщика CFS, в основном связанные с управлением пропускной способностью и обеспечением минимальных задержек. При этом, разработка сохранит минималистичный характер и как BFS будет содержать гораздо меньше строк кода, чем в CFS.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.