Kako postaviti prioritet Linux procesa koristeći nice and renice komande


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

Pročitajte također: Kako nadgledati Linux procese i postaviti ograničenja procesa po korisniku

Razumijevanje Linux Kernel Scheduler-a

Planer kernela je jedinica kernela koja određuje najprikladniji proces od svih pokrenutih procesa za sljedeći; on dodeljuje vreme procesora između pokrenutih procesa na sistemu. Proces koji se može pokrenuti je onaj koji čeka samo CPU vrijeme, spreman je za izvršenje.

Planer čini jezgro multitaskinga u Linuxu, koristeći algoritam raspoređivanja zasnovan na prioritetu za odabir između pokretanih procesa u sistemu. On rangira procese prema najzaslužnijima kao i prema potrebi za CPU vremenom.

Razumijevanje prioriteta procesa i dobre vrijednosti

Kernel pohranjuje veliku količinu informacija o procesima uključujući prioritet procesa koji je jednostavno prioritet planiranja vezan za proces. Procesi sa višim prioritetom će se izvršavati prije onih sa nižim prioritetom, dok se procesi sa istim prioritetom zakazuju jedan za drugim, uzastopno.

Postoji ukupno 140 prioriteta i dva različita raspona prioriteta implementiranih u Linux. Prva je dobra vrijednost (prijatnost) koja se kreće od -20 (vrijednost najviš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 realnom vremenu, koji se kreće od 1 do 99 prema zadanim postavkama, zatim 100 do 139 su namijenjeni za korisnički prostor.

Jedna važna karakteristika Linuxa je dinamičko raspoređivanje zasnovano na prioritetima, koje omogućava da se lijepa vrijednost procesa mijenja (povećava ili smanjuje) 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 uslužne programe kao što su ps, top ili htop.

Da vidite procese nice vrijednost sa ps komandom u korisnički definiranom formatu (ovdje NI kolona pokazuje ljepotu procesa).

ps -eo pid,ppid,ni,comm

Alternativno, možete koristiti top ili htop uslužne programe da vidite lijepe vrijednosti Linux procesa kao što je prikazano.

top
htop

Razlika između PR ili PRI i NI

Iz top i htop izlaza iznad, primijetit ćete da postoji stupac koji se zove PR i PRI prijemčivo što pokazuje prioritet procesa.

To, dakle, znači da:

  • NI – je lijepa vrijednost, koja je koncept korisničkog prostora, dok
  • PR ili PRI – je stvarni 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

Dobar 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 snimku ekrana ispod, to u osnovi znači da se proces izvodi pod prioritetom planiranja u realnom vremenu.

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

Ovdje ćemo pogledati kako odrediti prioritet korištenja CPU programa ili komande. Ako imate program ili zadatak koji zahteva mnogo procesora, ali takođe razumete da može potrajati da se završi, možete mu postaviti visok ili povoljan prioritet pomoću naredbe nice.

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]

Bitan:

  • Ako nije navedena vrijednost, nice po defaultu postavlja prioritet 10.
  • Naredba ili program koji se izvodi bez lijepih zadanih postavki na prioritet nula.
  • Samo root može pokrenuti naredbu ili program sa povećanim ili visokim prioritetom.
  • Normalni korisnici mogu pokrenuti samo naredbu ili program sa niskim prioritetom.

Na primjer, umjesto pokretanja programa ili naredbe sa zadanim prioritetom, možete ga pokrenuti sa određenim prioritetom koristeći sljedeću lijepu naredbu.

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

Možete koristiti i treću metodu koja je malo zbunjujuća posebno za negativne vrijednosti ljepote.

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

Promijenite prioritet planiranja procesa u Linuxu

Kao što smo već spomenuli, Linux dozvoljava dinamičko raspoređivanje zasnovano na prioritetima. Stoga, ako je program već pokrenut, možete promijeniti njegov prioritet pomoću renice naredbe u ovom obliku:

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

Iz uzorka vrh izlaza ispod, ljepota teamspe+ sa PID-om 1055 sada je -12 i za sve procesi u vlasništvu korisnika apache je -2.

Još uvijek koristeći 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 napravite renice komandom u korisničkim procesima nice vrijednosti su primjenjive samo do sljedećeg ponovnog pokretanja. Za postavljanje trajnih zadanih vrijednosti, pročitajte sljedeći odjeljak.

Kako postaviti zadanu lijepu 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 su objašnjene u datoteci):

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

Sada koristite sintaksu ispod gdje hard – znači nametanje tvrdih veza, a soft znači – nametanje mekih ograničenja.

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

Alternativno, kreirajte datoteku pod /etc/security/limits.d/ koja nadjačava postavke u glavnoj datoteci iznad, a ove datoteke se čitaju po abecednom redu.

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

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

Zatim dodajte ovu konfiguraciju u njega:

tecmint  hard  priority  10

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

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

man nice
man renice 

Možda biste željeli pročitati i ove sljedeće članke o upravljanju Linux procesima.

  1. Kako pronaći i uništiti pokrenute procese u Linuxu
  2. Vodič za Kill, Pkill i Killall komande za završetak procesa u Linuxu
  3. Kako pratiti korištenje sistema, prekide rada i rješavanje problema na Linux serverima
  4. CPUTool – Ograničite i kontrolirajte korištenje CPU-a bilo kojeg procesa u Linuxu

U ovom članku smo ukratko objasnili planer kernela, prioritet procesa, pogledali kako pokrenuti program ili naredbu s izmijenjenim prioritetom i promijeniti prioritet aktivnih Linux procesa. Možete podijeliti svoje mišljenje u vezi sa ovom temom putem obrasca za povratne informacije u nastavku.