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:
- Jak znaleźć 15 procesów o najwyższym zużyciu pamięci z „górą” w trybie wsadowym
- CPUTool – ograniczaj i kontroluj wykorzystanie procesora przez dowolny proces w systemie Linux
- 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.