Weboldal keresés

A folyamatok idő- és memóriahasználatának korlátozása Linuxban


Az timeout szkript egy hasznos erőforrás-figyelő program a folyamatok idő- és memóriafogyasztásának korlátozására Linuxban. Lehetővé teszi a programok irányított futtatását, valamint az idő- és memóriakorlátok érvényesítését, a program leállítását ezen paraméterek megsértése esetén.

Nincs szükség telepítésre, egyszerűen hajtsa végre a parancsot az argumentumokkal együtt a timeout programmal, és figyeli a parancs memóriáját és időfelhasználását, megszakítja a folyamatot, ha túllép a korlátokon, és értesíti Önt az előre meghatározott üzenet.

A szkript futtatásához telepíteni kell a Perl 5-öt a Linux rendszerére, és a /proc fájlrendszert fel kell szerelni.

A Linux rendszeren a Perl telepített verziójának ellenőrzéséhez futtassa a következő parancsot.

perl -v

Ezután klónozza az timeout tárolót a rendszerére a git paranccsal, majd lépjen be a helyi tárolóba a cd paranccsal, és hívja meg a szokásos Linux-parancsként.

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

Most nézzük meg, hogyan működik az timeout szkript.

Alap memóriakorlátozás (100M virtuális memória):

Ez az első példa bemutatja, hogyan korlátozható egy folyamat memóriahasználata 100M virtuális memóriára a -m jelző használatával. A memória alapértelmezett mértékegysége kilobyte.

Itt a stress-ng parancs 4 virtuális memória stresszort (VMS) futtat, amelyek együttesen a rendelkezésre álló memória 40%-át használják 10 percig. Így minden stressz okozó a rendelkezésre álló memória 10%-át használja.

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

Figyelembe véve a fenti timeout parancs kimenetét, a stress-ng worker folyamatok mindössze 1,16 másodperc után leálltak. Ennek az az oka, hogy a VMS együttes memóriafogyasztása (438660 kilobájt) nagyobb, mint a stress-ng és gyermeke számára engedélyezett virtuális memóriahasználat folyamatokat.

A folyamat alapvető időkorlátja:

A folyamat időkorlátozásának engedélyezéséhez használja a -t jelzőt az ábrán látható módon.

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

A fenti példában, amikor a stress-ng CPU+SYS idő meghaladja a 4 meghatározott értéket, a munkafolyamatok leállnak.

Korlátozza mind az időt, mind a folyamat memóriáját

Az alábbiak szerint egyszerre korlátozhatja a memória és az idő mennyiségét.

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

Az időtúllépés néhány speciális beállítást is támogat, mint például a ---detect-hangups, amely lehetővé teszi a hívásmegszakítás észlelését.

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

Az RSS (resident set size) memóriakorlátot a --memlimit-rss vagy a -s kapcsolóval figyelheti. .

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

Ezenkívül egy folyamat kilépési kódjának vagy jel+128-as visszaadásához használja a --confess vagy a -c opciót az ábrán látható módon.

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

További információkért és használati példákért tekintse meg az timeout Github-tárat: https://github.com/pshved/timeout.

Hasonlóan hasznosnak találhatja a következő kapcsolódó cikkeket is:

  1. Hogyan lehet megtalálni a 15 legnépszerűbb folyamatot memóriahasználat alapján a „legfeljebb” kötegelt módban
  2. CPUTool – Korlátozza és szabályozza a Linux bármely folyamatának CPU-használatát
  3. Hogyan lehet korlátozni egy folyamat CPU-használatát Linuxban a CPULimit eszközzel

Az timeout szkript egy egyszerű erőforrás-figyelő program, amely alapvetően korlátozza a Linux folyamatainak idő- és memóriafelhasználását. Az alábbi megjegyzés űrlapon keresztül visszajelzést küldhet nekünk az timeout szkriptről.