Linux

Controlați procesul de utilizare a procesorului cu nice și cpulimit

Indiferent cât de rapidă este mașina dvs. Linux, vor exista întotdeauna unele sarcini care consumă mult timp în procesor. Totul, de la codificarea video până la rularea modelelor matematice, poate face ca CPU să ruleze la 100%. Este bine dacă aparatul nu face altceva. Dar dacă este desktopul principal sau este utilizat ca server, atunci executarea unei sarcini care maximizează CPU-ul dvs. va face mașina lentă și dificil de utilizat. Frumusețea unui sistem de operare multitasking este că aparatul nu va îngheța, deoarece va programa întotdeauna timpul procesorului pentru alte sarcini și lucruri precum desktopul vor funcționa în continuare, dar mult mai lent. Planificatorul nu are cum să știe că doriți ca sarcina intensivă a procesorului să ruleze cu o prioritate mai mică sau să-și limiteze timpul de procesare. Cu toate acestea, există unele instrumente care pot fi utilizate pentru a controla utilizarea procesorului procesului pentru aceste sarcini înfometate de resurse.

Pentru a emula o sarcină intensivă în procesor, putem folosi un instrument numit

matho-prime care generează o listă de numere prime. Dacă îi cereți să genereze o listă suficient de mare, acesta va maximiza CPU în timp ce funcționează. A instala matho-prime pe Ubuntu sau pe o utilizare Raspberry Pi:

sudoapt-get install matomatic-primii

Să începem sarcina și să vedem utilizarea procesorului:

matho-primii 09999999999> p.txt &

Acest lucru spune matho-primii pentru a genera o listă de numere prime de la zero la nouă miliarde nouă sute nouăzeci și nouă milioane nouă sute nouăzeci și nouă mii nouă sute nouăzeci și nouă! Ieșirea este redirecționată către fișier p.txt. Ampersand-ul de la sfârșit îi spune shell-ului să ruleze programul în fundal, ceea ce înseamnă că sunteți returnat la promptul de comandă imediat după începerea sarcinii.

Acum rulați top comandați și observați cantitatea de CPU utilizată de generatorul de numere prime.

matho-primes-max-cpu

Acum, să ucidem această sarcină și să vedem cum o putem lansa cu o prioritate mai mică. Ieșire top prin apăsarea q, apoi tastați fg a aduce matho-primii în prim-plan și apoi apăsați „Ctrl + C” pentru a forța programul să iasă.

Acum porniți din nou programul, dar la începutul comenzii adăugați cuvântul Grozav:

Grozav matho-primii 09999999999> p.txt &

Grozav este un instrument care îi spune Linux să programeze această sarcină cu o prioritate mai mică. Simpatia variază de la -20 (programarea cea mai favorabilă) la 19 (cea mai puțin favorabilă). În mod implicit Grozav va programa sarcina cu o frumusețe de 10. În mod implicit, sarcinile normale sunt pornite cu o similitudine zero. Aceasta înseamnă că o sarcină cu o frumusețe de 10 va fi văzută ca având o prioritate mai mică și va primi resurse CPU mai rar.

Acum putem începe un al doilea generator de numere prime pentru a imita alte sarcini pe care doriți să le efectuați pe computer (cum ar fi navigarea pe web sau scrierea unui document). Aceasta va avea o frumusețe normală, deoarece utilizarea desktopului ar trebui să fie o prioritate mai mare decât rularea generatorului de numere prime.

matho-primii 09999999999> p2.txt &

Rețineți că ieșirea din acest fișier este redirecționată către p2.txt. Ieșirea din top va arăta cam așa:

matho-primes-nice

După cum puteți vedea, procesul cu o simpatie mai mare primește mai puțin timp de procesor. Acest lucru înseamnă că, dacă lansați o sarcină intensivă cu CPU Grozav, nu va face mașina să se simtă lentă sau să provoace un răspuns lent.

cpulimit

Există o altă comandă numită „cpulimit” care, mai degrabă decât schimbarea priorității de programare, întrerupe temporar un proces pentru a se asigura că nu depășește utilizarea dorită a procesorului.

Pentru a-l instala, tastați:

sudoapt-get install cpulimit

Acum executați din nou generatorul intensiv de numere prime CPU și notați numărul PID al acestuia folosind această comandă:

ps|grep matho-prime

Prima coloană a ieșirii este PID. Acum limitați utilizarea procesorului în acest proces astfel:

sudo cpulimit -b-l50-p16299

În cazul în care 16299 este PID al matho-primii proces. O privire cu top va arăta așa ceva:

matho-primes-cpulimit

Mergând mai departe

Există o comandă însoțitoare pentru Grozav numit renice ceea ce va schimba frumusețea unui proces existent. Încercarea de utilizare top sau ps cu grep pentru a obține PID-ul unui proces și utilizare renice +19 16299 pentru a seta prioritatea la cea mai mică valoare posibilă (unde 16299 este PID-ul procesului).

Simțiți-vă liber să adăugați în discuția din comentariul de mai jos.

Divulgarea afiliatului: Make Tech Easier poate câștiga comision pentru produsele achiziționate prin linkurile noastre, ceea ce susține munca pe care o facem pentru cititorii noștri.

insta viewer
Teachs.ru