Por que o `ulimit` não está limitando o uso de memória como eu esperava?


1

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 timesaí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 5linha de comando. Eu também tentei as opções -ve -l, mas nenhum deles parece realmente limitar o uso de memória. Eu também tentei timegarantir 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, -ve-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 ulimitlimitar 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.6e 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


Provavelmente, isso não está na página de manual do macOS bash, mas a página de manual do Linux diz que "muitos sistemas não respeitam esse limite [-m]".
precisa saber é o seguinte

@dsstorefile mmhhh ... ok. Bem, acho que isso resolve o problema. Deseja dar uma resposta? Você conhece uma alternativa?
Remi.b
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.