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
.Terminal window # Stabilná vetvasudo pacman -S scx-scheds# Vývojová vetva (Táto vetva obsahuje najnovšie zmeny# a môže obsahovať plánovač, ktorý ešte nebol vydaný.)sudo pacman -S scx-scheds-git
Spustenie plánovača v termináli
- Ak chcete spustiť plánovač, otvorte terminál a zadajte nasledujúci príkaz:
Príklad spustenia rusty sudo scx_rusty
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ť.-
Príklad SCX_SCHEDULER=scx_lavd
-
-
Pridávanie príznakov
- Odkomentujte
SCX_FLAGS
a pridajte požadované príznaky.Príklad SCX_FLAGS='--performance'
- 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ť.
sudo systemctl enable --now scx
sudo systemctl start scx
sudo systemctl stop scx
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.
-
Spustenie scx_rusty s jeho predvolenými argumentmi dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.StartScheduler string:scx_rusty uint32:0 -
Spustenie plánovača s argumentmi # Tento príklad spúšťa scx_bpfland s nasledujúcimi príznakmi: -k -c 0dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.StartSchedulerWithArgs string:scx_bpfland array:string:"-k","-c","0" -
Zastavenie aktuálne spustenej plánovača dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.StopScheduler -
Prepnutie na iný plánovač v režime 2 dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.SwitchScheduler string:scx_lavd uint32:2# Toto prepne na scx_lavd s režimom plánovača 2, čo znamená, že spustí LAVD v úspornom režime -
Prepnutie na iný plánovač s argumentmi dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.SwitchSchedulerWithArgs string:scx_bpfland array:string:"-k","-c","0" -
Získanie aktuálne spustenej plánovača dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.freedesktop.DBus.Properties.Get string:org.scx.Loader string:CurrentScheduler -
Získanie zoznamu podporovaných plánovačov dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.freedesktop.DBus.Properties.Get string:org.scx.Loader string:SupportedSchedulers
-
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
scx_rusty --help
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).
# Autopower sa dá aktivovať nasledujúcim príznakom:--autopower# napr.:scx_lavd --autopower
Zakázanie ananicy-cpp
Ak chcete zakázať/zastaviť ananicy-cpp, spustite nasledujúci príkaz:
systemctl disable --now ananicy-cpp
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:
# Zoznam scx_plánovačov: scx_bpfland scx_central scx_flash scx_lavd scx_layered scx_nest scx_qmap scx_rlfifo scx_rustland scx_rusty scx_simple scx_userlandSCX_SCHEDULER=scx_lavd
# Nastavenie vlastných príznakov pre plánovačSCX_FLAGS='--performance'
Potom bude ekvivalent v konfiguračnom súbore scx_loader vyzerať takto:
default_sched = "scx_lavd"default_mode = "Auto"
[scheds.scx_lavd]auto_mode = ["--performance"]
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.
-
Zakázanie scx.service v prospech scx_loader.service systemctl disable --now scx.service && systemctl enable --now scx_loader.service -
Vytvorenie konfiguračného súboru pre scx_loader a pridanie predvolenej štruktúry # Editor Micro vytvorí nový súbor.sudo micro /etc/scx_loader.toml# Pridajte nasledujúce riadky:default_sched = "scx_bpfland" # Upravte tento riadok na plánovač, ktorý chcete, aby scx_loader spúšťal pri štartedefault_mode = "Auto" # Možné hodnoty: "Auto", "Gaming", "LowLatency", "PowerSave".# Stlačením CTRL + S uložíte zmeny a stlačením CTRL + Q ukončíte Micro. -
Reštartovanie scx_loader systemctl restart scx_loader.service- Hotovo, scx_loader teraz načíta a spustí požadovaný plánovač.
Ladenie v scx_loader
-
Kontrola stavu služby systemctl status scx_loader.service -
Zobrazenie všetkých záznamov denníka služby journalctl -u scx_loader.service -
Zobrazenie iba denníkov aktuálnej relácie. journalctl -u scx_loader.service -b 0 - Rozšírené protokolovanie
Ak chcete získať podrobnejší denník, postupujte podľa týchto krokov.
-
Úprava súboru služby sudo systemctl edit scx_loader.service -
Pridajte nasledujúci riadok pod sekciu [Service] Environment=RUST_LOG=trace -
Reštartovanie služby sudo systemctl restart scx_loader.service
- 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.