Kako ograničiti vrijeme i korištenje memorije procesa u Linuxu


Skripta timeout koristan je program za nadzor resursa za ograničavanje vremena i potrošnje memorije procesa u Linuxu. Omogućuje vam pokretanje programa pod kontrolom i nametanje vremenskih i memorijskih ograničenja, prekidanje programa nakon kršenja ovih parametara.

Nije potrebna instalacija, jednostavno izvršite naredbu zajedno s njezinim argumentima pomoću programa timeout i on će nadzirati memoriju naredbe i potrošnju vremena, prekidajući proces ako izađe iz ograničenja i obavijestit će vas unaprijed definiranim poruka.

Da biste pokrenuli ovu skriptu, morate imati Perl 5 instaliran na vašem Linux sustavu i /proc datotečni sustav montiran.

Za provjeru instalirane verzije Perl-a na vašem Linux sustavu, pokrenite sljedeću naredbu.

perl -v

Zatim klonirajte repozitorij timeout u svoj sustav pomoću naredbe git, zatim prijeđite u lokalni repozitorij pomoću naredbe cd i pozovite ga kao uobičajenu Linux naredbu.

cd ~/bin
git clone https://github.com/pshved/timeout.git
cd timeout

Pogledajmo sada kako radi skripta timeout.

Osnovno ograničenje memorije (100M virtualne memorije):

Ovaj prvi primjer pokazuje kako ograničiti korištenje memorije procesa na 100M virtualne memorije, koristeći oznaku -m. Zadana jedinica za memoriju je u kilobajtima.

Ovdje naredba stress-ng pokreće 4 stresora virtualne memorije (VMS) koji zajedno koriste 40% dostupne memorije tijekom 10 minuta. Stoga svaki stresor koristi 10% dostupne memorije.

./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Uzimajući u obzir izlaz gornje naredbe timeout, radni procesi stress-ng prekinuti su nakon samo 1,16 sekundi. To je zato što je kombinirana potrošnja memorije VMS-a (438660 kilobajta) veća od dopuštene upotrebe virtualne memorije za stress-ng i njegovo dijete procesima.

Osnovno vremensko ograničenje procesa:

Kako biste omogućili vremensko ograničenje procesa, upotrijebite oznaku -t kao što je prikazano.

./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m

U gornjem primjeru, kada vrijeme stress-ng CPU+SYS premaši definiranu vrijednost 4, radni procesi se ukidaju.

Ograničavanje vremena i memorije procesa

Također možete ograničiti i memoriju i vrijeme odjednom kako slijedi.

./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Timeout također podržava neke napredne opcije kao što je --detect-hangups, koja omogućuje otkrivanje prekida veze.

./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Možete nadzirati ograničenje memorije RSS (rezident set size) pomoću prekidača --memlimit-rss ili -s .

./timeout -m 100000 -s  stress-ng --vm 4 --vm-bytes 40% -t 10m

Osim toga, da biste vratili izlazni kod ili signal+128 procesa, koristite opciju --confess ili -c kao što je prikazano.

./timeout -m 100000 -c  stress-ng --vm 4 --vm-bytes 40% -t 10m

Za više informacija i primjer korištenja pogledajte timeout Github repozitorij: https://github.com/pshved/timeout.

Sljedeći povezani članci mogli bi vam također biti jednako korisni:

  1. Kako pronaći 15 najboljih procesa prema korištenju memorije s 'top' u skupnom načinu rada
  2. CPUTool – Ograničite i kontrolirajte korištenje CPU-a bilo kojeg procesa u Linuxu
  3. Kako ograničiti korištenje CPU-a za proces u Linuxu pomoću alata CPULimit

Skripta timeout jednostavan je program za nadzor resursa koji u osnovi ograničava potrošnju vremena i memorije procesa u Linuxu. Možete nam poslati povratne informacije o skripti timeout putem donjeg obrasca za komentare.