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_слоест: Хибриден планировчик, който разделя задачите на слоеве, всеки със собствена стратегия за планиране. Позволява ви да възложите определени задачи на конкретни слоеве с гарантирани ресурси на процесора или да увеличите приоритета на отделни приложения. Разработена от Meta, нейната логика на потребителското пространство е написана на Rust.
  2. scx_rustland: Оптимизиран за приоритизиране на интерактивни задачи пред интензивни CPU. Например, той подобрява 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.

Fuente: https://lkml.org


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

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