Como definir um limite de memória para um processo específico?

8

Eu tentei executar mpiexec -16 ... em um servidor de 384 GB de RAM, mas ele induziu OOM Killer e foi abortado.

Como posso definir um limite de memória para mpiexec execução?

Eu sei ulimit , mas isso pode afetar outros processos.

Obrigado.

    
por Benben 13.08.2014 / 19:10

1 resposta

7

Acho que isso pode ser feito usando cgroups :

Crie um cgroup chamado mpigroup (ou qualquer outro nome que você escolher) com um limite de memória (de 50 GB, por exemplo):

cgcreate -g memory,cpu:mpigroup
cgset -r memory.limit_in_bytes=$((50*1024*1024*1024)) mpigroup

Então, se o mpiexec já estiver rodando, traga-o para este cgroup:

cgclassify -g memory,cpu:mpigroup $(pidof mpiexec)

Ou execute mpiexec neste cgroup:

cgexec -g memory,cpu:mpigroup mpiexec -16 ...
    
por muru 13.08.2014 / 19:56