1

Я пытаюсь ограничить использование памяти процессом

$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 .

Связанный пост

Пост "Не ограничивайте использование памяти" очень связан, но я не думаю, что принятый ответ предлагает какое-либо решение о том, как решить проблему.

0