Vyhledávání na webu

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 prostoru
  • PR nebo PRI – 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.

  1. Jak najít a zabít běžící procesy v Linuxu
  2. Průvodce příkazy Kill, Pkill a Killall k ukončení procesu v Linuxu
  3. Jak sledovat využití systému, výpadky a odstraňovat problémy se servery Linux
  4. 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.