Návod k sched-ext
Rozšiřitelná třída plánovače, známější jako sched-ext
, je funkce jádra Linuxu, která umožňuje implementovat plánovače vláken jádra v BPF (Berkeley Package Filter) a dynamicky je načítat. V podstatě to koncovým uživatelům umožňuje měnit své plánovače v uživatelském prostoru bez nutnosti sestavovat další jádro jen kvůli jinému plánovači.
Metody spouštění a správy plánovačů
- Plánovače lze nalézt v balíčcích
scx-scheds
ascx-scheds-git
.
Spuštění plánovače v terminálu
- Chcete-li spustit plánovač, otevřete terminál a zadejte následující příkaz:
Tím se spustí plánovač rusty a odpojí výchozí plánovač.
Chcete-li plánovač zastavit. Stiskněte CTRL + C
a plánovač se zastaví a znovu převezme řízení výchozí plánovač jádra.
Služba Systemd
Balíček scx obsahuje službu systemd, která používá konfiguraci určenou v souboru /etc/default/scx
.
V tomto konfiguračním souboru můžete určit plánovač, který služba spouští, a volitelně zahrnout vlastní příznaky pro požadovaný plánovač.
-
Pokud chcete změnit plánovač spouštěný službou, jednoduše upravte řádek
SCX_SCHEDULER=
na plánovač, který chcete spouštět ve výchozím nastavení. -
Přidání příznaků
- Odkomentujte
SCX_FLAGS
a přidejte požadované příznaky.
- Odkomentujte
Nyní můžete spouštět/povolovat/zastavovat plánovač stejně jako jakoukoli jinou službu systemd.
Níže si prohlédněte stručný návod, jak ji spravovat.
Pro více informací o této službě: Služba Sched-ext systemd
scx_loader
Jak název napovídá, jedná se o nástroj, který funguje jako zavaděč a správce pro framework sched-ext pomocí rozhraní D-Bus.
I když nevyžaduje systemd, stále jej lze používat v kombinaci s ním. Podívejte se na průvodce přechodem pro referenci)
- Má schopnost zastavit, spustit, restartovat, číst informace o scx plánovači a další.
- Pro komunikaci s ním můžete použít nástroje jako
dbus-send
nebogdbus
.
- Pro komunikaci s ním můžete použít nástroje jako
- Tento návod vysvětluje, jak používat scx_loader s příkazem dbus-send.
Správce jádra CachyOS
K plánovačům scx lze přistupovat a konfigurovat je pomocí zcela nového scx_loaderu.
Úvod k hlavním plánovačům
Vzhledem k tomu, že existuje mnoho plánovačů, ze kterých si můžete vybrat, chceme vám poskytnout krátký úvod k dostupným plánovačům.
Neváhejte nahlásit jakýkoli problém nebo zpětnou vazbu na jejich GitHub uvedeném níže.
scx_bpfland
Vyvinul: Andrea Righi (arighi GitHub)
Plánovač sched_ext založený na vruntime, který upřednostňuje interaktivní pracovní zátěže. Vysoce flexibilní a snadno se přizpůsobí.
Při rozhodování o tom, která jádra použít, bere Bpfland v úvahu jejich rozložení mezipaměti a která jádra sdílejí stejnou mezipaměť L2/L3, což vede k menšímu počtu chyb mezipaměti = vyšší výkon.
Případy použití:
- Hraní her
- Použití na desktopu
- Multimediální/audio produkce
- Skvělá interaktivita při intenzivním zatížení
- Úspora energie
- Serverové pracovní zátěže
scx_flash
Vyvinul: Andrea Righi (arighi GitHub)
Plánovač, který se zaměřuje na zajištění spravedlnosti mezi úlohami a předvídatelnosti výkonu. Tento plánovač je představen jako náhrada režimu „lowlatency“ v scx_bpfland.
Případy použití:
- Hraní her
- Pracovní zátěže citlivé na latenci, jako je multimediální nebo audio zpracování v reálném čase
- Potřeba odezvy v situacích s nadměrným zatížením
- Konzistence výkonu
scx_lavd
Vyvinul: Changwoo Min (multics69 GitHub).
Stručný úvod k LAVD od Changwoo:
LAVD je nový algoritmus plánování, který je stále ve vývoji. Jeho motivací jsou herní pracovní zátěže, které jsou kritické z hlediska latence a náročné na komunikaci. Jeho cílem je minimalizovat špičky latence při zachování celkově dobré propustnosti a spravedlivého využití času procesoru mezi úlohami.
Případy použití:
- Hraní her
- Audio produkce
- Pracovní zátěže citlivé na latenci
- Použití na desktopu
- Skvělá interaktivita při intenzivním zatížení
- Úspora energie
Jednou z hlavních a skvělých funkcí, které LAVD zahrnuje, je Core Compaction., což bez zabíhání do technických detailů znamená: Když je využití procesoru < 50 %, aktuálně aktivní jádra poběží déle a s vyšší frekvencí. Mezitím nečinná jádra zůstanou v C-stavu (spánek) mnohem déle, čímž se dosáhne menší celkové spotřeby energie.
scx_rusty
Vyvinul: David Vernet (Byte-Lab GitHub)
Rusty nabízí širokou škálu funkcí, které zlepšují jeho schopnosti a poskytují větší flexibilitu pro různé případy použití. Jednou z těchto funkcí je nastavitelnost, která vám umožňuje přizpůsobit Rusty tak, aby vyhovoval vašim preferencím a specifickým požadavkům.
Případy použití:
- Hraní her
- Pracovní zátěže citlivé na latenci
- Použití na desktopu
- Multimediální/audio produkce
- Pracovní zátěže citlivé na latenci
- Skvělá interaktivita při intenzivním zatížení
- Úspora energie
Pro podrobnější informace o tom, co lze u Rustyho ladit. Podívejte se na stránku nápovědy
Obecná doporučení
LAVD Autopilot & Autopower
Citáty od Changwoo Min:
-
V režimu autopilota plánovač upravuje svůj režim napájení
Úsporný, Vyvážený nebo Výkonný
na základě zatížení systému, konkrétně využití procesoru -
Autopower: Automaticky rozhoduje o režimu napájení plánovače na základě energetického profilu systému, tj. EPP (Energy Performance Preference).
Zakázat ananicy-cpp
Chcete-li zakázat/zastavit ananicy-cpp, spusťte následující příkaz:
Přechod ze scx.service na scx_loader: Komplexní průvodce
Nejprve začněme s podrobným porovnáním struktury souboru scx.service se strukturou konfiguračního souboru scx_loader.
Pokud jste dříve měli spuštěný LAVD se starou scx.service, jako v následujícím příkladu:
Pak bude ekvivalent v konfiguračním souboru scx_loader vypadat takto:
Pro více informací o tom, jak konfigurovat soubor scx_loader
Pro snadný přechod ze služby systemd scx
na nový nástroj scx_loader
postupujte podle níže uvedeného průvodce.
-
- Hotovo, scx_loader nyní načte a spustí požadovaný plánovač.
Ladění v scx_loaderu
- Rozšířené protokolování
Chcete-li získat podrobnější protokol, postupujte podle těchto kroků.
- Znovu zkontrolujte protokoly pro podrobnější informace o ladění.
FAQ
Proč plánovač X funguje hůře než ostatní?
- Při jejich porovnávání je třeba zvážit mnoho proměnných. Například, jak měří váhu úlohy? Upřednostňují interaktivní úlohy před neinteraktivními? V konečném důsledku to závisí na jejich konstrukčních rozhodnutích.
Proč všichni tvrdí, že tento plánovač X je nejlepší pro případ X, ale pro mě nefunguje tak dobře?
- Stejně jako v předchozí odpovědi, volba procesoru a jeho konstrukce, jako je rozložení jader, způsob sdílení mezipaměti mezi jádry a další související faktory, mohou vést k méně efektivnímu fungování plánovače.
- Proto je jednou z hlavních výhod frameworku sched-ext možnost výběru, takže se nebojte vyzkoušet jeden a zjistit, který nejlépe vyhovuje vašemu případu použití.
Příklady: stabilita fps, maximální výkon, odezva při intenzivním zatížení atd.
Případy použití těchto plánovačů jsou si docela podobné… proč tomu tak je?
-
Především proto, že se jedná o víceúčelové plánovače, což znamená, že se dokážou přizpůsobit různým pracovním zátěžím, i když v každé oblasti nemusí vynikat.
-
Chcete-li zjistit, který plánovač vám nejlépe vyhovuje, není lepší rady, než si ho sami vyzkoušet.
Chybí mi plánovač, o kterém se někteří uživatelé zmiňují nebo testují na serveru CachyOS Discord
Ujistěte se, že používáte vývojovou verzi balíčku scx-scheds s názvem scx-scheds-git
- Jedním z důvodů bude, že tento plánovač je velmi nový a v současné době je testován uživateli, proto ještě nebyl přidán do balíčku
scx-scheds-git
.
Proč se plánovač náhle zhroutil? Je nestabilní?
- Může existovat několik důvodů, proč se to stalo:
- Jedním z nejčastějších důvodů je, že jste používali ananicy-cpp společně s plánovačem. Proto jsme přidali toto varování
- Dalším důvodem může být, že pracovní zátěž, kterou jste spouštěli, překročila limity a kapacitu plánovače, což způsobilo jeho zablokování.
- Příklad nepřiměřené pracovní zátěže:
hackbench
- Příklad nepřiměřené pracovní zátěže:
- Nebo zjevnější důvod, našli jste chybu v plánovači, pokud ano. Nahlaste ji prosím jako problém v jejich GitHubu nebo jim o ní dejte vědět
na kanálu CachyOS Discord
sched-ext
Dříve jsem používal scx_loader v GUI Správce jádra. Musím stále dodržovat kroky přechodu?
- V tomto konkrétním případě to není nutné, protože Správce jádra již proces přechodu řeší.
- Pokud jste dříve nepřidali vlastní příznaky do
/etc/default/scx
a stále je chcete používat.
- Pokud jste dříve nepřidali vlastní příznaky do
Zjistěte více
Pokud se chcete dozvědět více o frameworku sched-ext. Podívejte se na odkazy níže.