Я пытаюсь ограничить использование памяти процессом
$ulimit -m 2
$/usr/bin/time -l ./myProcess arg1 arg2
Процесс запускается без остановки до time
выхода
7.00 real 4.83 user 2.16 sys
4154855424 maximum resident set size
0 average shared memory size
0 average unshared data size
0 average unshared stack size
1014384 page reclaims
0 page faults
0 swaps
0 block input operations
2 block output operations
0 messages sent
0 messages received
0 signals received
0 voluntary context switches
15 involuntary context switches
показывая, что предел был превышен несмотря на командную строку ulimit -m 5
. Я также попробовал опции -v
и -l
но ни одна из них не ограничивает использование памяти. Я также попытался со time
убедиться, что он не сможет увидеть использование памяти подпроцесса. Вот все ограничения после использования всех -m
, -v
и -l
$ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) 3
max memory size (kbytes, -m) 2
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) 2
Если я ограничу время процессора (ulimit -t 3
), то он будет работать нормально и завершит процесс через 3 секунды.
Вопрос
Есть ли что-то, что я неправильно понимаю в ulimit -m 5
? Есть ли ошибка в моей версии ulimit?
Есть ли альтернатива ulimit
для ограничения времени и использования памяти процессом (необязательно сеанс bash)?
Версии
Я нахожусь на MAC OSX 10.11.6
и bash version 3.2.57
.
Связанный пост
Пост "Не ограничивайте использование памяти" очень связан, но я не думаю, что принятый ответ предлагает какое-либо решение о том, как решить проблему.