7 votos

¿Cómo puedo limitar el uso de memoria de un proceso en linux?

He escrito un programa para una clase que mi profesor pondrá a prueba en diversas bajo ambientes de memoria para ver cómo se comporta cuando el programa se ejecuta fuera de la memoria. ¿Hay alguna manera de simular la ejecución en memoria baja medio ambiente, sin la creación de una máquina virtual?

8voto

ChrisAnnODell Puntos 1047

Usted querrá usar ulimit

ulimit puede ser utilizado para limitar la utilización de la memoria (entre otras cosas)

Aquí está un ejemplo de configuración de uso de la memoria de tan baja que /bin/ls (que es mayor que /bin/cat) no trabaja, pero /bin/cat todavía funciona.

$ 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
$

Nota: Si he de poner los límites a 1000 kilobytes, ni el programa de obras, debido a que la carga de las bibliotecas, que aumentan su tamaño. por encima de 1000 KB.

-d tamaño del segmento de datos

-m tamaño de memoria máx.

-v tamaño de la memoria virtual

Ejecutar ulimit-a para ver todos los recursos de tapas ulimits puede establecer.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: