Wyszukiwanie w witrynie

Jak ograniczyć wykorzystanie czasu i pamięci przez procesy w systemie Linux


Skrypt timeout to przydatny program do monitorowania zasobów, pozwalający ograniczyć zużycie czasu i pamięci przez procesy w systemie Linux. Pozwala na kontrolowane uruchamianie programów oraz egzekwowanie limitów czasu i pamięci, kończąc program w przypadku naruszenia tych parametrów.

Nie wymaga instalacji, po prostu wykonaj polecenie wraz z jego argumentami za pomocą programu timeout, a on będzie monitorował pamięć polecenia i zużycie czasu, przerywając proces, jeśli przekroczy limity, i powiadomi Cię za pomocą predefiniowanego wiadomość.

Aby uruchomić ten skrypt, musisz mieć zainstalowany Perl 5 w swoim systemie Linux i zamontowany system plików /proc.

Aby sprawdzić zainstalowaną wersję Perla w systemie Linux, uruchom następującą komendę.

perl -v

Następnie sklonuj repozytorium timeout do swojego systemu za pomocą polecenia git, następnie przejdź do lokalnego repozytorium za pomocą polecenia cd i wywołaj je jak zwykłe polecenie systemu Linux.

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

Przyjrzyjmy się teraz, jak działa skrypt limitu czasu.

Podstawowe ograniczenie pamięci (100M pamięci wirtualnej):

Ten pierwszy przykład pokazuje, jak ograniczyć użycie pamięci przez proces do 100M pamięci wirtualnej, używając flagi -m. Domyślną jednostką pamięci są kilobajty.

W tym przypadku polecenie stress-ng uruchamia 4 stresory pamięci wirtualnej (VMS), które łącznie wykorzystują 40% dostępnej pamięci przez 10 minut. Zatem każdy stresor zużywa 10% dostępnej pamięci.

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

Biorąc pod uwagę wynik powyższego polecenia timeout, procesy robocze stres-ng zostały zakończone już po 1,16 sekundzie. Dzieje się tak, ponieważ łączne zużycie pamięci przez VMS (438660 kilobajtów) jest większe niż dozwolone użycie pamięci wirtualnej dla stres-ng i jego dziecka procesy.

Podstawowe ograniczenie czasowe procesu:

Aby włączyć ograniczenie czasu procesu, użyj flagi -t, jak pokazano.

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

W powyższym przykładzie, gdy czas stresowania CPU+SYS przekracza zdefiniowaną wartość 4, procesy robocze są zabijane.

Ograniczanie czasu i pamięci procesu

Możesz także ograniczyć jednocześnie pamięć i czas w następujący sposób.

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

Limit czasu obsługuje także niektóre zaawansowane opcje, takie jak --detect-hangups, które umożliwiają wykrywanie rozłączenia.

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

Możesz monitorować limit pamięci RSS (rozmiar zestawu rezydentnego) za pomocą przełącznika --memlimit-rss lub -s .

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

Dodatkowo, aby zwrócić kod zakończenia lub sygnał+128 procesu, użyj opcji --confess lub -c, jak pokazano.

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

Więcej informacji i przykład użycia znajdziesz w repozytorium timeout Github: https://github.com/pshved/timeout.

Równie przydatne mogą okazać się następujące powiązane artykuły:

  1. Jak znaleźć 15 procesów o najwyższym zużyciu pamięci z „górą” w trybie wsadowym
  2. CPUTool – ograniczaj i kontroluj wykorzystanie procesora przez dowolny proces w systemie Linux
  3. Jak ograniczyć użycie procesora przez proces w systemie Linux za pomocą narzędzia CPULimit

Skrypt timeout to prosty program do monitorowania zasobów, który zasadniczo ogranicza zużycie czasu i pamięci przez procesy w systemie Linux. Możesz przekazać nam opinię na temat skryptu limitu czasu, korzystając z poniższego formularza komentarza.