Kuinka rajoittaa prosessien aikaa ja muistin käyttöä Linuxissa


Aikakatkaisuohjelma on hyödyllinen resurssienseurantaohjelma, jolla rajoitetaan prosessien aikaa ja muistin kulutusta Linuxissa. Sen avulla voit ajaa ohjattuja ohjelmia ja valvoa aika- ja muistirajoituksia ja lopettaa ohjelman näiden parametrien rikkomisen jälkeen.

Asennusta ei tarvita, suorita komento yhdessä sen argumenttien kanssa aikakatkaisuohjelmalla ja se seuraa komennon muistia ja ajankulutusta keskeyttämällä prosessin, jos se ylittää rajat, ja ilmoittaa sinulle ennalta määritetyllä viestillä.

Tämän komentosarjan suorittaminen edellyttää, että Perl 5 on asennettu Linux-järjestelmään ja/proc-tiedostojärjestelmä on asennettu.

Voit tarkistaa Perlin asennetun version Linux-järjestelmästäsi suorittamalla seuraavan komennon.

$ perl -v

Kloonaa sitten aikakatkaisuvarasto järjestelmään tavallisella Linux-komennolla.

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

Katsotaan nyt, kuinka aikakatkaisu toimii.

Tämä ensimmäinen esimerkki osoittaa, kuinka prosessin muistin käyttö voidaan rajoittaa 100 miljoonaan virtuaalimuistiin -m -lipun avulla. Muistin oletusyksikkö on kilotavuina.

Tässä stress-ng-komento suorittaa 4 virtuaalimuististressoria (VMS), jotka yhdessä käyttävät 40% käytettävissä olevasta muistista 10 minuutin ajan. Siten kukin stressitekijä käyttää 10% käytettävissä olevasta muistista.

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

Kun otetaan huomioon edellä olevan aikakatkaisukomennon tulos, stress-ng-työntekijäprosessit lopetettiin vain 1,16 sekunnin kuluttua. Tämä johtuu siitä, että VMS: n yhdistetty muistin kulutus (438660 kilotavua) on suurempi kuin sallittu virtuaalimuistin käyttö stress-ng: lle ja sen aliprosesseille.

Ota prosessin aikaraja käyttöön käyttämällä -t -lippua kuvan osoittamalla tavalla.

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

Yllä olevassa esimerkissä, kun stressin ng CPU + SYS-aika ylittää määritetyn arvon 4, työntekijän prosessit tapetaan.

Voit myös rajoittaa sekä muistia että aikaa kerralla seuraavasti.

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

Aikakatkaisu tukee myös joitain lisäasetuksia, kuten --detect-hangups , joka mahdollistaa hangup-tunnistuksen.

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

Voit seurata RSS (resident set size) -muistirajaa kytkimellä --memlimit-rss tai -s .

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

Jos haluat palauttaa prosessin poistumiskoodin tai signaalin + 128, käytä vaihtoehtoa --confess tai -c kuvan mukaisesti.

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

Lisätietoja ja käyttöesimerkkejä on aikakatkaisun Github-arkistossa: https://github.com/pshved/timeout.

Saatat myös pitää näitä seuraavia artikkeleita yhtä hyödyllisinä:

  1. Kuinka löytää 15 suosituinta prosessia muistin avulla 'top' -toiminnolla erätilassa
  2. CPUTool - rajoita ja hallitse minkä tahansa Linux-prosessorin suorittimen käyttöä
  3. Kuinka rajoittaa prosessorin suorittimen käyttöä Linuxissa CPULimit-työkalulla

Aikakatkaisukomentosarja on yksinkertainen resurssienseurantaohjelma, joka rajoittaa olennaisesti prosessien aikaa ja muistin kulutusta Linuxissa. Voit antaa meille palautetta aikakatkaisukomentosta alla olevan kommenttilomakkeen kautta.