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


Skripta timeout je koristan program za praćenje resursa za ograničavanje vremena i potrošnje memorije procesa u Linuxu. Omogućava vam da pokrenete programe pod kontrolom i nametnete ograničenja vremena i memorije, prekidajući program nakon kršenja ovih parametara.

Nije potrebna instalacija, jednostavno izvršite naredbu zajedno sa njenim argumentima koristeći program timeout i on će nadgledati 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 sistemu i montiran /proc sistem datoteka.

Da provjerite instaliranu verziju Perl na vašem Linux sistemu, pokrenite sljedeću naredbu.

perl -v

Zatim, klonirajte spremište timeout na vaš sistem pomoću naredbe git, a zatim pređite u lokalno spremište koristeći cd komandu i pozovite ga kao uobičajenu Linux naredbu.

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

Pogledajmo sada kako funkcionira skripta timeout.

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

Ovaj prvi primjer pokazuje kako ograničiti upotrebu memorije procesa na 100M virtuelne memorije, koristeći zastavu -m. Zadana jedinica za memoriju je u kilobajtima.

Ovdje komanda stress-ng pokreće 4 stresora virtuelne memorije (VMS) koji se kombinuju da koriste 40% dostupne memorije 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čki procesi stress-ng su prekinuti nakon samo 1,16 sekundi. To je zato što je kombinovana potrošnja memorije VMS-a (438660 kilobajta) veća od dozvoljene upotrebe virtuelne memorije za stress-ng i njegovo dijete procesi.

Osnovno vremensko ograničenje procesa:

Da omogućite vremensko ograničenje procesa, koristite 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 od 4, radni procesi se ubijaju.

Ograničavanje vremena i memorije procesa

Također možete ograničiti i memoriju i vrijeme odjednom na sljedeći način.

./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, što omogućava otkrivanje prekida.

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

Možete pratiti ograničenje memorije za RSS (stalnu veličinu) pomoću prekidača --memlimit-rss ili -s .

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

Dodatno, da biste vratili izlazni kod ili signal+128 procesa, koristite opciju --priznati 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 spremište: https://github.com/pshved/timeout.

Ovi sljedeći srodni članci također bi vam mogli biti podjednako korisni:

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

Skripta timeout je jednostavan program za praćenje resursa koji u suštini ograničava potrošnju vremena i memorije procesa u Linuxu. Možete nam dati povratne informacije o skripti timeout putem obrasca za komentare ispod.