Návod na sched-ext
Extensible Scheduler Class, neboli lépe známý jako sched-ext, je funkce linuxového kernelu, která umožňuje implementovat plánovače vláken kernelu v
BPF (Berkeley Packet Filter) a dynamicky je načítat. V podstatě to umožňuje koncovým uživatelům měnit své plánovače v uživatelském prostoru bez
nutnosti sestavovat další kernel jen pro jiný plánovač.
Metody pro spouštění a správu plánovačů
Sekce “Metody pro spouštění a správu plánovačů”- Plánovače naleznete v balíčcích
scx-schedsascx-scheds-git.Terminal window # Stabilní větevsudo pacman -S scx-scheds# Nejnovější vývojová větev (Tato větev obsahuje nejnovější změny# a může obsahovat plánovač, který ještě nebyl vydán.)sudo pacman -S scx-scheds-git
Spuštění plánovače v terminálu
Sekce “Spuštění plánovače v terminálu”- Pro spuštění plánovače otevřete terminál a zadejte následující příkaz:
Příklad spuštění rusty sudo scx_rusty
Tím se spustí plánovač rusty a odpojí se výchozí plánovač.
Pro zastavení plánovače stiskněte CTRL + C. Plánovač se poté zastaví a opět převezme řízení výchozí plánovač kernelu.
Služba Systemd
Sekce “Služba Systemd”Balíček scx obsahuje službu systemd, která používá konfiguraci specifikovanou v souboru /etc/default/scx.
V tomto konfiguračním souboru můžete specifikovat 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říklad SCX_SCHEDULER=scx_lavd
-
-
Přidání příznaků
- Odkomentujte
SCX_FLAGSa přidejte požadované příznaky.Příklad SCX_FLAGS='--performance'
- Odkomentujte
Nyní můžete plánovač spouštět/povolovat/zastavovat jako jakoukoli jinou službu systemd.
Níže se podívejte na stručný návod, jak jej spravovat.
sudo systemctl enable --now scxsudo systemctl start scxsudo systemctl stop scxPro více informací o této službě: Sched-ext systemd service
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.
Ačkoliv nevyžaduje systemd, může být stále používán ve spojení s ním. Pro referenci se podívejte na průvodce přechodem)
- Má schopnost zastavit, spustit, restartovat, číst informace o plánovači scx a další.
- Můžete použít nástroje jako
dbus-sendnebogdbuspro komunikaci s ním.
- Můžete použít nástroje jako
- Tento průvodce vysvětluje, jak používat scx_loader s příkazem dbus-send.
-
Spuštění scx_rusty s výchozími argumenty dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.StartScheduler string:scx_rusty uint32:0 -
Spuštění plánovače s argumenty # Tento příklad spouští scx_bpfland s následujícími příznaky: -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" -
Zastavení aktuálně běžícího plánovače dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.StopScheduler -
Přepnutí na jiný plánovač v režimu 2 dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.SwitchScheduler string:scx_lavd uint32:2# Tímto se přepne na scx_lavd s režimem plánovače 2, což znamená, že se LAVD spustí v režimu úspory energie -
Přepnutí na jiný plánovač s argumenty dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.SwitchSchedulerWithArgs string:scx_bpfland array:string:"-k","-c","0" -
Zjištění aktuálně běžícího plánovače dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.freedesktop.DBus.Properties.Get string:org.scx.Loader string:CurrentScheduler -
Získání seznamu podporovaných plánovačů 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
Sekce “CachyOS Kernel Manager”Plánovače scx lze přistupovat a konfigurovat pomocí zbrusu nového scx_loaderu.
Představení hlavních plánovačů
Sekce “Představení hlavních plánovačů”Jelikož je na výběr mnoho plánovačů, chceme vám poskytnout malé představení těch, které jsou k dispozici.
Neváhejte nahlásit jakýkoli problém nebo zpětnou vazbu v repozitáři daného plánovače.
Vyvinul: Andrea Righi (arighi GitHub)
Plánovač sched_ext založený na vruntime, který upřednostňuje interaktivní úlohy. Vysoce flexibilní a snadno přizpůsobitelný.
Když Bpfland rozhoduje, která jádra použít, bere v úvahu jejich uspořádání mezipaměti a která jádra sdílejí stejnou mezipaměť L2/L3, což vede k menšímu počtu minutí mezipaměti = vyššímu výkonu.
Případy použití:
- Hraní her
- Použití na desktopu
- Multimediální/audio produkce
- Skvělá interaktivita při náročných úlohách
- Úspora energie
- Server (Vyžaduje
server_modes scx_loaderem)
Vyvinul: Andrea Righi (arighi GitHub)
Sdílí podobnosti s bpfland, vytvořen s úmyslem být snadno čitelný a srozumitelný díky své implementaci v uživatelském prostoru.
Mějte na paměti, že při použití plánovače v uživatelském prostoru dochází k mírnému snížení propustnosti. Ačkoliv rustland má možnost bezproblémové integrace se sofistikovanými knihovnami, nástroji pro sledování, externími službami (např. AI) atd.
Případy použití:
- Úlohy s nízkou latencí (hraní her, videokonference a živé streamování)
- Použití na desktopu
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 za režim “lowlatency” v scx_bpfland.
Případy použití:
- Hraní her
- Úlohy citlivé na latenci, jako je multimediální nebo real-time zpracování zvuku
- Potřeba odezvy v přetížených situacích
- Konzistence výkonu
- Server (Vyžaduje
server_modes scx_loaderem)
Vyvinul: Changwoo Min (multics69 GitHub).
Stručné představení LAVD od Changwoo:
LAVD je nový plánovací algoritmus, který je stále ve vývoji. Je motivován herními úlohami, které jsou kritické z hlediska latence a náročné na komunikaci. Cílem je minimalizovat špičky latence při zachování celkově dobré propustnosti a spravedlivého využití času CPU mezi úlohami.
Případy použití:
- Hraní her
- Audio produkce
- Úlohy citlivé na latenci
- Použití na desktopu
- Skvělá interaktivita při náročných úlohách
- Úspora energie
Jednou z hlavních a úžasných schopností, které LAVD zahrnuje, je Kompakce jader. což, aniž bychom zabíhali do technických detailů: Když je využití CPU < 50 %, aktuálně aktivní jádra poběží déle a na vyšší frekvenci. Mezitím nečinná jádra zůstanou ve stavu C-State (spánek) po mnohem delší dobu, čímž se dosáhne nižší celkové spotřeby energie.
Vyvinul: David Vernet (Byte-Lab GitHub)
Rusty nabízí širokou škálu funkcí, které vylepšují jeho schopnosti a poskytují větší flexibilitu pro různé případy použití. Jednou z těchto funkcí je laditelnost, která vám umožňuje přizpůsobit Rusty vašim preferencím a specifickým požadavkům.
Případy použití:
- Hraní her
- Úlohy citlivé na latenci
- Použití na desktopu
- Multimediální/audio produkce
- Úlohy citlivé na latenci
- Skvělá interaktivita při náročných úlohách
- Úspora energie
Pro podrobnější pohled na to, co lze pro Rusty ladit, se podívejte na stránku nápovědy.
scx_rusty --helpVyvinul: Daniel Hodges (hodgesds GitHub)
Univerzální plánovač, který se zaměřuje na vyvažování zátěže “pick two” mezi LLC. Udržuje vysokou lokalitu mezipaměti a zachování práce, přičemž poskytuje rozumnou latenci.
Případy použití:
- Server (Vyžaduje
server_modes scx_loaderem) - Desktopová prostředí
- Hraní her (s určitým ručním laděním)
Vyvinul: Andrea Righi (arighi Github)
scx_tickless je serverově orientovaný plánovač určený pro cloud computing, virtualizaci a úlohy vysoce výkonného počítání.
Plánovač funguje tak, že směruje všechny události plánování přes fond primárních CPU určených pro zpracování těchto událostí. To umožňuje zakázat tik plánovače na ostatních CPU, čímž se snižuje šum operačního systému.
Případy použití:
- Cloud computing
- Virtualizace
- Úlohy vysoce výkonného počítání
- Server (Vyžaduje
server_modes scx_loaderem)
Obecná doporučení
Sekce “Obecná doporučení”LAVD Autopilot & Autopower
Sekce “LAVD Autopilot & Autopower”Citace od Changwoo Min:
-
V režimu autopilota si plánovač upravuje svůj napájecí režim
Powersave, Balanced nebo Performancena základě zátěže systému, konkrétně využití CPU -
Autopower: Automaticky rozhoduje o napájecím režimu plánovače na základě energetického profilu systému, tzv. EPP (Energy Performance Preference).
# Autopower lze aktivovat následujícím příznakem:--autopower# např:scx_lavd --autopowerZakázání ananicy-cpp
Sekce “Zakázání ananicy-cpp”Pro zakázání/zastavení ananicy-cpp spusťte následující příkaz:
systemctl disable --now ananicy-cppPřechod z scx.service na scx_loader: Komplexní průvodce
Sekce “Přechod z scx.service na scx_loader: Komplexní průvodce”Začněme nejprve podrobným porovnáním struktury souboru scx.service se strukturou konfiguračního souboru scx_loaderu.
Pokud jste dříve měli spuštěný LAVD se starou službou scx.service jako v příkladu níže:
# Seznam scx_plánovačů: 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
# Nastavení vlastních příznaků pro plánovačSCX_FLAGS='--performance'Pak ekvivalent v konfiguračním souboru scx_loaderu bude vypadat takto:
default_sched = "scx_lavd"default_mode = "Auto"
[scheds.scx_lavd]auto_mode = ["--performance"]Pro více informací o tom, jak konfigurovat soubor scx_loaderu
Následujte níže uvedený průvodce pro snadný přechod ze systémové služby scx na nový nástroj scx_loader.
-
Zakázání scx.service ve prospěch scx_loader.service systemctl disable --now scx.service && systemctl enable --now scx_loader.service -
Vytvoření konfiguračního souboru pro scx_loader a přidání výchozí struktury # Editor Micro vytvoří nový soubor.sudo micro /etc/scx_loader.toml# Přidejte následující řádky:default_sched = "scx_bpfland" # Upravte tento řádek na plánovač, který chcete, aby scx_loader spustil při startudefault_mode = "Auto" # Možné hodnoty: "Auto", "Gaming", "LowLatency", "PowerSave".# Stiskněte CTRL + S pro uložení změn a CTRL + Q pro ukončení Micro. -
Restartování scx_loaderu systemctl restart scx_loader.service- Hotovo, scx_loader nyní načte a spustí požadovaný plánovač.
Ladění v scx_loaderu
Sekce “Ladění v scx_loaderu”-
Kontrola stavu služby systemctl status scx_loader.service -
Zobrazení všech záznamů v logu služby journalctl -u scx_loader.service -
Zobrazení pouze logů aktuální relace. journalctl -u scx_loader.service -b 0 - Pokročilé logování
Pro získání podrobnějšího logu postupujte podle těchto kroků.
-
Upravte soubor služby sudo systemctl edit scx_loader.service -
Přidejte následující řádek pod sekci [Service] Environment=RUST_LOG=trace -
Restartujte službu sudo systemctl restart scx_loader.service
- Znovu zkontrolujte logy pro podrobnější informace k ladění.
FAQ
Sekce “FAQ”Proč plánovač X funguje hůře než jiný?
Sekce “Proč plánovač X funguje hůře než jiný?”- Při 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? Nakonec to závisí na jejich návrhových rozhodnutích.
Proč všichni říkají, že tento plánovač X je nejlepší pro případ Y, ale mně nefunguje tak dobře?
Sekce “Proč všichni říkají, že tento plánovač X je nejlepší pro případ Y, ale mně nefunguje tak dobře?”- Stejně jako v předchozí odpovědi, volba CPU a jeho design, jako je uspořádání jader, způsob sdílení mezipaměti mezi jádry a další související faktory, mohou vést k tomu, že plánovač pracuje méně efektivně.
- Proto je jednou z hlavních předností frameworku sched-ext možnost volby, takže se nebojte nějaký vyzkoušet a zjistit, který nejlépe vyhovuje vašemu případu použití.
Příklady: stabilita fps, maximální výkon, odezva při náročných úlohách atd.
Případy použití těchto plánovačů jsou si dost podobné… proč tomu tak je?
Sekce “Případy použití těchto plánovačů jsou si dost podobné… proč tomu tak je?”-
Především proto, že se jedná o víceúčelové plánovače, což znamená, že mohou vyhovět různým úlohám, i když nemusí vynikat v každé oblasti.
-
Abyste zjistili, který plánovač vám nejlépe vyhovuje, není lepší rady, než si ho sami vyzkoušet.
Chybí mi plánovač, o kterém někteří uživatelé mluví nebo ho testují na Discord serveru CachyOS
Sekce “Chybí mi plánovač, o kterém někteří uživatelé mluví nebo ho testují na Discord serveru CachyOS”Ujistěte se, že používáte nejnovější 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 je v současné době testován uživateli, a proto ještě nebyl přidán do balíčku
scx-scheds-git.
Proč se plánovač náhle zhroutil? Je nestabilní?
Sekce “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 souběžně s plánovačem. Proto jsme přidali toto varování
- Dalším důvodem může být, že zátěž, kterou jste spouštěli, překročila limity a kapacitu plánovače, což způsobilo jeho zastavení.
- Příklad nerozumné zátěže:
hackbench
- Příklad nerozumné 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 tom dejte vědět
v kanálu
sched-extna Discordu CachyOS
Dříve jsem používal scx_loader v GUI Kernel Manageru. Musím stále postupovat podle kroků přechodu?
Sekce “Dříve jsem používal scx_loader v GUI Kernel Manageru. Musím stále postupovat podle kroků přechodu?”- V tomto konkrétním případě to není nutné, protože Kernel Manager již proces přechodu zvládá.
- Pokud jste dříve nepřidali vlastní příznaky do
/etc/default/scxa stále je chcete používat.
- Pokud jste dříve nepřidali vlastní příznaky do
Další informace
Sekce “Další informace”Pokud se chcete dozvědět více o frameworku sched-ext, podívejte se na níže uvedené odkazy.