Ограничение нагрузки на процессор в Linux

[:ru]


Так как у Raspberry Pi не такая большая производительность, а всякий там i2prouter иногда пытается отожрать все 100% от процессора, пришлось нагрузку таких процессов ограничить. Оказалось, что для этого уже есть готовое решение в виде одной простенькой консольной программы.

Программа называется cpulimit. Работает она из консоли, так что пойдет и для сервера, и для обычного компьютера.

Установка

Для дистрибутивов, основанных на Debian:

sudo apt-get install cpulimit

Описание некоторых параметров:

Указание целевого процесса:
-e — Имя исполняемого файла (нужны права root)
-p — ID процесса (можно посмотреть через top, htop, ps aux и т.д.)
-P — Абсолютный путь к файлу программы, начиная с /

Настройка ограничений:
-c — Количество ядер, используемых процессом
-l — Лимит нагрузки в процентах (например -l 50)
-b — Запустить в фоне
-z — Если процесс не запущен, не найден или завершился, cpulimit завершит свою работу и не будет ждать новый

Полное описание программы: man cpulimit

Использование

Пример для i2p роутера (если кроме него нет других приложений на Java):

sudo cpulimit -e java -l 40 -b

[:en]


Так как у Raspberry Pi не такая большая производительность, а всякий там i2prouter иногда пытается отожрать все 100% от процессора, пришлось нагрузку таких процессов ограничить. Оказалось, что для этого уже есть готовое решение в виде одной простенькой консольной программы.

Программа называется cpulimit. Работает она из консоли, так что пойдет и для сервера, и для обычного компьютера.

Установка

Для дистрибутивов, основанных на Debian:

sudo apt-get install cpulimit

Описание некоторых параметров:

Указание целевого процесса:
-e — Имя исполняемого файла (нужны права root)
-p — ID процесса (можно посмотреть через top, htop, ps aux и т.д.)
-P — Абсолютный путь к файлу программы, начиная с /

Настройка ограничений:
-c — Количество ядер, используемых процессом
-l — Лимит нагрузки в процентах (например -l 50)
-b — Запустить в фоне
-z — Если процесс не запущен, не найден или завершился, cpulimit завершит свою работу и не будет ждать новый

Полное описание программы: man cpulimit

Использование

Пример для i2p роутера (если кроме него нет других приложений на Java):

sudo cpulimit -e java -l 40 -b

[:]