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é que as time
saídas
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 ultrapassado, apesar da ulimit -m 5
linha de comando. Eu também tentei as opções -v
e -l
, mas nenhum deles parece realmente limitar o uso de memória. Eu também tentei time
garantir que não deixaria de ver o uso de memória de um subprocesso. Aqui estão todos os limites depois de usar todos -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 da CPU ( ulimit -t 3
), ele funcionará bem e interromperá o processo após 3 segundos.
Pergunta, questão
Existe algo que eu entenda mal ulimit -m 5
? Existe um erro na minha versão ulimit?
Existe uma alternativa para ulimit
limitar o tempo e o uso de memória de um processo (não necessariamente a sessão do bash)?
Versões
Eu estou MAC OSX 10.11.6
e bash version 3.2.57
.
Post relacionado
O post "ulimit não limita o uso da memória" está muito relacionado, mas não acho que a resposta aceita ofereça qualquer solução sobre como resolver o problema
bash
, mas a página de manual do Linux diz que "muitos sistemas não respeitam esse limite [-m]".