Поиск по сайту:

Как ограничить использование времени и памяти процессами в 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.

Вы также можете найти следующие статьи по теме одинаково полезными:

  1. Как найти 15 лучших процессов по использованию памяти с помощью «top» в пакетном режиме
  2. CPUTool — Ограничивайте и контролируйте загрузку ЦП любым процессом в Linux
  3. Как ограничить использование ЦП процессом в Linux с помощью инструмента CPULimit

Скрипт timeout — это простая программа мониторинга ресурсов, которая существенно ограничивает потребление времени и памяти процессами в Linux. Вы можете оставить нам отзыв о скрипте timeout через форму комментариев ниже.