Linux готує eBPF для створення планувальників завдань

Linux

Estamos через кілька днів після виходу стабільної версії Linux 6.10, версія, яка включатиме низку досить цікавих змін, а також значні покращення щодо підтримки пристроїв, функцій тощо.

Згодом ми будемо говорити про цей випуск, оскільки причина для цієї статті полягає в посиланні на наступну очікувану версію Linux, яка є "Linux 6.11", у випуску якої були випущені деякі зміни, про які я згадую достатньо часу, я хотів би розглянути їх в іншій публікації.

Добре, а тепер переходимо до суті статті, яка є посилання на оголошення Лінуса Торвальдса про їхнє бажання включити в ядро ​​Linux 6.11, деякі патчі, які реалізують механізм “sched_ext” (SCX).

Цей механізмабо призначений для використання eBPF для створення планувальників процесора в ядрі Linux. Ось короткий опис того, як це буде працювати:

  • Програмісти eBPF і CPU: За допомогою eBPF планувальники ЦП можна динамічно завантажувати та виконувати в ядрі Linux. Компіляція Just-In-Time (JIT) перетворює байт-код eBPF у машинні інструкції для виконання.
  • Клас SCHED_EXT: Це новий клас програмування, пріоритет виклику ядра якого є серед класів SCHED_IDLE і SCHED_NORMAL. Пов'язані драйвери BPF SCHED_EXT може обробляти завдання, які мають нижчий пріоритет, ніж виконання в реальному часі, не впливаючи на завдання, які вже підключені до звичайного планувальника SCHED_NORMAL.
  • Операція: Драйвери BPF аналізують черги завдань, які очікують на виконання на ЦП, і вибирають, яке завдання призначити, коли ядро ​​ЦП звільняється. Якщо в ньому немає активних драйверів BPF SCHED_EXT, завдання обробляються за допомогою планувальника SCHED_NORMAL.
  • Переваги: Механізм sched_ext сприяє динамічному експериментуванню з різними техніками та стратегіями програмування. Це дозволяє швидко створювати функціональні прототипи програмістів і замінювати їх на льоту у виробничих середовищах. Наприклад, його можна налаштувати відповідно до конкретних характеристик програми та змінити стратегію планування на основі стану системи та інших факторів.

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

Крім того, зазначається, що на даний момент базується приблизно десяток програмістів "sched_ext", кожна з яких має логіку планування завдань, визначену в просторі користувача та завантажену в ядро ​​за допомогою програм BPF.

  1. scx_layered: гібридний планувальник, який розділяє завдання на рівні, кожен із яких має власну стратегію планування. Дозволяє призначати певні завдання певним рівням із гарантованими ресурсами ЦП або підвищувати пріоритет окремих програм. Розроблено Meta, його логіка простору користувача написана на Rust.
  2. scx_rustland: оптимізовано для встановлення пріоритету інтерактивних завдань над завданнями, що інтенсивно використовують ЦП. Наприклад, він покращує FPS у грі Terraria під час паралельної компіляції ядра порівняно зі стандартним планувальником EEVDF. Розроблено співробітником Canonical з логікою в Rust.
  3. scx_lavd: Реалізує алгоритм LAVD (Latency-criticality Aware Virtual Deadline), зменшуючи затримку в комп’ютерних іграх та інтерактивних завданнях, враховуючи доцільність зменшення затримок і прогрес процесу. Розроблено Igalia та Valve, з логікою в Rust.
  4. scx_rusty, scx_rlfifo, scx_mitosis: Планувальники, які балансують групи завдань на основі навантаження, реалізують простий планувальник FIFO та прив’язують групи завдань до ядер ЦП. Усі з компонентами Rust.
  5. scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland: Приклади програмістів із компонентами C, що демонструють різні можливості «sched_ext».

Насамкінець варто додати, що Google експериментує з використанням власного фреймворку, ghOSt, щоб впливати на рішення планувальника завдань за допомогою програм BPF, і розпочав перенесення ghOSt на sched_ext. Крім того, Google розробляє порт «sched_ext» для ChromeOS.

Фуенте: https://lkml.org


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.