Každý běžící proces v Unixu má přiřazenou prioritu.
Prioritu procesu můžete změnit pomocí nástroje nice a renice. Příkaz Nice spustí proces s uživatelsky definovanou prioritou plánování. Příkaz Renice upraví prioritu plánování běžícího procesu.
Linux Kernel naplánuje proces a podle toho každému z nich přidělí čas CPU. Ale když jeden z vašich procesů vyžaduje vyšší prioritu, aby získal více času CPU, můžete použít příkaz nice a renice, jak je vysvětleno v tomto tutoriálu.
Rozsah priority plánování procesu je od -20 do 19. nazvěte to jako pěkná hodnota.
Pěkná hodnota -20 představuje nejvyšší prioritu a pěkná hodnota 19 představuje nejnižší prioritu pro proces.
Ve výchozím nastavení, když se proces spustí, získá výchozí prioritu 0.
1. Zobrazení pěkné hodnoty procesu
Aktuální prioritu procesu lze zobrazit pomocí příkazu ps.
Sloupec „NI“ ve výstupu příkazu ps označuje aktuální hodnotu nice (tj. prioritu) procesu.
Spustíme testovací program nazvaný test.pl, který bude použit k předvedení příkazu nice a renice. Tento testovací program provede určité úkoly a bude chvíli běžet.
$ perl test.pl
Pokud provedete příkaz ps, jak je uvedeno níže, můžete si všimnout, že tento program test.pl má výchozí hodnotu nice 0 (podívejte se na sloupec NI v následujícím výstupu).
$ ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 6884 6424 99 80 0 - 1556 - 13:45 pts/3 00:05:54 perl test.pl
2. Spusťte program s menší prioritou
Místo spouštění programu s výchozí prioritou můžete použít příkaz nice ke spuštění procesu s konkrétní prioritou.
V tomto příkladu je test.pl spuštěn s pěknou hodnotou 10.
$ nice -10 perl test.pl
Poznámka: Pamatujte, že -10 ve výše uvedeném příkazu nastavuje prioritu procesu na 10. Příkaz – in nice znamená hypen, který používáme k předávání voleb příkazu.
Takže, abyste předali pěknou hodnotu 5, řeknete -5. Chcete-li překonat příjemnou hodnotu 6, řeknete -6.
Jak vidíte níže, tento program je nyní spuštěn s pěknou hodnotou 10, což znamená, že poběží s nižší prioritou ve srovnání s jinými programy, které jsou spouštěny ve výchozím nastavení.
$ ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 7044 6424 99 90 10 - 1556 - 13:58 pts/3 00:00:03 perl test.pl
3. Spusťte program s vysokou prioritou
Můžete také spustit program s vyšší prioritou. Záporná hodnota nice zvýší prioritu procesu. Hodnota tedy musí být specifikována s — (dvě pomlčky) před příkazem nice, jak je uvedeno níže.
# nice --10 perl test.pl
Chcete-li tedy předat hezkou hodnotu -5, přidáte dvě pomlčky před 5. Chcete-li předat hezkou hodnotu -6, přidáte dvě pomlčky před 6.
Jak vidíte níže, tento program je nyní spuštěn s příjemnou hodnotou -10, což znamená, že bude běžet s vyšší prioritou ve srovnání s jinými programy, které jsou spouštěny ve výchozím nastavení.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -10 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
Poznámka:Běžným uživatelům není povoleno spouštět program s vyšší prioritou. Pouze uživatel root může spustit program s vysokou prioritou.
Pokud jako běžný uživatel zvýšíte prioritu, dostanete následující chybovou zprávu z nice command.
$ nice --10 perl test.pl nice: cannot set niceness: Permission denied
Pamatujte, že po vytištění výše uvedené chybové zprávy bude program stále běžet s výchozí prioritou (tj. 0).
4. Změňte prioritu pomocí volby -n
Prioritu procesu lze upravit pomocí volby -n.
Zvýšit prioritu:
# nice -n -5 perl test.pl
Snížit prioritu:
# nice -n 5 perl test.pl
5. Změňte prioritu běžícího procesu
Prioritu již běžícího procesu lze změnit pomocí příkazu renice.
V tomto příkladu již běží program test.pl s pěknou hodnotou -10.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -10 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
Hodnotu nice výše uvedeného programu můžeme změnit na -19, jak je ukázáno níže. Předejte id procesu výše uvedeného programu volbě -p.
# renice -n -19 -p 3534
Ověřte, že se hodnota nice změnila na -19.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -19 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
6. Změňte prioritu všech procesů, které patří do skupiny
Pomocí volby -g můžete upravit prioritu všech procesů, které patří do skupiny. Následující příkaz změní hodnotu nice všech procesů, které patří k geekstuff, na 5.
# renice -n 5 -g geekstuff
7. Změňte prioritu všech procesů vlastněných uživatelem
Renice umožňuje změnit prioritu všech procesů vlastněných konkrétními uživateli, jak je uvedeno níže.
# renice -n 5 -u bala
Výše uvedený příkaz změní prioritu všech procesů vlastněných uživatelem bala. Všem procesům, které patří uživateli bala, přiřadí pěknou hodnotu 5.
# ps -fl -C "perl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 2720 2607 99 85 5 - 1556 - 14:34 pts/2 00:05:07 perl test.pl 0 R bala 2795 2661 99 85 5 - 1556 - 14:39 pts/3 00:00:09 perl 2.pl