Návod na používanie sched-ext
Extensible Scheduler Class, alebo lepšie známy ako sched-ext
, je funkcia Linuxového jadra, ktorá umožňuje implementáciu plánovačov kernelových vlákien v BPF (Berkeley Package Filter) a ich dynamické načítavanie. V podstate to umožňuje koncovým používateľom meniť svoje plánovače v používateľskom priestore bez potreby zostavovať ďalšie jadro len kvôli odlišnému plánovaču.
Metódy na spustenie a správu plánovačov
- Plánovače sa nachádzajú v balíkoch
scx-scheds
ascx-scheds-git
.
Spustenie plánovača v termináli
- Ak chcete spustiť plánovač, otvorte terminál a zadajte nasledujúci príkaz:
Týmto sa spustí plánovač rusty a odpojí sa predvolený plánovač.
Ak chcete zastaviť plánovač. Stlačte CTRL + C
a plánovač sa zastaví a predvolený plánovač jadra sa opäť ujme správy.
Služba systemd
Balík scx obsahuje službu systemd, ktorá používa konfiguráciu uvedenú v súbore /etc/default/scx
.
V tomto konfiguračnom súbore môžete určiť plánovač, ktorý služba spúšťa, a voliteľne zahrnúť vlastné príznaky pre požadovaný plánovač.
-
Ak chcete zmeniť plánovač spúšťaný službou, jednoducho upravte riadok
SCX_SCHEDULER=
na plánovač, ktorý chcete štandardne spúšťať. -
Pridávanie príznakov
- Odkomentujte
SCX_FLAGS
a pridajte požadované príznaky.
- Odkomentujte
Teraz môžete spúšťať/povoliť/zastaviť plánovač, akoby to bola akákoľvek iná služba systemd.
Nižšie nájdete stručný návod, ako ju spravovať.
Viac informácií o tejto službe: Služba Sched-ext systemd
scx_loader
Ako už názov napovedá, ide o nástroj, ktorý funguje ako loader a správca pre framework sched-ext pomocou rozhrania D-Bus.
Hoci nevyžaduje systemd, stále sa dá používať v spojení s ním. Pozrite si prechodový sprievodca pre referenciu)
- Má schopnosť zastaviť, spustiť, reštartovať, čítať informácie o scx plánovači a ďalšie.
- Na komunikáciu s ním môžete použiť nástroje ako
dbus-send
alebogdbus
.
- Na komunikáciu s ním môžete použiť nástroje ako
- Tento návod vysvetľuje, ako používať scx_loader s príkazom dbus-send.
CachyOS Kernel Manager
Plánovače scx sú prístupné a konfigurovateľné pomocou úplne nového scx_loader.
Úvod do hlavných plánovačov
Keďže existuje mnoho plánovačov, z ktorých si môžete vybrať, chceme vám poskytnúť stručný úvod do dostupných plánovačov.
Neváhajte nahlásiť akékoľvek problémy alebo spätnú väzbu na ich GitHub, na ktorý sa odkazuje nižšie.
scx_bpfland
Vyvinutý: Andrea Righi (arighi GitHub)
Plánovač sched_ext
založený na vruntime
, ktorý uprednostňuje interaktívne pracovné zaťaženia. Vysoko flexibilný a ľahko prispôsobiteľný.
Bpfland pri rozhodovaní o tom, ktoré jadrá použiť, berie do úvahy ich rozloženie vyrovnávacej pamäte a ktoré jadrá zdieľajú rovnakú vyrovnávaciu pamäť L2/L3, čo vedie k menšiemu počtu zlyhaní vyrovnávacej pamäte = vyšší výkon.
Prípady použitia:
- Hranie hier
- Používanie desktopu
- Produkcia multimédií/zvuku
- Skvelá interaktivita pri intenzívnych pracovných zaťaženiach
- Úspora energie
- Serverové pracovné zaťaženia
scx_flash
Vyvinutý: Andrea Righi (arighi GitHub)
Plánovač, ktorý sa zameriava na zabezpečenie spravodlivosti medzi úlohami a predvídateľnosti výkonu. Tento plánovač je predstavený ako náhrada režimu “lowlatency” v scx_bpfland.
Prípady použitia:
- Hranie hier
- Pracovné zaťaženia citlivé na latenciu, ako sú multimédiá alebo spracovanie zvuku v reálnom čase
- Potreba odozvy v preťažených situáciách
- Konzistencia vo výkone
scx_lavd
Vyvinutý: Changwoo Min (multics69 GitHub).
Stručný úvod do LAVD od Changwoo:
LAVD je nový algoritmus plánovania, ktorý sa stále vyvíja. Je motivovaný hernými pracovnými zaťaženiami, ktoré sú kritické z hľadiska latencie a náročné na komunikáciu. Jeho cieľom je minimalizovať špičky latencie pri zachovaní celkovo dobrej priepustnosti a spravodlivého využívania času CPU medzi úlohami.
Prípady použitia:
- Hranie hier
- Produkcia zvuku
- Pracovné zaťaženia citlivé na latenciu
- Používanie desktopu
- Skvelá interaktivita pri intenzívnych pracovných zaťaženiach
- Úspora energie
Jednou z hlavných a skvelých schopností, ktoré LAVD obsahuje, je Core Compaction, čo bez technických detailov znamená: Keď je využitie CPU < 50 %, aktuálne aktívne jadrá budú bežať dlhšie a na vyššej frekvencii. Medzitým nečinné jadrá zostanú v stave C-State (Spánok) oveľa dlhšie, čím sa dosiahne nižšia celková spotreba energie.
scx_rusty
Vyvinutý: David Vernet (Byte-Lab GitHub)
Rusty ponúka širokú škálu funkcií, ktoré rozširujú jeho možnosti a poskytujú väčšiu flexibilitu pre rôzne prípady použitia. Jednou z týchto funkcií je laditeľnosť, ktorá vám umožňuje prispôsobiť Rusty tak, aby vyhovoval vašim preferenciám a špecifickým požiadavkám.
Prípady použitia:
- Hranie hier
- Pracovné zaťaženia citlivé na latenciu
- Používanie desktopu
- Produkcia multimédií/zvuku
- Pracovné zaťaženia citlivé na latenciu
- Skvelá interaktivita pri intenzívnych pracovných zaťaženiach
- Úspora energie
Ak sa chcete podrobnejšie pozrieť na to, čo sa dá pre Rusty ladiť. Pozrite si stránku s pomocou
Všeobecné odporúčania
LAVD Autopilot & Autopower
Citáty od Changwoo Min:
-
V režime autopilot plánovač upravuje svoj režim napájania
Powersave, Balanced alebo Performance
na základe zaťaženia systému, konkrétne využitia CPU. -
Autopower: Automaticky rozhoduje o režime napájania plánovača na základe energetického profilu systému, t. j. EPP (Energy Performance Preference).
Zakázanie ananicy-cpp
Ak chcete zakázať/zastaviť ananicy-cpp, spustite nasledujúci príkaz:
Prechod zo scx.service na scx_loader: Komplexný sprievodca
Najprv začnime s podrobným porovnaním štruktúry súboru scx.service oproti štruktúre konfiguračného súboru scx_loader.
Ak ste predtým mali spustený LAVD so starou službou scx.service, ako je tento príklad nižšie:
Potom bude ekvivalent v konfiguračnom súbore scx_loader vyzerať takto:
Viac informácií o tom, ako nakonfigurovať súbor scx_loader
Pre jednoduchý prechod zo systemd služby scx
na nový nástroj scx_loader
postupujte podľa nižšie uvedeného sprievodcu.
-
- Hotovo, scx_loader teraz načíta a spustí požadovaný plánovač.
Ladenie v scx_loader
- Rozšírené protokolovanie
Ak chcete získať podrobnejší denník, postupujte podľa týchto krokov.
- Znova skontrolujte denníky, kde nájdete podrobnejšie informácie na ladenie.
FAQ
Prečo plánovač X funguje horšie ako ostatné?
- Pri ich porovnávaní treba zvážiť mnoho premenných. Napríklad, ako merajú váhu úlohy? Uprednostňujú interaktívne úlohy pred neinteraktívnymi? V konečnom dôsledku to závisí od ich konštrukčných rozhodnutí.
Prečo všetci hovoria, že tento plánovač X je najlepší pre prípad X, ale pre mňa nefunguje tak dobre?
- Rovnako ako v predchádzajúcej odpovedi, výber CPU a jeho konštrukcia, ako je rozloženie jadier, spôsob zdieľania vyrovnávacej pamäte medzi jadrami a ďalšie súvisiace faktory, môžu viesť k menej efektívnemu fungovaniu plánovača.
- Preto je jednou z hlavných výhod frameworku sched-ext možnosť výberu, takže sa nebojte vyskúšať niektorý a zistiť, ktorý najlepšie vyhovuje vášmu prípadu použitia.
Príklady: stabilita fps, maximálny výkon, odozva pri intenzívnych pracovných zaťaženiach atď.
Prípady použitia týchto plánovačov sú si dosť podobné… prečo je to tak?
-
Primárne preto, že sú to viacúčelové plánovače, čo znamená, že dokážu zvládnuť rôzne pracovné zaťaženia, aj keď v každej oblasti nemusia vynikať.
-
Ak chcete zistiť, ktorý plánovač vám najviac vyhovuje, neexistuje lepšia rada, ako si ho sami vyskúšať.
Chýba mi plánovač, o ktorom sa niektorí používatelia zmieňujú alebo ho testujú na serveri CachyOS Discord
Uistite sa, že používate vývojovú verziu balíka scx-scheds s názvom scx-scheds-git
- Jedným z dôvodov bude, že tento plánovač je veľmi nový a používatelia ho v súčasnosti testujú, preto ešte nebol pridaný do balíka
scx-scheds-git
.
Prečo sa plánovač zrazu zrútil? Je nestabilný?
- Môže existovať niekoľko dôvodov, prečo sa to stalo:
- Jedným z najčastejších dôvodov je, že ste používali ananicy-cpp spolu s plánovačom. Preto sme pridali toto upozornenie
- Ďalším dôvodom by mohlo byť, že pracovné zaťaženie, ktoré ste spúšťali, prekročilo limity a kapacitu plánovača, čo spôsobilo jeho zastavenie.
- Príklad nerozumného pracovného zaťaženia:
hackbench
- Príklad nerozumného pracovného zaťaženia:
- Alebo очевидnejší dôvod, našli ste chybu v plánovači, ak áno. Nahláste ju ako problém v ich GitHub alebo im dajte vedieť
o tom na kanáli CachyOS Discord
sched-ext
Predtým som používal scx_loader v GUI Kernel Manager. Musím ešte postupovať podľa krokov prechodu?
- V tomto konkrétnom prípade to nie je potrebné, pretože Kernel Manager už spracováva proces prechodu.
- Pokiaľ ste predtým nepridali vlastné príznaky v
/etc/default/scx
a stále ich chcete používať.
- Pokiaľ ste predtým nepridali vlastné príznaky v
Získajte viac informácií
Ak sa chcete dozvedieť viac o frameworku sched-ext. Pozrite si odkazy uvedené nižšie.