Estou tentando limitar o uso de memória de um processo
$ulimit -m 2
$/usr/bin/time -l ./myProcess arg1 arg2
O processo é executado sem ser eliminado até time
outputs
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
mostrando que o limite foi superado apesar da linha de comando ulimit -m 5
. Eu também tentei as opções -v
e -l
, mas nenhuma delas parece realmente limitar o uso de memória. Eu também tentei com time
para ter certeza de que não deixaria de ver o uso de memória de um subprocesso. Aqui estão todos os limites depois de usar todos os -m
, -v
e -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
Se eu limitar o tempo de CPU ( ulimit -t 3
), então ele funciona bem e mata o processo após 3 segundos.
Pergunta
Existe algo que eu entendi mal sobre ulimit -m 5
? Existe um bug na minha versão ulimit?
Existe uma alternativa para ulimit
para limitar o tempo e o uso de memória de um processo (não necessariamente a sessão bash)?
Versões
Estou em MAC OSX 10.11.6
e bash version 3.2.57
.
Post relacionado
O post "ulimit não limitando o uso da memória" é muito relacionado, mas eu não acha que a resposta aceita oferece alguma solução sobre como resolver o problema