Fii avertizat: Aici sunt dragoni.
Când începeți să mergeți pe calea controlului specific al resurselor aplicațiilor / proceselor / firelor de execuție în această măsură, începeți să deschideți o cutie de probleme a Pandorei literală când vine timpul să depanați o problemă pe care limitarea ratei dvs. nu a luat-o în considerare.
Acestea fiind spuse, dacă credeți că știți ce faceți, aveți trei opțiuni disponibile: Grozav
, cpulimit
, și grupurile de control (Cgroups).
Iată un TL;DR pentru aceste trei metode:
Grozav ⢠frumos {proces}
Aceasta este o modalitate foarte simplă de a stabili prioritățile unei sarcini și este destul de eficientă pentru utilizări „o singură dată”, cum ar fi reducerea priorității unei sarcini de lungă durată, costisitoare din punct de vedere computațional, care ar trebui să utilizeze mai mult CPU atunci când mașina nu este utilizată. de alte sarcini (sau oameni).
Limita CPU ⢠cpulimit -l 60 {proces}
Dacă performanța serverului dvs. suferă (a.k.a. se blochează) atunci când utilizarea procesorului depășește o anumită cantitate, atunci cpulimit
poate ajuta la reducerea presiunii asupra sistemului.Face acest lucru întrerupând procesul la intervale diferite pentru a-l menține sub un plafon definit prin trimitere SIGSTOP
și SIGCONT
semnale către proces. cpulimit
nu schimbă Grozav
valoarea procesului, în schimb monitorizează și controlează utilizarea CPU în lumea reală.
Veți găsi asta cpulimit
este util atunci când doriți să vă asigurați că un proces nu folosește mai mult de o anumită porțiune a procesorului, la care face aluzie întrebarea dvs., dar un dezavantaj este că procesul nu poate folosi tot timpul disponibil al procesorului când sistemul este inactiv ( care Grozav
permite).
Cgrupuri
sudo cgcreate -g cpu:/restrâns
sudo cgset -r cpu.shares=768 reținut
sudo cgexec -g cpu: restrâns {proces}
Cgroups – grupurile de control – sunt o caracteristică încorporată în nucleul Linux care vă permite să controlați modul în care ar trebui să fie alocate resursele. Cu Cgroups puteți specifica cât de mult CPU, memorie, lățime de bandă, sau combinații ale acestor resurse poate fi folosit de procesele care sunt atribuite unui grup.
Un avantaj cheie al Cgroups față de Grozav
sau cpulimit
este că limitele sunt aplicate unui set de procese; nu doar unul. Grozav
și cpulimit
sunt, de asemenea, limitate la limitarea utilizării CPU a unui proces, în timp ce Cgroups pot limita alte resurse de proces.
Dacă te duci în carbura Cgroups, atunci poți hiper-optimiza un sistem pentru un anumit set de sarcini.