SCHED DEADLINE

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

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

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

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

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

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

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

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

[править | править код]

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

На Linux Weekly News[1][25], Slashdot[26], OSNews[2][27] и LinuxToday[28] появилось несколько посвященных планировщику статей. Также имеется видеозапись, выложенная на YouTube[29].

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

Примечания

[править | править код]
  1. 1 2 [1] Архивная копия от 11 декабря 2014 на Wayback Machine Linux Weekly News, Deadline scheduling for Linux
  2. 1 2 [2] Архивная копия от 11 декабря 2014 на Wayback Machine OSNews, Deadline Scheduling in the Linux Kernel
  3. 1 2 1.1. Deadline scheduling class for better real-time scheduling. Linux kernel 3.14. kernelnewbies.org (30 марта 2014). Дата обращения: 2 апреля 2014. Архивировано 15 января 2021 года.
  4. 1 2 [3] Архивная копия от 4 января 2015 на Wayback Machine Phoronix, The Linux 3.14 Kernel Already Has Many Exciting Features
  5. 1 2 Bar, Moshe The Linux Scheduler. Linux Journal. Дата обращения: 14 апреля 2012. Архивировано 2 февраля 2021 года.
  6. Molnár, Ingo (2007-04-13). "[patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]". linux-kernel (Mailing list). Архивировано 9 октября 2013. Дата обращения: 11 декабря 2014.
  7. 1 2 [4] Архивная копия от 23 декабря 2014 на Wayback Machine Первый выпуск SCHED_DEADLINE (еще названный SCHED_EDF)
  8. [5] Архивная копия от 4 ноября 2013 на Wayback Machine Dario Faggioli, Fabio Checconi, Michael Trimarchi, Claudio Scordino, An EDF scheduling class for the Linux kernel, 11th Real-Time Linux Workshop (RTLW), Dresden, Germany, September 2009.
  9. [6] Архивная копия от 23 декабря 2014 на Wayback Machine Запрос на изменение имени с SCHED_EDF на SCHED_DEADLINE
  10. [7] Архивная копия от 23 декабря 2014 на Wayback Machine First version of SCHED_DEADLINE
  11. [8] Архивная копия от 23 декабря 2014 на Wayback Machine Second version of SCHED_DEADLINE
  12. [9] Архивная копия от 23 декабря 2014 на Wayback Machine Third version of SCHED_DEADLINE
  13. [10] Архивная копия от 23 декабря 2014 на Wayback Machine Fourth version of SCHED_DEADLINE
  14. [11] Архивная копия от 11 декабря 2014 на Wayback Machine Fifth version of SCHED_DEADLINE
  15. [12] Архивная копия от 11 декабря 2014 на Wayback Machine Sixth version of SCHED_DEADLINE
  16. [13] Архивная копия от 11 декабря 2014 на Wayback Machine Seventh version of SCHED_DEADLINE
  17. 1 2 [14] Архивная копия от 11 декабря 2014 на Wayback Machine Eighth version of SCHED_DEADLINE
  18. [15] Архивная копия от 11 декабря 2014 на Wayback Machine Ninth version of SCHED_DEADLINE
  19. [16] Commit merging SCHED_DEADLINE in the mainline kernel
  20. J. Corbet, Deadline scheduling: coming soon?, Linux Weekly News. Дата обращения: 11 декабря 2014. Архивировано 11 октября 2014 года.
  21. [17] Архивная копия от 6 ноября 2014 на Wayback Machine Phoronix, SCHED_DEADLINE To Be Added To Linux 3.14
  22. [18] Архивная копия от 15 декабря 2014 на Wayback Machine Official webpage of SCHED_DEADLINE project
  23. [19] New GitHub public repository
  24. [20] Архивная копия от 27 декабря 2010 на Wayback Machine Previous Gitorious repository
  25. [21] Архивная копия от 11 декабря 2014 на Wayback Machine Linux Weekly News, Adding periods to SCHED_DEADLINE
  26. [22] Архивная копия от 11 декабря 2014 на Wayback Machine Slashdot, Deadline Scheduling Proposed For the Linux Kernel
  27. [23] Архивная копия от 11 декабря 2014 на Wayback Machine OSNews, New Version of SCHED_DEADLINE for Linux Available
  28. [24] Архивная копия от 11 декабря 2014 на Wayback Machine LinuxToday, Adding periods to SCHED_DEADLINE
  29. [25] Архивная копия от 1 ноября 2014 на Wayback Machine SCHED_DEADLINE video on YouTube
  30. [26] Архивная копия от 26 декабря 2014 на Wayback Machine SCHED_DEADLINE on Linaro