Polecenie nice w Linuksie: ustawianie priorytetu, zmiana przez renice i pomiar udziaƂu CPU przy rywalizacji

Informacja o linkach partnerskich v3.1
Informacja o linkach partnerskich v3.2 (wersja mobilna)
Úrodowisko testoweRodzina RHELAlmaLinux 9.8root · zwykƂe konto uĆŒytkownikaSprawdzono 17.10.2026

Polecenie nice w Linuksie ustawia wartoƛć nice programu (od -20 do 19), ktĂłra decyduje, ile CPU oddaje on innym procesom podczas dziaƂania. Pomiary na serwerze AlmaLinux 9, z dwoma zadaniami przypiętymi do jednego rdzenia i zmienianą wartoƛcią nice, pokazaƂy, ĆŒe CPU dzieli się tylko wtedy, gdy zadania o nie rywalizują, a zadanie z nice 19 zuĆŒyƂo zaledwie 1,4%.

JuĆŒ dziaƂające procesy zmienia się przez renice, a ustępowanie po stronie dysku zapewnia ionice. Dla wszystkich trzech poleceƄ podano wynik dokƂadnie taki, jaki wypisaƂy na koncie root i zwykƂym.

1ïžâƒŁ Polecenie nice w Linuksie: zakres wartoƛci i udziaƂ w CPU przy rywalizacji

Wartoƛć nice to liczba okreƛlająca, ile proces ustępuje przy podziale czasu CPU; moĆŒna ją ustawić od -20 do 19. Programy zwykle dziaƂają z 0; -20 jest obsƂugiwane najpierw, a 19 ustępuje najbardziej.

Ɓatwo zaƂoĆŒyć, ĆŒe większa liczba oznacza pierwszeƄstwo, ale wartoƛci nice dziaƂają odwrotnie. Harmonogram Linuksa przypisuje kaĆŒdej wartoƛci nice wagę i dzieli czas CPU w tej proporcji: nice 0 to 1024, 10 to 110, a 19 to 15.

Ustępowanie zachodzi tylko wtedy, gdy zadania rywalizują o CPU. Jeƛli jest wolny procesor, nawet zadanie z nice 19 dziaƂa bez czekania. To jak miejsca uprzywilejowane w autobusie: gdy są wolne, kaĆŒdy siada, a ustępuje się tylko w tƂoku.

🧭 Wartoƛci nice przy wolnym i zajętym CPU
Diagram objaƛniający
đŸ–„ïž CPU
⚖ Zadanie B
đŸ–„ïž Jest wolny CPU, więc kaĆŒde zadanie ma wƂasny rdzeĆ„đŸ–„ïž Dwa zadania dzielą jeden rdzeƄ CPU
Zadanie Anice 0 · waga 1024
100%50.0%90.3%98.6%
Zadanie Bnice 0 · waga 1024nice 10 · waga 110nice 19 · waga 15
100%50.0%9.7%1.4%
Przy wolnym CPU nie ma komu ustępować, więc zadanie B korzysta z CPU w peƂni niezaleĆŒnie od wartoƛci nice.
Gdy rywalizują o ten sam rdzeƄ, dwa zadania nice 0 o równej wadze dzielą czas CPU po poƂowie.
nice 10 ma wagę 110, okoƂo jedną dziewiątą nice 0 (1024), więc czas CPU dzieli się mniej więcej 90,3 : 9,7.
nice 19 ma wagę 15; przy rywalizacji zadanie B zuĆŒywa tylko okoƂo 1,4% czasu CPU.

Tabela wag to tablica [sched_prio_to_weight] w ĆșrĂłdƂach jądra Linuksa [kernel/sched/core.c]; uƂoĆŒono ją tak, by kaĆŒdy wzrost nice o 1 zmniejszaƂ czas CPU o okoƂo 10%.

2ïžâƒŁ Podstawy nice: +10 bez liczby i wartoƛci spoza zakresu

Dodaj polecenie po nice, a uruchomi się ze zmienioną wartoƛcią nice; samo nice wypisuje wartoƛć nice bieĆŒÄ…cej powƂoki.

nice
0

W przykƂadach poniĆŒej uruchomiony bash wypisuje wƂasną wartoƛć nice przez [ps -o ni=]. Bez -n do bieĆŒÄ…cej wartoƛci dodaje się 10, a z -n 5 dodaje się 5.

nice bash -c 'ps -o ni= -p $$'
 10
nice -n 5 bash -c 'ps -o ni= -p $$'
  5

Wartoƛci spoza zakresu są bez bƂędu przycinane do granicy, więc -n 50 dziaƂa z 19.

nice -n 50 bash -c 'ps -o ni= -p $$'
 19

Tylko root moĆŒe przyspieszyć proces wartoƛcią ujemną. ZwykƂy uĆŒytkownik dostaje ostrzeĆŒenie [cannot set niceness], a polecenie i tak dziaƂa z nice 0.

# jako zwykƂy uĆŒytkownik
nice -n -5 bash -c 'ps -o ni= -p $$'
nice: cannot set niceness: Permission denied
  0
# jako root
nice -n -5 bash -c 'ps -o ni= -p $$'
 -5

Procesy potomne uruchamiane przez polecenie pod nice teĆŒ dziaƂają z tą samą wartoƛcią nice.

nice -n 7 bash -c 'sleep 1 & ps -o ni= -p $!'
  7

Dlatego gdy uruchomisz skrypt przez nice, ustępuje teĆŒ kaĆŒde polecenie w ƛrodku.

3ïžâƒŁ renice: zmiana wartoƛci nice dziaƂającego procesu

nice ustawia wartoƛć tylko przy starcie, więc dla dziaƂającego procesu uĆŒywa się renice. Najpierw sprawdĆș PID i bieĆŒÄ…cą wartoƛć w kolumnie NI w top albo przez ps.

ps -o pid,ni,cmd -p 201643
    PID  NI CMD
 201643   5 sleep 600
renice -n 10 -p 201643
201643 (process ID) old priority 5, new priority 10

Jak widać w wyniku, renice -n nie dodaje do bieĆŒÄ…cej wartoƛci, lecz ustawia podaną: wynik to 10, a nie 5 + 10 = 15. To nie jak naciƛnięcie â–Č na pilocie klimatyzatora o jeden stopieƄ, tylko jak ustawienie docelowej temperatury na 24 stopnie.

Oficjalna dokumentacja util-linux teĆŒ opisuje -n jako wartoƛć bezwzględną; dodawanie obsƂuguje w nowszych wersjach opcja [--relative]. Testowany util-linux 2.37.4 tej opcji nie miaƂ.

ZwykƂy uĆŒytkownik moĆŒe tylko podnosić wartoƛć wƂasnych procesĂłw i nie moĆŒe jej z powrotem obniĆŒyć.

# jako zwykƂy uĆŒytkownik
renice -n 10 -p 201649
201649 (process ID) old priority 0, new priority 10
renice -n 5 -p 201649
renice: failed to set priority for 201649 (process ID): Permission denied

root moĆŒe ją teĆŒ obniĆŒyć; w tym samym teƛcie zmieniƂ 10 od razu na 3.

đŸ”Č Symulator nice · renice

W symulatorze poniĆŒej, zalogowanym jako zwykƂy uĆŒytkownik, sam wpiszesz nice i renice i zobaczysz zmianę wartoƛci nice.

Symulator polecenia nicenice 8.32 · renice 2.37.4
[root@server work]#
DziaƂa tylko w przeglądarce i nigdy nie dotyka prawdziwego procesu. Wirtualny serwer jest zalogowany na zwykƂym koncie: uruchom coƛ ze zmienioną wartoƛcią nice albo zmieƄ wartoƛć backup.sh (PID 2481) przez renice i sprawdĆș przez ps -o pid,ni,cmd. Klawiszami ↑↓ przywoƂasz wczeƛniejsze polecenia.

4ïžâƒŁ Pomiar udziaƂu w CPU przy rywalizacji: nice 0 vs 0·10·19

Podniesienie wartoƛci nice nie zawsze spowalnia zadanie. Jego udziaƂ maleje tylko wtedy, gdy rywalizuje z innym zadaniem o ten sam CPU.

Dwa zadania przypięto do jednego rdzenia CPU (taskset), a poniĆŒszy skrypt, ktĂłry przez 5 sekund liczy po jednym, uruchomiono w obu jednoczeƛnie. Im większa liczba, tym więcej czasu CPU zuĆŒyƂo zadanie.

#!/bin/bash
end=$((SECONDS+5)); n=0
while [ $SECONDS -lt $end ]; do n=$((n+1)); done
echo $n

Skrypt zwiększa n o 1, aĆŒ minie 5 sekund, a potem wypisuje koƄcową wartoƛć.

📊5 sekund rywalizacji o jeden rdzeƄ CPULiczba w 5 sekund
Pierwsze zadanie nice 0Drugie zadanie
nice 0 vs nice 0
Dwa zadania o tej samej wadze.
0250K500K750K1M
nice 0497 59648.8%
nice 0522 04051.2%
nice 0 vs nice 10
Tylko drugie zadanie dziaƂa z nice 10.
0250K500K750K1M
nice 0979 97190.1%
nice 10107 6719.9%
nice 0 vs nice 19
Tylko drugie zadanie dziaƂa z nice 19.
0250K500K750K1M
nice 0909 89598.6%
nice 1913 0101.4%
Liczby z serwera AlmaLinux 9 z 17 paĆșdziernika 2026, gdy dwa zadania przypięte do jednego rdzenia dziaƂaƂy jednoczeƛnie po 5 sekund.

Dwa zadania nice 0 podzieliƂy się po poƂowie, nice 10 zuĆŒyƂo okoƂo 10%, a nice 19 tylko 1,4%. To zgadza się z proporcjami wyliczonymi z wag jądra (1024 : 110 daje 90,3 : 9,7, a 1024 : 15 daje 98,6 : 1,4).

Uruchomione samo na tym samym rdzeniu zadanie z nice 19 doliczyƂo w 5 sekund do okoƂo 650 000–1 140 000. Bez nikogo, komu trzeba ustąpić, nawet nice 19 w peƂni korzysta z CPU; obciÄ…ĆŒenie serwera (load average) w czasie testu wynosiƂo 3–5.

5ïžâƒŁ ionice: ustępowanie przy I/O dysku i sprawdzanie harmonogramu

nice ustala tylko udziaƂ w CPU, więc przy zadaniach dƂugo czytających i zapisujących dysk, jak kopie zapasowe, ustąp teĆŒ kolejnoƛci dysku przez ionice. Z -c3 (idle) zadanie jest obsƂugiwane tylko wtedy, gdy ĆŒaden inny program nie uĆŒywa dysku.

ionice -c3 bash -c 'ionice -p $$'
idle
ionice -p $$
none: prio 0

Proces bez ustawionej klasy jest pokazywany jako [none]; wedƂug dokumentacji jądra traktuje się go jako best-effort, a priorytet wylicza się z wartoƛci nice CPU.

Klasy ionice dziaƂają tylko, gdy harmonogram dysku je obsƂuguje; dokumentacja jądra wymienia bfq i mq-deadline jako obsƂugujące. Ten w nawiasach kwadratowych jest obecnie uĆŒywany.

cat /sys/block/nvme0n1/queue/scheduler
[none] mq-deadline kyber bfq

Dysk NVMe na serwerze testowym uĆŒywa [none], więc wedƂug oficjalnej dokumentacji ionice moĆŒe tam nie dziaƂać; efektu nie mierzono osobno. Nazwę dysku sprawdzisz przez lsblk.

6ïžâƒŁ Gdzie uĆŒywać nice: kopie zapasowe · cron · wp-cli

Dodawaj nice do zadaƄ dƂugich, ale niepilnych. Kompresja kopii zapasowej uĆŒywa CPU i dysku, więc ustaw razem nice i ionice.

nice -n 19 ionice -c3 tar czf backup.tgz /home/example

Jeƛli dziaƂające zadanie spowalnia serwer, znajdĆș PID w top i podnieƛ wartoƛć przez renice; w codziennych zadaniach cron dopisz nice przed poleceniem.

0 3 * * * nice -n 10 /usr/local/bin/backup.sh

Na serwerze WordPress, gdy duĆŒe zadania wp-cli, jak search-replace czy ponowne generowanie obrazĂłw, uruchomisz z nice -n 10, php-fpm obsƂugujący odwiedzających dostanie CPU jako pierwszy, gdy jest zajęty.

nice -n 10 wp media regenerate --yes

Natomiast nie podnoƛ wartoƛci nice php-fpm ani samego serwera WWW. Jeƛli procesy odpowiadające odwiedzającym będą ustępować, strony odpowiedzą wolniej przy zajętym CPU.

🔱 FAQ & polecane treƛci

Dla zwykƂych procesów PR w top to 20 plus wartoƛć nice. Proces uruchomiony z nice 5 pokazaƂ PR 25 i NI 5, a kolumna PRI w ps liczy inaczej i pokazaƂa ten sam proces jako 14.

nice dodaje podaną wartoƛć do bieĆŒÄ…cej wartoƛci nice. [nice -n 5 nice -n 3 nice] wypisuje 8, inaczej niĆŒ renice -n, ktĂłre ustawia podaną wartoƛć.

Dopisz [Nice=] w sekcji [Service] pliku jednostki usƂugi, a ustawi to wartoƛć nice procesĂłw uruchamianych przez usƂugę. WedƂug oficjalnej dokumentacji systemd.exec moĆŒna ustawić od -20 do 19.

🧭 Procesy i harmonogramowanie zadaƄ: polecane treƛci 11 wpisĂłw · 4 ĆșrĂłdƂa
đŸ—‚ïž Procesy i harmonogramowanie zadaƄ
📄 Polecenie ps 📄 Polecenie top 📄 Polecenie nice w Linuksie 📄 Polecenie kill 📄 Polecenie killall 📄 TƂo & pierwszy plan 📄 Polecenie uptime
📄 Konfiguracja crontab
📋 WP CLI: instalacja i konfiguracja 📄 WP-Cron(wp-cron.php) 📄 Znajdowanie zsynchronizowanych wzorców: WP-CLI
📡 GNU Coreutils nice invocation 📡 renice(1) Linux manual page 📡 Block io priorities (dokumentacja jądra) 📡 sched_prio_to_weight (ĆșrĂłdƂo jądra)
Sprawdzanie procesĂłw poleceniem ps
Linux · Procesy
Polecenie ps (polecenie procesĂłw)
Polecenie ps wypisuje procesy dziaƂające w tej chwili.
Czytaj wpis →BieĆŒÄ…ca treƛć
Polecenie TOP w Linuksie: interfejs wiersza poleceƄ (CLI)
Linux · Procesy
Polecenie top w Linuksie (sprawdzanie uĆŒycia CPU i pamięci)
Polecenie top w Linuksie pokazuje stan dziaƂającego systemu, a nazwa oznacza table of processes.
Czytaj wpis →BieĆŒÄ…ca treƛć
Polecenie nice w Linuksie: zmierzone sƂupki nice 0 kontra nice 0·10·19 dzielących jeden rdzeƄ CPU przez 5 sekund
Linux · Procesy
Polecenie nice w Linuksie: ustawianie priorytetu, zmiana przez renice i pomiar udziaƂu CPU przy rywalizacji
Polecenie nice w Linuksie ustawia wartoƛć nice (od -20 do 19) programu, która decyduje, ile CPU ustąpi innym procesom podczas dziaƂania.
Czytaj wpis →BieĆŒÄ…ca treƛć
Interfejs wiersza poleceƄ Linuksa (CLI)
Linux · Procesy
Polecenie kill w Linuksie [kill -9 PID]
Polecenie kill w Linuksie koƄczy dziaƂający proces.
Czytaj wpis →BieĆŒÄ…ca treƛć
Sprawdzenie wersji polecenia killall w Linuksie
Linux · Procesy
Polecenie killall w Linuksie: instalacja, uĆŒycie i opcje
Polecenie killall w Linuksie koƄczy wybrane procesy naraz.
Czytaj wpis →BieĆŒÄ…ca treƛć
Obraz Linuksa
Linux · Procesy
TƂo & pierwszy plan w Linuksie: sterowanie procesami
Procesy w Linuksie dziaƂają w dwóch trybach: w tle i na pierwszym planie.
Czytaj wpis →BieĆŒÄ…ca treƛć
Podstawy Linuksa (The Linux Foundation)
Linux · ObciÄ…ĆŒenie serwera
Polecenie uptime w Linuksie (czas pracy serwera & ƛrednie obciÄ…ĆŒenie z 1, 5 i 15 minut)
Polecenie uptime w Linuksie pokazuje ƛrednie obciÄ…ĆŒenie systemu i czas pracy serwera.
Czytaj wpis →BieĆŒÄ…ca treƛć

â„č Informacja o linkach partnerskich
Treƛci tej witryny zawierają linki partnerskie. Jeƛli odwiedzający kupi produkt lub usƂugę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota pƂacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępnoƛć odnoszą się do chwili pisania i mogą rĂłĆŒnić się od stanu faktycznego, dlatego przed zakupem sprawdĆș je u sprzedawcy. Produkty wybieramy i oceniamy wedƂug wƂasnych kryteriĂłw, a prowizja nie wpƂywa ani na kolejnoƛć prezentacji, ani na treƛć ocen.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 1   +   3   =