Назад | Перейти на главную страницу

Как ограничить количество ЦП, которое процесс может использовать с выскочкой (Ubuntu 11.10)

Я хочу ограничить мощность процессора, которую используют мои запланированные задания (Resque for a Rails application), и я нашел эту выскочку, которая кажется многообещающей и может делать то, что я хочу:

http://upstart.ubuntu.com/wiki/Stanzas#limit

Но я не совсем уверен, как его использовать, скажем, я хочу, чтобы процесс использовал максимум 50% одного из двух моих процессоров, что я должен написать в моем файле выскочки?

Кроме того, что произойдет, когда процесс достигнет предела?

В Upstart такой строфы нет. Раздел "limit cpu" ограничивает максимальное время (в секундах), которое процесс может выполняться на CPU. В течение этого времени это может занять 100% ЦП.

См. Man setrlimit (2): http://linux.die.net/man/2/setrlimit

RLIMIT_CPU Ограничение времени процессора в секундах. Когда процесс достигает мягкого предела, ему отправляется сигнал SIGXCPU. Действие по умолчанию для этого сигнала - завершить процесс. Однако сигнал может быть перехвачен, и обработчик может вернуть управление основной программе. Если процесс продолжает использовать процессорное время, ему будет отправляться SIGXCPU один раз в секунду до тех пор, пока не будет достигнут жесткий предел, после чего он будет отправлен SIGKILL. (Этот последний пункт описывает поведение Linux. Реализации различаются по тому, как они обрабатывают процессы, которые продолжают потреблять время ЦП после достижения мягкого предела. Переносные приложения, которым необходимо перехватить этот сигнал, должны выполнить упорядоченное завершение после первого получения SIGXCPU.)