SCHED_DEADLINE

23.08.2023

SCHED_DEADLINE — планировщик реального времени в ядре Linux, реализует алгоритм планирования по ближайшему сроку завершения (EDF), был добавлен в ядро Linux, начиная с версии 3.14, выпущенной 30 марта 2014.

Ядро Linux содержит несколько типов планировщиков задач. По умолчанию ядро использует полностью справедливый планировщик задач (англ. Completely Fair Scheduler, CFS), впервые появившийся в ядре с версии 2.6.23. Этот планировщик по умолчанию известен так же как SCHED_NORMAL, но ядро так же содержит два планировщика реального времени, именуемых как SCHED_FIFO (realtime first-in-first-out) и SCHED_RR (realtime round-robin), каждый из которых имеет приоритет над планировщиком по умолчанию.

История

Патч периодически передавался сообществу разработчиков ядра через рассылку Linux kernel mailing list. Каждый выпуск приводился в соответствие с последней версией ядра и учитывал замечания к предыдущему выпуску. По мере повышения популярности планировщика к разработке подключилось большее число разработчиков ядра.

Первоначально проект назывался SCHED_EDF и был представлен сообществу разработчиков ядра Linux в 2009. Под этим именем он через несколько недель был представлен Real-Time Linux Workshop. Название было заменено на SCHED_DEADLINE по запросу сообщества разработчиков ядра Linux.

За прошедшие годы были выпущены следующие версии планировщика:

  • Первая версия выпущена 22 сентября 2009 под именем SCHED_EDF.
  • Первая версия после изменения имени на SCHED_DEADLINE была представлена LKML 16 октября 2009.
  • Вторая версия представлена LKML 28 февраля 2010, и содержала первый вариант Deadline Inheritance protocol.
  • Третья версия отправлена в LKML 29 октября 2010. В неё была добавлена поддержка global/clustered multiprocessor scheduling через dynamic task migrations.
  • Четвёртая версия отправлена в LKML 6 апреля 2012, и имела лучшую поддержку rq selection для dynamic task migration и лучшую интеграцию с PREEMPT_RT.
  • Пятая версия отправлена в LKML 23 мая 2012.
  • Шестая версия отправлена в LKML 24 октября 2012.
  • Седьмая версия отправлена в LKML 11 февраля 2013. Разрешение планирования было ограничено до микросекунд (во избежание переполнения), был убран тег RFC.
  • Восьмая версия послана в LKML 14 октября 2013.
  • Девятая версия послана в LKML 7 ноября 2013.
  • Последняя версия принята в основное ядро Linux (номер commit a0fa1dd3cdbccec9597fe53b6177a9aa6e20f2f8), и с этих пор стала частью ядра.

В статьях на сайтах Linux Weekly News и Phoronix утверждалось, что SCHED_DEADLINE могут попасть в основное ядро в самых ближайших релизах. В итоге, после четырёх лет и девяти выпусков патч был принят и включен в основное ядро версии 3.14.

Прочая информация

Проект имеет официальную интернет-страницу. Исходный код доступен публично через GitHub, заменив прежний репозиторий на Gitorious.

На Linux Weekly News, Slashdot, OSNews и LinuxToday появилось несколько посвященных планировщику статей. Также имеется видеозапись, выложенная на YouTube.

SCHED_DEADLINE был так же интегрирована в проект Yocto. Так же был проявлен интерес по включению его в проект Linaro.


Имя:*
E-Mail:
Комментарий: