Jak nastavit prioritu procesu Linux pomocí příkazů nice a renice
V tomto článku stručně vysvětlíme plánovač jádra (známý také jako plánovač procesů) a prioritu procesu, což jsou témata mimo rozsah tohoto návodu. Poté se ponoříme do správy procesů Linuxu: podíváme se, jak spustit program nebo příkaz s upravenou prioritou a také změnit prioritu spouštění procesů Linuxu.
Přečtěte si také: Jak monitorovat procesy Linuxu a nastavovat limity procesů na základě jednotlivých uživatelů
Porozumění plánovači jádra Linuxu
Plánovač jádra je jednotka jádra, která určuje nejvhodnější proces ze všech spustitelných procesů, který se má spustit jako další; přiděluje čas procesoru mezi spustitelné procesy v systému. Spustitelný proces je proces, který čeká pouze na čas CPU, je připraven ke spuštění.
Plánovač tvoří jádro multitaskingu v Linuxu a používá plánovací algoritmus založený na prioritách k výběru mezi spustitelnými procesy v systému. Seřazuje procesy podle toho, co si nejvíce zaslouží, a také podle potřeby času CPU.
Pochopení procesní priority a příjemné hodnoty
Jádro uchovává velké množství informací o procesech včetně priority procesu, což je jednoduše priorita plánování spojená s procesem. Procesy s vyšší prioritou budou provedeny před těmi s nižší prioritou, zatímco procesy se stejnou prioritou jsou naplánovány jeden po druhém, opakovaně.
V systému Linux je implementováno celkem 140 priorit a dva různé rozsahy priorit. První je pěkná hodnota (hezkost), která se pohybuje od -20
(hodnota s nejvyšší prioritou) do 19
(hodnota s nejnižší prioritou) a výchozí je 0
, to je to, co odhalíme v této příručce. Druhým je priorita v reálném čase, která se ve výchozím nastavení pohybuje od 1 do 99 a poté od 100 do 139 jsou určeny pro uživatelský prostor.
Jednou z důležitých vlastností Linuxu je dynamické plánování založené na prioritách, které umožňuje měnit (zvýšit nebo snížit) příjemnou hodnotu procesů v závislosti na vašich potřebách, jak uvidíme později.
Jak zkontrolovat pěknou hodnotu linuxových procesů
Abychom viděli pěkné hodnoty procesů, můžeme použít utility jako ps, top nebo htop.
Chcete-li zobrazit hodnotu nice procesů pomocí příkazu ps v uživatelsky definovaném formátu (zde sloupec NI
ukazuje vhodnost procesů).
ps -eo pid,ppid,ni,comm
Alternativně můžete použít top nebo htop utility k zobrazení pěkných hodnot procesů Linuxu, jak je znázorněno.
top
htop
Rozdíl mezi PR nebo PRI a NI
Z výše uvedených výstupů top a htop si všimnete, že existuje sloupec nazvaný PR
a PRI
vnímavě který ukazuje prioritu procesu.
To tedy znamená, že:
NI
– je hezká hodnota, která je konceptem uživatelského prostoruPR
neboPRI
– je skutečná priorita procesu, jak ji vidí jádro Linuxu.
Jak vypočítat hodnoty PR nebo PRI
Total number of priorities = 140
Real time priority range(PR or PRI): 0 to 99
User space priority range: 100 to 139
Pěkný rozsah hodnot (NI): -20 až 19
PR = 20 + NI
PR = 20 + (-20 to + 19)
PR = 20 + -20 to 20 + 19
PR = 0 to 39 which is same as 100 to 139.
Ale pokud vidíte rt
místo čísla, jak je znázorněno na obrázku níže, v podstatě to znamená, že proces běží s prioritou plánování v reálném čase.
Jak spustit příkaz s danou pěknou hodnotou v Linuxu
Zde se podíváme na to, jak upřednostnit využití CPU programu nebo příkazu. Pokud máte program nebo úkol velmi náročný na CPU, ale zároveň chápete, že jeho dokončení může trvat dlouho, můžete mu nastavit vysokou nebo příznivou prioritu pomocí příkazu nice.
Syntaxe je následující:
nice -n niceness-value [command args]
OR
nice -niceness-value [command args] #it’s confusing for negative values
OR
nice --adjustment=niceness-value [command args]
Důležité:
- Pokud není zadána žádná hodnota, nastaví nice standardně prioritu 10.
- Příkaz nebo program spuštěný bez pěkného výchozího nastavení má prioritu nula.
- Pouze root může spustit příkaz nebo program se zvýšenou nebo vysokou prioritou.
- Běžní uživatelé mohou spustit pouze příkaz nebo program s nízkou prioritou.
Například místo spouštění programu nebo příkazu s výchozí prioritou jej můžete spustit s konkrétní prioritou pomocí následujícího příkazu nice.
sudo nice -n 5 tar -czf backup.tar.gz ./Documents/*
OR
sudo nice --adjustment=5 tar -czf backup.tar.gz ./Documents/*
Můžete také použít třetí metodu, která je trochu matoucí, zejména pro záporné hodnoty niceness.
sudo nice -5 tar -czf backup.tar.gz ./Documents/*
Změňte prioritu plánování procesu v Linuxu
Jak jsme již zmínili, Linux umožňuje dynamické plánování založené na prioritách. Pokud tedy program již běží, můžete změnit jeho prioritu pomocí příkazu renice v tomto tvaru:
renice -n -12 -p 1055
renice -n -2 -u apache
Z ukázkového horního výstupu níže je výhoda teamspe+ s PID 1055 nyní -12
a pro všechny procesy vlastněné uživatelem apache jsou -2
.
Stále při použití tohoto výstupu můžete vidět vzorec PR=20 + NI stojí,
PR for ts3server = 20 + -12 = 8
PR for apache processes = 20 + -2 = 18
Jakékoli změny provedené pomocí příkazu renice v uživatelských procesech hodnot nice jsou platné pouze do příštího restartu. Chcete-li nastavit trvalé výchozí hodnoty, přečtěte si následující část.
Jak nastavit výchozí hodnotu Nice procesů konkrétního uživatele
Výchozí hodnotu nice pro konkrétního uživatele nebo skupinu můžete nastavit v souboru /etc/security/limits.conf. Jeho primární funkcí je definovat limity zdrojů pro uživatele přihlášené přes PAM.
Syntaxe pro definování limitu pro uživatele je následující (a možné hodnoty různých sloupců jsou vysvětleny v souboru):
#<domain> <type> <item> <value>
Nyní použijte níže uvedenou syntaxi, kde hard – znamená vynucení pevných odkazů a měkké znamená – vynucení měkkých limitů.
<username> <hard|soft> priority <nice value>
Případně vytvořte soubor pod /etc/security/limits.d/, který přepíše nastavení v hlavním souboru výše, a tyto soubory se načtou v abecedním pořadí.
Začněte vytvořením souboru /etc/security/limits.d/tecmint-priority.conf pro uživatele tecmint:
vi /etc/security/limits.d/tecmint-priority.conf
Poté do něj přidejte tuto konfiguraci:
tecmint hard priority 10
Uložte a zavřete soubor. Od této chvíle bude mít jakýkoli proces ve vlastnictví tecmint pěknou hodnotu 10 a PR 30.
Pro více informací si přečtěte manuálové stránky nice a renice:
man nice
man renice
Možná byste si také rádi přečetli následující články o správě procesů v Linuxu.
- Jak najít a zabít běžící procesy v Linuxu
- Průvodce příkazy Kill, Pkill a Killall k ukončení procesu v Linuxu
- Jak sledovat využití systému, výpadky a odstraňovat problémy se servery Linux
- CPUTool – Omezte a řiďte využití CPU jakéhokoli procesu v Linuxu
V tomto článku jsme stručně vysvětlili plánovač jádra, prioritu procesů, podívali se na to, jak spustit program nebo příkaz s upravenou prioritou a také změnit prioritu aktivních linuxových procesů. Jakékoli myšlenky týkající se tohoto tématu můžete sdílet prostřednictvím formuláře pro zpětnou vazbu níže.