Comenzile Nice și Renice îți oferă posibilitatea de a ajusta fin modul în care sistemul de operare gestionează procesele tale, modificând prioritățile lor. Acest ghid îți va explica cum să le utilizezi în sistemele de operare Linux și Unix, cum ar fi macOS.
Procesele: Esența activității sistemului
În interiorul unui computer cu Linux sau Unix, numeroase procese rulează constant, chiar înainte de a porni aplicația dorită. Majoritatea acestor procese sunt vitale pentru funcționarea sistemului de operare sau oferă suport pentru mediul grafic. Multe se întâmplă în fundal. Resursele sistemului și timpul procesorului sunt limitate, iar nucleul Linux este responsabil pentru gestionarea tuturor proceselor.
Nucleul decide ce procese primesc prioritate și resurse în fiecare moment și care trebuie să aștepte. El gestionează constant procesele și prioritățile, asigurând performanța optimă a computerului și alocarea corectă a resurselor pentru fiecare proces. Anumite procese beneficiază de tratament preferențial, fiind esențiale pentru funcționarea corectă a sistemului, având prioritate față de aplicații precum browserul web.
Conceptul de Valoare „Nice”
Un criteriu folosit de nucleu pentru a gestiona procesele este valoarea „nice”. Fiecare proces are o astfel de valoare, reprezentată printr-un număr întreg cuprins între -19 și 20. Procesele obișnuite sunt lansate cu valoarea „nice” zero.
Cu cât valoarea „nice” este mai mare, cu atât procesul este mai „amabil” cu celelalte procese. O valoare mare indică nucleului că procesul poate aștepta. Un număr negativ semnifică opusul, indicând un proces „egoist” care încearcă să obțină cât mai mult timp procesor, fără a ține cont de celelalte.
Comanda nice
permite setarea valorii „nice” la lansarea unui proces, iar renice
permite modificarea valorii „nice” pentru un proces aflat în execuție.
Utilizarea Comenzii Nice
Comanda nice
permite modificarea valorii „nice” a unui program la lansarea acestuia. Astfel, putem controla prioritatea acordată procesului de nucleu în raport cu celelalte procese.
Să presupunem că un programator a creat un program numit ackermann
, care calculează funcții Ackerman și consumă multe resurse CPU și memorie. Programul poate fi lansat cu următoarea comandă:
./ackermann
Putem folosi comanda top
pentru a monitoriza programul în timpul execuției.
top
Observăm detaliile programului ackermann
în partea de sus, unde valoarea „nice” (coloana „NI”) este setată la zero, conform așteptărilor.
Să relansăm programul, dar de această dată vom reduce solicitarea acestuia. Vom seta o valoare „nice” de 15 pentru programul ackermann
, utilizând următoarea comandă: nice
, urmată de un spațiu, -15
, un alt spațiu și numele programului.
nice -15 ./ackermann
Este important de reținut că „-15” nu înseamnă „minus cincisprezece”, ci „plus cincisprezece”. Caracterul „-” este necesar pentru a indica că transmitem un parametru comenzii nice
. Pentru a indica un număr negativ, este necesar să folosim două caractere „-„.
Dacă pornim din nou comanda top
, vom observa schimbarea în comportamentul programului ackermann
.
top
Cu o valoare „nice” de 15, ackermann
nu mai utilizează cea mai mare parte a timpului procesorului. GNOME și Rhythmbox folosesc mai multe resurse. Am redus astfel prioritatea lui ackermann
.
Acum, vom face opusul și vom oferi lui ackermann
o valoare „nice” negativă. Observă utilizarea a două caractere „-„. Pentru a face o aplicație mai „egoistă” și mai puțin „amabilă”, este necesar să folosim sudo
. Orice utilizator poate face o aplicație mai „amabilă”, dar doar superutilizatorii pot face o aplicație mai „egoistă”.
sudo nice --10 ./ackermann
Să rulăm din nou comanda top
pentru a vedea efectul acestei modificări.
top
De această dată, ackermann
are o valoare „nice” de -10. A revenit pe prima poziție, consumând mai mult timp procesor decât înainte.
Utilizarea Comenzii Renice
Comanda renice
permite modificarea valorii „nice” a unui proces aflat în execuție, fără a fi nevoie de oprire și relansare cu nice
. Putem seta o nouă valoare din mers.
Comanda renice
folosește ID-ul procesului (PID) ca parametru. Putem obține PID-ul fie din coloana „PID” din top
, fie utilizând comanda ps
și grep
, după cum urmează. Trebuie să înlocuiești „dave” cu numele tău de utilizator și „ackermann” cu numele procesului dorit.
ps -eu dave | grep ackermann
După obținerea PID-ului, îl putem folosi cu renice
. Vom reseta programul ackermann
la un comportament mai „amabil”, cu o valoare „nice” de cinci. Pentru a modifica valoarea „nice” a unui proces în execuție, trebuie să folosim sudo
. Observăm că nu este necesar caracterul „-” înaintea parametrului 5. Acesta este necesar doar pentru numere negative.
sudo renice -n 5 2339
Primim confirmarea că renice
a modificat valoarea „nice”, afișând valoarea veche și cea nouă.
În general, nucleul gestionează eficient prioritățile și distribuirea resurselor de sistem. Însă, în cazul unei sarcini de lungă durată, care necesită resurse procesor intensive și care nu are o importanță temporală, este indicat să setezi o valoare „nice” mai mare. Acest lucru va permite computerului să funcționeze mai fluid, iar sistemul va fi mai „amabil” cu tine.