Příkazy nice a renice vám umožňují doladit, jak jádro zachází s vašimi procesy, úpravou jejich priorit. Přečtěte si tento tutoriál a zjistěte, jak je používat v Linuxu a operačních systémech podobných Unixu, jako je macOS.
Table of Contents
Vše je otázkou procesu
Uvnitř vašeho počítače se systémem Linux nebo Unix bude mnoho procesů spuštěno ještě předtím, než spustíte aplikaci, kterou chcete použít. Většina těchto procesů jsou životně důležité prvky samotného Linuxu nebo podpůrné procesy pro vaše grafické desktopové prostředí. V zákulisí se toho děje hodně. Samozřejmě existuje jen tolik systémových prostředků a času procesoru, které lze obejít. Linuxové jádro je řadičem všech těchto procesů.
Je to jádro, které musí rozhodnout, které procesy získají pozornost a prostředky právě teď a které musí počkat. Jádro neustále žongluje s procesy a prioritami, aby zajistilo, že počítač běží tak hladce, jak jen může, a že všechny procesy dostanou svůj odpovídající podíl. Některé procesy dostávají přednostní zacházení. Jsou tak důležité pro obecný provoz počítače, že jejich potřeby musí být na prvním místě, řekněme, před vaším prohlížečem.
Pěkná hodnota
Jedním z kritérií používaných k určení toho, jak jádro zachází s procesem, je hodnota nice. Každý proces má dobrou hodnotu. Hodnota nice je celé číslo v rozsahu -19 až 20. Všechny standardní procesy jsou spuštěny s hodnotou nice nula.
Trik je v tom, že čím vyšší je hodnota nice, tím příjemnější je váš proces vůči ostatním procesům. Jinými slovy, vysoká hodnota nice říká jádru, že tento proces rád počká. Záporné číslo je opakem slušnosti. Čím větší je záporná hodnota nice, tím je proces sobecký. Snaží se získat co nejvíce CPU času, bez ohledu na ostatní procesy.
Můžeme použít příkaz nice k nastavení hodnoty nice, když a proces je spuštěn a můžeme použít renice k úpravě hodnoty nice běžícího procesu.
Pěkný příkaz
Příkaz nice můžeme použít k úpravě hodnoty nice pro program při jeho spouštění. To nám umožňuje zvýšit nebo snížit prioritu dané procesu jádrem ve srovnání s ostatními procesy.
Předpokládejme, že programátor napsal program s názvem ackermann . Toto počítá Ackermanovy funkce. Je náročný na CPU a paměť. Programátor může spustit program pomocí následujícího příkazu:
./ackermann
Pro zobrazení běžícího programu můžeme použít příkaz top.
top
Podrobnosti o programu ackermann můžeme vidět nahoře. Pěkná hodnota je číslo ve sloupci „NI“. Nastavilo se na nulu, jak jsme očekávali.
Pojďme to restartovat a tentokrát to udělejme méně náročné. Pro program ackermann nastavíme pěknou hodnotu 15 následovně. Zadejte nice, mezeru, -15, další mezeru a poté název programu, který chcete spustit. V našem příkladu náš fiktivní programátor používá ./ackermann.
nice -15 ./ackermann
Pozor, „-15“ není záporná patnáctka. Je to kladných patnáct. Znak „-“ je nutný, abychom řekli nice, že předáváme parametr. Chcete-li uvést záporné číslo, musíte zadat dva znaky „-“.
Pokud nyní začneme znovu nahoře, můžeme vidět změnu v chování ackermanna.
top
S pěknou hodnotou 15 ackermann nespotřebovává nejvíce času CPU. GNOME a Rhythmbox používají více. Trochu jsme ovládli ackermanna.
Nyní to uděláme obráceně a dáme ackermannovi zápornou pěknou hodnotu. Všimněte si použití dvou znaků „-“. Aby byla aplikace sebevědomější a méně hezká, musíte použít sudo. Každý může udělat svou aplikaci hezčí, ale pouze superuživatelé mohou udělat jednu sobštější.
sudo nice --10 ./ackermann
Pojďme nahoru a uvidíme, jaký rozdíl to přineslo.
top
Tentokrát má ackermann pěknou hodnotu -10. Je zpět na vrcholu a spotřebovává více času CPU než dříve.
Příkaz Renice
Příkaz renice nám umožňuje upravit hodnotu nice běžícího procesu. Nemusíme to zastavit a znovu spustit s nice. Můžeme nastavit novou hodnotu za běhu.
Příkaz renice přebírá ID procesu neboli PID procesu jako parametr příkazového řádku. Můžeme buď extrahovat ID procesu ze sloupce „PID“ v horní části, nebo jej můžeme najít pomocí ps a grep, a to následovně. Je zřejmé, že místo dave napíšete jméno svého uživatele a místo ackermann název procesu, který vás zajímá.
ps -eu dave | grep ackermann
Nyní, když máme PID, můžeme to použít s renice. Nastavíme ackermanna zpět na hezčí chování s pěknou hodnotou pět. Chcete-li změnit hodnotu nice pro běžící proces, musíte použít sudo. Všimněte si, že u parametru 5 není žádné „-“. Pro kladná čísla nepotřebujete jedničku a pro záporná čísla vám stačí jedna, ne dvě.
sudo renice -n 5 2339
Dostáváme potvrzení, že renice změnila hodnotu nice. Ukazuje nám starou hodnotu a novou hodnotu.
Jádro obvykle odvádí skvělou práci při zpracování priorit a rozdávání času CPU a systémových prostředků. Ale pokud máte spustit dlouhý úkol náročný na CPU a je vám jedno, kdy skončí, bude váš počítač fungovat o něco plynuleji, pokud pro tento úkol nastavíte vyšší hodnotu nice. To bude pro všechny lepší.