Como limitar o uso de memória de um processo específico no linux?

7

Eu escrevi um programa para uma classe que meu professor estará testando em vários ambientes de pouca memória para ver como ele se comporta quando o programa fica sem memória. Existe uma maneira de simular a execução em um ambiente com pouca memória sem criar uma máquina virtual?

    
por user20222 24.04.2010 / 12:58

1 resposta

8

Você vai querer usar ulimit

ulimit can be used to limit memory utilization (among other things)

Here is an example of setting memory usage so low that /bin/ls (which is larger than /bin/cat) no longer works, but /bin/cat still works.

$ ls -lh /bin/ls /bin/cat
-rwxr-xr-x 1 root root 25K May 24 2008 /bin/cat
-rwxr-xr-x 1 root root 88K May 24 2008 /bin/ls
$ date > test.txt
$ ulimit -d 10000 -m 10000 -v 10000
$ /bin/ls date.txt
/bin/ls: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Cannot allocate memory
$ /bin/cat date.txt
Thu Mar 26 11:51:16 PDT 2009
$

Note: If I set the limits to 1000 kilobytes, neither program works, because they load libraries, which increase their size. above 1000 KB.

-d data segment size

-m max memory size

-v virtual memory size

Run ulimit -a to see all the resource caps ulimits can set.

    
por 24.04.2010 / 13:18