Kako postaviti prioritet Linux procesa pomoću naredbi nice i renice


U ovom ćemo članku ukratko objasniti planer kernela (poznat i kao planer procesa) i prioritet procesa, što su teme izvan opseg ovog vodiča. Zatim ćemo malo zaroniti u upravljanje Linux procesima: vidjeti kako pokrenuti program ili naredbu s promijenjenim prioritetom i također promijeniti prioritet pokretanja Linux procesa.

Pročitajte također: Kako nadzirati Linux procese i postaviti ograničenja procesa za svakog korisnika

Razumijevanje Linux Kernel Scheduler-a

Planer jezgre je jedinica jezgre koja određuje najprikladniji proces od svih pokrenutih procesa za sljedeće izvršavanje; raspodjeljuje procesorsko vrijeme između pokretačkih procesa na sustavu. Proces koji se može pokrenuti je onaj koji čeka samo CPU vrijeme, spreman je za izvršenje.

Raspoređivač čini jezgru multitaskinga u Linuxu, koristeći algoritam raspoređivanja temeljen na prioritetima za odabir između pokretačkih procesa u sustavu. On rangira procese na temelju onih koji najviše zaslužuju, kao i prema potrebi za CPU vremenom.

Razumijevanje prioriteta procesa i dobre vrijednosti

Kernel pohranjuje mnogo informacija o procesima uključujući prioritet procesa koji je jednostavno prioritet raspoređivanja pridružen procesu. Procesi s višim prioritetom izvršit će se prije onih s nižim prioritetom, dok se procesi s istim prioritetom raspoređuju jedan za drugim, opetovano.

U Linuxu je implementirano ukupno 140 prioriteta i dva različita raspona prioriteta. Prva je lijepa vrijednost (ljepota) koja se kreće od -20 (vrijednost najvećeg prioriteta) do 19 (vrijednost najnižeg prioriteta) i default je 0, to je ono što ćemo otkriti u ovom vodiču. Drugi je prioritet u stvarnom vremenu, koji se kreće od 1 do 99 prema zadanim postavkama, zatim 100 do 139 namijenjeni su korisničkom prostoru.

Jedna važna karakteristika Linuxa je dinamičko planiranje temeljeno na prioritetima, koje omogućuje promjenu (povećanje ili smanjenje) dobre vrijednosti procesa ovisno o vašim potrebama, kao što ćemo vidjeti kasnije.

Kako provjeriti dobru vrijednost Linux procesa

Da bismo vidjeli lijepe vrijednosti procesa, možemo koristiti pomoćne programe kao što su ps, top ili htop.

Za prikaz lijepe vrijednosti procesa s naredbom ps u korisnički definiranom formatu (ovdje NI stupac prikazuje ispravnost procesa).

ps -eo pid,ppid,ni,comm

Alternativno, možete koristiti top ili htop pomoćne programe za pregled lijepih vrijednosti Linux procesa kao što je prikazano.

top
htop

Razlika između PR ili PRI i NI

Iz gornjih izlaza top i htop primijetit ćete da postoji stupac koji se receptivno naziva PR i PRI koji pokazuje prioritet nekog procesa.

To, dakle, znači da:

  • NI – je lijepa vrijednost, koja je koncept korisničkog prostora, dok
  • PR ili PRI – stvarni je prioritet procesa, kako ga vidi Linux kernel.
Kako izračunati PR ili PRI vrijednosti
Total number of priorities = 140
Real time priority range(PR or PRI):  0 to 99 
User space priority range: 100 to 139

Nice raspon vrijednosti (NI): -20 do 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.

Ali ako vidite rt umjesto broja kao što je prikazano na snimci zaslona u nastavku, to u osnovi znači da se proces izvodi pod prioritetom rasporeda u stvarnom vremenu.

Kako pokrenuti naredbu sa zadanom lijepom vrijednošću u Linuxu

Ovdje ćemo pogledati kako odrediti prioritet korištenja CPU-a programa ili naredbe. Ako imate program ili zadatak koji zahtijeva jako procesorsku procesorsku jedinicu, ali također znate da može potrajati dugo da se dovrši, možete mu postaviti visok ili povoljan prioritet pomoću nice naredbe.

Sintaksa je sljedeća:

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]

Važno:

  • Ako nije navedena vrijednost, nice postavlja prioritet od 10 prema zadanim postavkama.
  • Naredba ili program koji se izvodi bez nice ima zadani prioritet nula.
  • Samo root može pokrenuti naredbu ili program s povećanim ili visokim prioritetom.
  • Normalni korisnici mogu pokrenuti samo naredbu ili program s niskim prioritetom.

Na primjer, umjesto pokretanja programa ili naredbe sa zadanim prioritetom, možete ih pokrenuti s određenim prioritetom pomoću sljedeće lijepe naredbe.

sudo nice -n 5 tar -czf backup.tar.gz ./Documents/*
OR
sudo nice --adjustment=5 tar -czf backup.tar.gz ./Documents/*

Također možete koristiti treću metodu koja je malo zbunjujuća, posebno za negativne vrijednosti čistoće.

sudo nice -5 tar -czf backup.tar.gz  ./Documents/*

Promjena prioriteta planiranja procesa u Linuxu

Kao što smo već spomenuli, Linux dopušta dinamičko raspoređivanje temeljeno na prioritetima. Stoga, ako je program već pokrenut, možete promijeniti njegov prioritet s renice naredbom u ovom obliku:

renice -n  -12  -p 1055
renice -n -2  -u apache

Iz primjera gornjeg izlaza ispod, kvalitet teamspe+ s PID-om 1055 sada je -12 i za sve procesa u vlasništvu korisnika apache je -2.

I dalje koristite ovaj izlaz, možete vidjeti formulu PR=20 + NI stoji,

PR for ts3server = 20 + -12 = 8
PR for apache processes = 20 + -2 = 18

Sve promjene koje izvršite pomoću naredbe renice u vrijednostima korisničkih procesa primjenjive su samo do sljedećeg ponovnog pokretanja. Za postavljanje trajnih zadanih vrijednosti pročitajte sljedeći odjeljak.

Kako postaviti zadanu dobru vrijednost procesa određenog korisnika

Možete postaviti zadanu nice vrijednost određenog korisnika ili grupe u datoteci /etc/security/limits.conf. Njegova primarna funkcija je definiranje ograničenja resursa za korisnike koji su prijavljeni putem PAM-a.

Sintaksa za definiranje ograničenja za korisnika je sljedeća (a moguće vrijednosti različitih stupaca objašnjene su u datoteci):

#<domain>   <type>  <item>  <value>

Sada upotrijebite donju sintaksu gdje teško – znači provođenje tvrdih veza, a meko znači – provođenje mekih ograničenja.

<username>  <hard|soft>  priority  <nice value>

Alternativno, kreirajte datoteku pod /etc/security/limits.d/ koja nadjačava postavke u gornjoj glavnoj datoteci, a te se datoteke čitaju abecednim redom.

Započnite stvaranjem datoteke /etc/security/limits.d/tecmint-priority.conf za korisnika tecmint:

vi /etc/security/limits.d/tecmint-priority.conf

Zatim u njega dodajte ovu konfiguraciju:

tecmint  hard  priority  10

Spremite i zatvorite datoteku. Od sada će svaki proces u vlasništvu tecmint imati lijepu vrijednost 10 i PR 30.

Za više informacija, pročitajte man stranice nice i renice:

man nice
man renice 

Također biste mogli pročitati sljedeće članke o upravljanju Linux procesima.

  1. Kako pronaći i zaustaviti pokrenute procese u Linuxu
  2. Vodič za naredbe Kill, Pkill i Killall za prekid procesa u Linuxu
  3. Kako pratiti korištenje sustava, ispade i otkloniti probleme s Linux poslužiteljima
  4. CPUTool – Ograničite i kontrolirajte korištenje CPU-a bilo kojeg procesa u Linuxu

U ovom smo članku ukratko objasnili planer jezgre, prioritet procesa, pogledali kako pokrenuti program ili naredbu s izmijenjenim prioritetom i također promijeniti prioritet aktivnih Linux procesa. Svoja razmišljanja o ovoj temi možete podijeliti putem donjeg obrasca za povratne informacije.