Cum să setați prioritățile de proces cu Nice and Renice pe Linux

Comenzile Nice and Renice vă permit să reglați fin modul în care nucleul tratează procesele dvs. ajustându-le prioritățile. Citiți acest tutorial pentru a afla cum să le utilizați în sistemele de operare Linux și Unix, cum ar fi macOS.

Totul este o chestiune de proces

În interiorul computerului dvs. Linux sau Unix, vor exista multe procese care rulează chiar înainte de a lansa aplicația pe care doriți să o utilizați. Majoritatea acestor procese sunt elemente vitale ale Linux-ului în sine sau procese de sprijin pentru mediul desktop grafic. Se întâmplă multe în culise. Desigur, există doar atât de multe resurse de sistem și timp CPU pentru a merge în jur. Nucleul Linux este controlerul pentru toate aceste procese.

Nucleul este cel care trebuie să decidă care procese primesc atenție și resurse chiar acum și care trebuie să aștepte. Nucleul jonglează continuu cu procesele și prioritățile pentru a se asigura că computerul funcționează cât de bine poate și că toate procesele primesc cota corespunzătoare. Unele procese beneficiază de un tratament preferențial. Ele sunt atât de importante pentru funcționarea generală a computerului, încât nevoile lor trebuie să fie pe primul loc înaintea, de exemplu, browserul dvs.

Valoarea frumoasa

Unul dintre criteriile folosite pentru a determina modul în care nucleul tratează un proces este valoarea bună. Fiecare proces are o valoare frumoasă. Valoarea plăcută este un număr întreg în intervalul de la -19 la 20. Toate procesele standard sunt lansate cu o valoare frumoasă de zero.

Trucul aici este că, cu cât valoarea bună este mai mare, cu atât procesul tău este mai frumos față de celelalte procese. Cu alte cuvinte, o valoare mare bună îi spune nucleului că acest proces este fericit să aștepte. Un număr negativ este opusul a fi drăguț. Cu cât valoarea negativă este mai mare, cu atât procesul este mai egoist. Încearcă să obțină cât mai mult timp CPU, fără a ține cont de celelalte procese.

Putem folosi comanda nice pentru a seta valoarea nice când a procesul este lansat și putem folosi renice pentru a ajusta valoarea nice a unui proces care rulează.

Frumosul Comandament

Putem folosi comanda nice pentru a ajusta valoarea nice pentru un program pe măsură ce îl lansăm. Acest lucru ne permite să creștem sau să micșorăm prioritatea dată procesului de către nucleu, în raport cu celelalte procese.

Să presupunem că un programator a scris un program numit ackermann. Aceasta calculează Funcții Ackerman. Este CPU și memorie intensivă. Programatorul poate lansa programul cu următoarea comandă:

./ackermann

Putem folosi comanda de sus pentru a vizualiza programul care rulează.

top

Putem vedea detaliile programului Ackermann în partea de sus. Valoarea plăcută este cifra din „coloana NI”. A setat la zero așa cum ne-am aștepta.

Să-l repornim și de data aceasta să-l facem mai puțin solicitant. Vom seta o valoare frumoasă de 15 pentru programul Ackermann, după cum urmează. Tastați nice, a space, -15, another space, apoi numele programului pe care doriți să-l lansați. În exemplul nostru, programatorul nostru fictiv folosește ./ackermann.

nice -15 ./ackermann

Rețineți cu atenție, „-15” nu este cincisprezece negativ. Este pozitiv cincisprezece. „-” este necesar pentru a spune bine că transmitem un parametru. Pentru a indica un număr negativ, trebuie să tastați două caractere „-”.

Dacă acum începem din nou de sus, putem vedea schimbarea comportamentului lui Ackermann.

top

Cu o valoare frumoasă de 15, ackermann nu consumă cel mai mult timp CPU. GNOME și Rhythmbox folosesc ambele mai mult. L-am oprit puțin pe Ackermann.

Acum să facem invers și să dăm lui Ackermann o valoare negativă frumoasă. Observați utilizarea a două caractere „-”. Pentru a face o aplicație mai egoistă și mai puțin drăguță, trebuie să utilizați sudo. Oricine își poate face aplicația mai drăguță, dar numai superutilizatorii o pot face mai egoist.

sudo nice --10 ./ackermann

Să alergăm sus și să vedem ce diferență a făcut asta.

top

De data aceasta, ackermann are o valoare frumoasă de -10. Este din nou pe linia de sus și consumă mai mult timp CPU decât înainte.

Comandamentul Renice

Comanda renice ne permite să ajustăm valoarea plăcută a unui proces care rulează. Nu trebuie să o oprim și să o relansăm cu nice. Putem seta o nouă valoare din mers.

Comanda renice ia ID-ul procesului, sau PID, al procesului ca parametru al liniei de comandă. Putem fie extrage ID-ul procesului din coloana „PID” din partea de sus, fie putem folosi ps și grep pentru a-l găsi pentru noi, după cum urmează. Evident, veți introduce numele utilizatorului în loc de dave și numele procesului de care sunteți interesat în loc de ackermann.

ps -eu dave | grep ackermann

Acum că avem PID-ul, îl putem folosi cu Renice. Îl vom restabili pe Ackermann la un comportament mai frumos, cu o valoare frumoasă de cinci. Pentru a schimba valoarea plăcută pentru un proces care rulează, trebuie să utilizați sudo. Rețineți că nu există „-” pe parametrul 5. Nu aveți nevoie de unul pentru numerele pozitive și aveți nevoie doar de unul, nu de două, pentru numerele negative.

sudo renice -n 5 2339

Primim confirmarea că Renice a schimbat valoarea nice. Ne arată valoarea veche și valoarea nouă.

Nucleul face de obicei o treabă grozavă de a gestiona prioritățile și de a distribui timpul CPU și resursele de sistem. Dar dacă aveți de rulat o sarcină lungă, care necesită un procesor intens și nu vă pasă când se încheie, computerul dvs. va funcționa puțin mai ușor dacă setați o valoare bună mai mare pentru acea sarcină. Asta va fi mai frumos pentru toată lumea.