После почти полутора лет разработки представлена [2] четвёртая версия планировщика задач SCHED_DEADLINE [3], реализующего алгоритм EDF (Earliest Deadline First), основанный на идее выбора для выполнения из очереди ожидающих процессов задачи, наиболее близкой к истечению крайнего расчётного времени (deadline). SCHED_DEADLINE поддерживает обеспечение работы процессов, требующих выполнения операций в режиме реального времени, предоставляя для подобных задач гарантированное время выполнения, независимо от общего количества обслуживаемых процессов, и реализуя возможность резервирования пропускной способности CPU для процессов.
Обычный планировщик задач не способен гарантировать необходимое время выполнения задачи в заданном интервале времени (например, гарантировать выполнение задачи 10 мсек в интервале 100 мсек) из-за того, что переключение между задачами зависит от общего количества обслуживаемых процессов, каждый из которых может выполняться с произвольной задержкой и, таким образом, может задержать выполнение следующей задачи.
Ключевым изменением нового выпуска SCHED_DEADLINE является обеспечение поддержки PREEMPT_RT [4] ветки ядра Linux (3.2.13-rt23) c реализацией режима реального времени, которая используется в real-time редакциях промышленных Linux-дистрибутивов MontaVista, Red Hat и Novell. Несмотря на то, что патчи теперь базируются на ветке PREEMPT_RT, продолжается работа по продвижению разработки в состав основного ядра Linux. Параллельно поддерживается ветка SCHED_DEADLINE2 [5] с патчами для основной ветки ядра Linux.
Кроме того, в новой версии SCHED_DEADLINE улучшен [6] алгоритм выбора очередей выполнения (runqueue) для обеспечения динамической миграции задач на многопроцессорных системах. В частности, реализован эквивалент cpupri для задач, для которых выбран метод планирования deadline (cpudl). Из планов на будущее отмечается реализация средств управления пропускной способностью на основе cgroup. Вместо планирования на основе приоритета и предельного времени (deadline) рассматривается возможность оперирования пропускной способностью.
Дополнительно можно отметить публикацию результатов [7] первого года работы тестовой инфраструктуры для оценки качества работы Linux при выполнении задач реального времени и для постоянного наблюдения за изменением характеристик RT-Linux при выполнении различных нагрузочных сценариев. Целью проекта является организация регулярных проверок новых Linux-ядер и RT-патчей в приближенных к реальным условиях и на широком спектре различных аппаратных платформ. В настоящее время тестовая инфраструктура включает в себя 50 различных аппаратных платформ. Работа тестовой фермы организована консорциумом OSADL (Open Source Automation Development Lab), развивающим решения на базе Linux для промышленной встраиваемой техники и курирующим разработку real-time патчей PREEMPT_RT к Linux ядру.
За год тестирования была накоплена информация о выполнении 73 миллиардов тестовых циклов. Все данные наглядно визуализированы в виде 3D-графиков. Использование логарифмической шкалы позволяет выделить в виде пика даже единичные изменения отзывчивости системы.
Ссылки:
[1] http://htfl.ru/cat-news-novosti-po
[2] /out.php?link=https://lkml.org/lkml/2012/4/6/39
[3] /out.php?link=https://github.com/jlelli/sched-deadline
[4] /out.php?link=http://www.osadl.org/Realtime-Linux.projects-realtime-linux.0.html
[5] /out.php?link=https://github.com/insop/sched-deadline2
[6] /out.php?link=http://retis.sssup.it/%7Ejlelli/papers/Ospert11Lelli.pdf
[7] /out.php?link=https://www.osadl.org/Single-View.111+M516dd7f7d5b.0.html