Как ограничить использование времени и памяти процессами в Linux
Скрипт timeout — это полезная программа мониторинга ресурсов, позволяющая ограничить потребление времени и памяти процессами в Linux. Он позволяет запускать программы под контролем и устанавливать ограничения по времени и памяти, завершая работу программы при нарушении этих параметров.
Установка не требуется, просто выполните команду вместе с ее аргументами, используя программу timeout, и она будет отслеживать использование памяти и времени команды, прерывая процесс, если он выходит за пределы, и уведомляет вас с помощью предопределенных сообщение.
Чтобы запустить этот сценарий, в вашей системе Linux должен быть установлен Perl 5 и смонтирована файловая система /proc.
Чтобы проверить установленную версию Perl в вашей системе Linux, выполните следующую команду.
perl -v
Затем клонируйте репозиторий timeout в свою систему с помощью команды git, затем перейдите в локальный репозиторий с помощью команды cd и вызовите его как обычную команду Linux.
cd ~/bin
git clone https://github.com/pshved/timeout.git
cd timeout
Давайте теперь посмотрим, как работает скрипт timeout.
Базовое ограничение памяти (100 МБ виртуальной памяти):
В этом первом примере показано, как ограничить использование памяти процессом 100 М виртуальной памяти с помощью флага -m
. По умолчанию единицей измерения памяти являются килобайты.
Здесь команда стресс-нг запускает 4 стрессора виртуальной памяти (VMS), которые в совокупности используют 40% доступной памяти в течение 10 минут. Таким образом, каждый стресс использует 10% доступной памяти.
./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Учитывая вывод приведенной выше команды timeout, рабочие процессы stress-ng были завершены всего через 1,16 секунды. Это связано с тем, что совокупное потребление памяти VMS (438660 килобайт) превышает разрешенное использование виртуальной памяти для stress-ng и его дочернего элемента. процессы.
Основное ограничение времени процесса:
Чтобы включить ограничение времени процесса, используйте флаг -t
, как показано.
./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
В приведенном выше примере, когда время stress-ng CPU+SYS превышает определенное значение 4, рабочие процессы завершаются.
Ограничение времени и памяти процесса
Вы также можете одновременно ограничить память и время следующим образом.
./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Timeout также поддерживает некоторые дополнительные параметры, такие как --detect-hangups
, который позволяет обнаруживать зависания.
./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Вы можете контролировать ограничение памяти RSS (размер резидентного набора) с помощью переключателя --memlimit-rss
или -s
. .
./timeout -m 100000 -s stress-ng --vm 4 --vm-bytes 40% -t 10m
Кроме того, чтобы вернуть код завершения или сигнал+128 процесса, используйте опцию --confess
или -c
, как показано.
./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
Дополнительную информацию и пример использования см. в репозитории timeout Github: https://github.com/pshved/timeout.
Вы также можете найти следующие статьи по теме одинаково полезными:
- Как найти 15 лучших процессов по использованию памяти с помощью «top» в пакетном режиме
- CPUTool — Ограничивайте и контролируйте загрузку ЦП любым процессом в Linux
- Как ограничить использование ЦП процессом в Linux с помощью инструмента CPULimit
Скрипт timeout — это простая программа мониторинга ресурсов, которая существенно ограничивает потребление времени и памяти процессами в Linux. Вы можете оставить нам отзыв о скрипте timeout через форму комментариев ниже.