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


8

Я использую фоновый сервис, который время от времени теряет память. Чтобы не использовать Alt+ SysRq REISUB[ 1 ], я бы хотел ограничить использование оперативной памяти для одного процесса или пользователя системы.

Я действительно хотел бы сказать: пользователь x может использовать максимальный объем оперативной памяти в 1 ГБ.

Это возможно? Нужна ли для этого какая-нибудь виртуальная машина? Я использую Ubuntu 9.10.

Ответы:


10

ulimit твой друг. Проверьте флаг -m. Я думаю, что вы установили это до того, как запустите свой процесс, и с тех пор он применяется (в текущей оболочке).


Спасибо, хороший совет! Как я понимаю, ulimit ограничивает потребление памяти всеми пользователями / процессами / какими бы то ни было. Мне просто нравится ограничивать его одним пользователем / процессом и подпроцессами.
Guerda

1
ulimit - это команда оболочки, которая влияет только на процессы, запущенные из той же оболочки после выполнения ulimit. Вы запускаете процесс в сценарии оболочки с помощью команды ulimit, чтобы он влиял только на этот процесс.
KeithB

4

В дополнение к командам оболочки ulimit(для bash) или limit(для csh) вы можете управлять этим изнутри вашего кода с помощью ulimit()функции.


1
Обязательные страницы управления: linux.die.net/man/1/ulimit (команда оболочки) и linux.die.net/man/3/ulimit (функция C).
Stephan202
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.