The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В ядре Linux появится возможность использования eBPF для создания планировщиков задач

12.06.2024 13:42

Линус Торвальдс выразил готовность принять в состав ядра Linux 6.11, релиз которого ожидается в конце сентября, патчей с реализацией механизма "sched_ext" (SCX), позволяющего использовать eBPF для создания планировщиков CPU, охватывающих практически все аспекты планирования выполнения задач и распределения ресурсов CPU. Подобные планировщики могут загружаться динамически и выполняться внутри ядра Linux в виртуальной машине eBPF, в которой, благодаря применению JIT-компиляции, байткод транслируется в машинные инструкции и выполняется с производительностью скомпилированного кода.

Предложенные патчи реализуют новый класс планирования SCHED_EXT, для которого выставлен приоритет вызова ядром между классами SCHED_IDLE и SCHED_NORMAL, что не позволяет в BPF-обработчиках, привязанных к SCHED_EXT, повлиять на задачи, уже прикреплённые к штатному планировщику задач (SCHED_NORMAL), но даёт возможность прикрепления к SCHED_EXT отдельных задач или перемещения для обработки с его помощью всех процессов, имеющих приоритет ниже выполнения в режиме реального времени. Если к SCHED_EXT не привязаны BPF-обработчики, то все процессы, перемещённые в класс SCHED_EXT, будут обрабатываться при помощи планировщика SCHED_NORMAL. Работа BPF-обработчиков сводится с разбору очередей задач, ожидающих выполнения на CPU (одна глобальная очередь и по одной очереди на ядро CPU), и выбора задачи, которой следует предоставить ресурсы CPU при освобождении очередного ядра CPU.

Механизм sched_ext упрощает создание специфичных для определённых задач планировщиков, даёт возможность экспериментировать с различными техниками и стратегиями планирования, а также позволяет быстро создавать рабочие прототипы и заменять планировщики на лету в рабочих инфраструктурах. Например, при помощи sched_ext можно создать планировщик, учитывающий специфику определённого приложения и динамически меняющий стратегию планирования его выполнения в зависимости от состояния системы и каких-то дополнительных факторов.

В настоящее время уже развивается около десятка планировщиков на базе sched_ext, логика планирования задач в которых определяется в пространстве пользователя и загружается в ядро в форме BPF-программ:

  • scx_layered - гибридный планировщик задач, разделяющий задачи на слои, для каждого из которых применяется своя стратегия планирования. Например, scx_layered позволяет выделить в отдельный слой некоторые задачи, для которых будет предоставлены определённые гарантированные ресурсы CPU, или повысить приоритет отдельных приложений. Планировщик развивается компанией Meta. Работающая в пространстве пользователя логика генерации BPF написана на языке Rust.
  • scx_rustland - планировщик оптимизирован для повышения приоритета интерактивных задач на фоне задач, интенсивно нагружающих CPU. Например, в тесте запуска игрового приложения Terraria одновременно со сборкой ядра планировщик scx_rustland позволил добиться в игре более высокого FPS, чем при использовании штатного планировщика EEVDF. Проект развивается сотрудником компании Canonical. Работающая в пространстве пользователя логика генерации BPF написана на языке Rust.
  • scx_lavd - реализации алгоритма планирования задач LAVD (Latency-criticality Aware Virtual Deadline), учитывающего актуальность снижения задержек для конкретных задач и использующего информацию о ходе выполнения процессов при принятии решений о распределении ресурсов CPU. Планировщик развивается компаниями Igalia и Valve для снижения задержек в компьютерных играх и интерактивных задачах. Работающая в пространстве пользователя логика генерации BPF написана на языке Rust.
  • scx_rusty, scx_rlfifo, scx_mitosis - примеры планировщиков с компонентами в пространстве пользователя на языке Rust, реализующие балансировку между группами задач в зависимости от нагрузки, простейший FIFO-планировщик и планировщик для привязки групп задач к ядрам CPU.
  • scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland - примеры планировщиков c компонентами в пространстве пользователя на языке Си, иллюстрирующие различные возможности sched-ext.

Изначально механизм sched_ext был предложен для рассмотрения разработчиками ядра в 2022 году, после чего было опубликовано шесть редакций патча. Несмотря на отсутствие поддержки в основном составе ядра, для дистрибутивов Ubuntu, Arch Linux, Fedora и NixOS предоставлена возможность установки sched_ext через дополнительные пакеты. Компания Canonical рассматривает возможность включения компонентов sched-ext в состав Ubuntu 24.10, а компания Valve работает над интеграцией sched_ext в Steam Deck. В компании Meta планировщик на базе sched_ext уже применяется в рабочей инфраструктуре.

Компания Google экспериментирует с использованием собственного фреймворка ghOSt, позволяющего влиять на решения планировщика задач при помощи BPF-программ. В настоящее время началась работа по портированию ghOSt на sched_ext. Google также развивает порт sched_ext для ChromeOS с намерением использовать его для задействования гибридного планировщика scx_layered для сокращения задержек без использования расширений для работы в режиме реального времени. Компания Oculus развивает порт sched_ext для Android.

Дополнение: интеграция sched_ext в ядро отложена до версии 6.12.

  1. Главная ссылка к новости (https://lwn.net/Articles/97800...)
  2. OpenNews: Использование BPF-программ для решения проблем в устройствах ввода
  3. OpenNews: Netflix опубликовал код утилиты bpftop
  4. OpenNews: Проект bpftime развивает реализацию eBPF, работающую в пространстве пользователя
  5. OpenNews: BumbleBee - инструментарий для упрощения создания и распространения eBPF-программ
  6. OpenNews: В состав GCC принят бэкенд для компиляции в eBPF
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61354-sched_ext
Ключевые слова: sched_ext, bpf, krenel, scheduler
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (58) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 14:01, 12/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Шикарно! Теперь можно и самому побыть немного создателем BFS, BMQ или MuQSS!
     
     
  • 2.24, Oe (?), 17:57, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • –9 +/
    Ура, теперь звук будет заикаться при выполнении жабаскрипта в браузере. А, уже, pipewire.
     
     
  • 3.36, Аноним (36), 22:23, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Адепт коры дуба?
     

  • 1.2, Rev (ok), 14:03, 12/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –16 +/
    Как будто всё самое лучшее сейчас уже пишется на Rust. Круто!
     
     
  • 2.5, Аноним (5), 14:32, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > Как будто

    Вот именно. И никогда не дописывается.

     
  • 2.7, Аноним (7), 14:33, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    "Как будто"  - это объективная оценка почти всего, что пишется на Rust.
     
     
  • 3.17, Bottle (?), 15:49, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    За исключение Libreddit. Хорошая была штука.
     

  • 1.3, Аноним (-), 14:27, 12/06/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +3 +/
     
     
  • 2.6, Аноним (6), 14:33, 12/06/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 3.12, Аноним (-), 14:48, 12/06/2024 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 4.14, bOOster (ok), 14:54, 12/06/2024 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
     
  • 5.15, Аноним (-), 14:58, 12/06/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 6.23, Аноним (23), 17:30, 12/06/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 7.25, Аноним (-), 18:00, 12/06/2024 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
  • 3.16, Аноним (-), 15:23, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > "появится" "в конце сентября" как обычно сказки про переписывание фаерфокса.

    Это ты просто не знаешь как быстро заходят изменения в ядро.
    То что их начали ревьювить значит что там уже всё написано, протестировано и готово к мерджу.
    И смерджено оно должно быть задолго до сентября, потому что должно попасть в merge window.
    А сам процесс может затянуться на долго, поэтому не удивлюсь если перенесут в следующее ядро.

     
     
  • 4.21, Аноним (6), 17:25, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это просто все знают что программисты на расте умеют только комментарии на опеннете писать.
     
     
  • 5.31, Аноним (-), 19:10, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > программисты на расте умеют только комментарии на опеннете писать

    Они тут вообще есть, это программисты? Ну хоть на чем-то?
    Потому что тут была пара персонажей с репами, один сишник-самоучка, и один зиганутый.
    А остальные - одминчики, которые кроме башпортянки ничего написать не могли. Вроде еще кто-то наперить мог.

     
  • 2.11, laindono (ok), 14:41, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Вообще довольно интересный вопрос, кто все эти люди. Могу предположить, что это крестовики, у которых (в очередной раз) отнимают хлеб и админы, у которых что-то непривычное в логах возникло и они пищат.
     
     
  • 3.13, Аноним (-), 14:54, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Думаю раз тема про ядро, то это сишники, навыки которых "я знаю 193 UB в С99" становятся вообще нафиг не нужными, и которых можно заменить на вчерашнего ГОшника.
    Ну и сидеть на саппорте какой-то слождно либы выгребая CVE и ошибки памяти годами уже тоже не получится.

    Насчет вторых согласен, у плюсовиков есть неилюзорный шанс пойти мести улицы, тк например у гугла растовые команды в 2 раза эфективнее чем плюсовые.

    Еще сюда можно добавить идейных хейтеров, которые раст в глаза не видели, но им просто неприятна сама мысль что где-то в ядре будет зависимость.

    Ну и последние - это просто мимокрокодилы которым весело устраивать сарч.

     
     
  • 4.22, Аноним (6), 17:26, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В 2 раза больше попугаев. Когде что-нибудь напишут приходи показывай вместе посмеёмся.
     
     
  • 5.26, Советский инженер (ok), 18:28, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > приходи показывай ...

    усторойся в гугол и посмотри

     
     
  • 6.27, Аноним (6), 18:47, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Уже ничего нет. Что я делаю не так. Может в твоём НИИ стены токсичной краской покрасили и у тебя приход?
     
     
  • 7.33, Советский инженер (ok), 20:02, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Уже ничего нет. Что я делаю не так.

    ты так и не устроился в гугл.

     
  • 3.49, n00by (ok), 11:49, 13/06/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > крестовики, у которых (в очередной раз) отнимают хлеб

    Поверь, кто смог несколько раз осилить стандарты (их было несколько) в 2000 страниц, тому плевать на синтаксис и прочие "аргументы" против Rust. Если потребуется, не долго изучить и это. Другое дело, что стандарт плюсов мало кто читал, а у Rust его пока вообще нет.

     

  • 1.4, Аноним (4), 14:28, 12/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Вероятно, всякие гуглы и фейсбуки уже написали NUMA aware алгоритмы для высоких нагрузок, оптимально раскидывающие всякие постгресы и haproxy по сокетам, но в публичный доступ будут выкладывать только простенькие алгоритмы общего назначения.
     
     
  • 2.8, Аноним (6), 14:34, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты ещё вспомни что они сервера сами для себя производят, а налево не продают.  
     
     
  • 3.10, Аноним (-), 14:38, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ̶Н̶у̶р̶г̶а̶л̶и̶е̶в̶ Столлман разрешил (с)
    ЖоПЛ не заставляет выкладывать код, если ты его написал для "внутреннего использования".
    Раз все согластно букве лицензии, то недовольные могут перейти на Хурд.
     
     
  • 4.43, Аноним (43), 07:47, 13/06/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    GPL вообще не заставляет выкладывать код, если что. GPL заставляет предоставлять код конечному пользователю, и всё.

    Если твой покупатель не раздаёт бинарники, то и код не обязан раздавать.

     
  • 2.9, Аноним (-), 14:35, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А зачем на десктопе "алгоритмы для высоких нагрузок"?
    Там где оно надо, пусть и применяется.
    Не думаю что в ядро нужно тащить узкоспециализированные алгоритмы.
     
     
  • 3.18, Аноним (18), 16:06, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ядрож на серверах бывает. Плюс товарищам учёным, которые настоящие учёные, полезно. А от это профит вообще всем.
     
     
  • 4.19, Аноним (-), 16:29, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Во-1х не все серваки прям высоко нагруженные Для какого-то подкроватного почтов... большой текст свёрнут, показать
     
  • 4.35, Аноним (35), 22:05, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Товарищи учёные могут сами написать планировщик под свои задачи. Что за коммунистические замашки чужое превратить в "народное"?
     
  • 2.28, Аноним (6), 18:48, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Написали но вся их оптимизация заключается в переоптимизации под себя и усложнение роду ради 1% скорости. В том же Яндексе такая же фигня например.
     
     
  • 3.30, Аноним (-), 19:07, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > вся их оптимизация заключается в переоптимизации под себя

    Ну а под кого они должны оптимизировать? Под конкурентов? Или под васянов-локалхостников?

    > и усложнение роду ради 1% скорости.

    Если каждый процент тебе экономит килобаксы/сек. - то почему бы и нет?

     

  • 1.29, ДругойАнон (?), 18:49, 12/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В свете смерти закона Мура очень правильная и крутая фича, даешь повышение производительности софта через рационализацию использования ресурсов!
     
     
  • 2.57, Аноним (-), 11:15, 15/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Закон Мура помер, да здравствует Закон Мура. https://spectrum.ieee.org/superconducting-computer

    Ты зря переживаешь по этому поводу, пока потребности в вычислительных мощностях растут, эти мощности будут расти и дешеветь.

     

  • 1.37, Аноним (37), 22:24, 12/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лучше бы планировщик память нормальный сделали. Без 12309. А то даже на 3 вкладках Firefox крашится. И постоянно диск свопит. Хочется просто взять системник и выкинуть в окно, так как из-за кое-каких уродов он превратился в тыкву.
     
     
  • 2.39, Минона (ok), 22:33, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Включи своп в zram, говорят помогает.
     
     
  • 3.40, Аноним (40), 23:22, 12/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да он включён, а толку то от него на "коре дуба", которой из-за кое-кого в мусоре место.
     
     
  • 4.51, n00by (ok), 11:56, 13/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот из-за него и "12309". Ещё небось какой-нибудь автономный дистрибутив, где в конфиге ядра навключено что попало, а потом ещё наложены патчи "против 12309".
     
     
  • 5.53, Аноним (53), 06:23, 14/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Именно. Память в swap, потом swap опять в память, и всё это ещё постоянно через архивацию проходит. Естественно, у него всё тормозит как не в себя.

    Тот, кто придумал в 2020 году проталкивать линуксоидам "swap в zram", сейчас, небось, необычайно веселится, ибо продал на первый взгляд умным людями "расширитель памяти", сделанный по принципам himem.sys

     
     
  • 6.54, n00by (ok), 11:17, 14/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Например, mikhailnov на полном серьёзе это делает, заодно накатывает патч, делающий невыгружаемыми 256 мегабайт (что бы можно было подключиться по ssh в момент зависания и поубивать лишнее). За подобное отношение к NonPagedPool в ядре NT сразу получают животворящего пендаля. На каких-то одноплатниках ZRAM может иметь смысл, а в моих тестах даже самый замедленный Phison S11 проглатывал 10+ Гиг в подкачку, когда все ядра были загружены под 100%, и кино при этом не заикалось. Пока не включил вон ту дрянь.
     
     
  • 7.63, Минона (ok), 22:44, 16/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Например, mikhailnov на полном серьёзе это делает, заодно накатывает патч, делающий невыгружаемыми
    > 256 мегабайт (что бы можно было подключиться по ssh в момент
    > зависания и поубивать лишнее). За подобное отношение к NonPagedPool в ядре
    > NT сразу получают животворящего пендаля. На каких-то одноплатниках ZRAM может иметь
    > смысл, а в моих тестах даже самый замедленный Phison S11 проглатывал
    > 10+ Гиг в подкачку, когда все ядра были загружены под 100%,
    > и кино при этом не заикалось. Пока не включил вон ту
    > дрянь.

    Для убивания лишнего есть оом-киллер.

     
     
  • 8.65, n00by (ok), 11:03, 17/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Совершенно внезапно ему может потребоваться вытащить пару страниц из подкачки, а... текст свёрнут, показать
     
  • 6.60, Tron is Whistling (?), 21:57, 15/06/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    himem-то тут при чём, хосспаде? Он не для этого совершенно.
     
  • 3.50, n00by (ok), 11:55, 13/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я включал своп в zram с противоположной целью - что бы воспроизвести этот мифический 12309.
     
     
  • 4.62, Минона (ok), 22:39, 16/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Я включал своп в zram с противоположной целью - что бы воспроизвести
    > этот мифический 12309.

    Получилось?

     
     
  • 5.66, n00by (ok), 11:07, 17/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Я включал своп в zram с противоположной целью - что бы воспроизвести
    >> этот мифический 12309.
    > Получилось?

    Да, именно после переноса подкачки в ZRAM и получилось воспроизвести. Помимо этого пришлось ещё и ядро собрать со всеми ненужными в релизе опциями из того дистрибутива, где воспроизводили (с ними начало заикаться видео, но всё же система справлялась и дольше секунды зависала редко).

     
  • 2.52, Аноним (52), 01:36, 14/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А они не умеют. Смогли только сделать для тебя штуку, чтобы удобнее тестировать алгоритмы. Теперь уж точно ничего не мешает тебе показать всем как надо.
     

  • 1.38, Минона (ok), 22:31, 12/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > одна глобальная очередь и по одной очереди на ядро CPU

    У стрекозы сперли или у фряхи?

     
  • 1.41, Вы забыли заполнить поле Name (?), 00:17, 13/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    - Вы и мои программы за меня планировать будете?
    - Ага!

    (с) двое из ларца

     
  • 1.44, Аноним (44), 09:23, 13/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    но зачем ? люди которые знают как и зачем сделать планировщик сделают его на Си. А остальным нечего туда влазить
     
     
  • 2.47, Аноним (47), 09:56, 13/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И будут охреневать каждые два месяца, пытаясь сохранить его работоспособность и портировать под все изменения в каждой новой версии ядра. И ещё будут счастливы, что для каждого изменения придётся перекомпилировать и обновлять ядро. Про то как они будут его тестировать и думать страшно.

    В "sched_ext" из userspace скомпилил в BPF, на лету загрузил в работающее ядро, протестировал на отдельной группе процессов, если что-то не так, убрал из ядра, поправил, загрузил опять. Как только все стало нормально перевёл на него все процессы.  Генерировать BPF можно хоть скриптом на Python.
    Мечта оптимизаторов и экспериментаторов.

     
     
  • 3.56, pavlinux (ok), 15:55, 14/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > из userspace скомпилил в BPF, на лету загрузил в работающее ядро,

    В BPF подсистеме, с момента своего появления, каждый месяц CVE дыры находят.
    Для файзеров, BPF - это Клондайк дыр: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=BPF

    Если в системе крутятся какие-то секурные данные, эту xpeнь отрубать надо  

     

  • 1.45, Аноним (44), 09:38, 13/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Это какой-то комплекс неполноценности иил как это назвать?
    зачем во всех названиях присутствует это слово ? )))
     
  • 1.48, Омномномном (?), 10:24, 13/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    В кои-то веки внатуре важное в ядре, очень неплохо.

    Тугодумам не понимающим зачем "которые знают как и зачем сделать планировщик сделают его на Си" прописывают читать статью не менее пятнадцати раз с последующим письменным конспектированием усвоенного.

     
     
  • 2.64, 1 (??), 09:32, 17/06/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Хуцкеры в восторге !

    Это раньше надо было извращаться чтоб процесс замаскировать в выводе ps. А теперь "Пожалуйте сразу в ядро господа !".

     

  • 1.55, pavlinux (ok), 15:50, 14/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ждëм AI генератор кода Раста :)
     
  • 1.61, Аноним (61), 17:45, 16/06/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А онлайн-игры на eBPF можно писать?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру