2009-06-09 37 views
7

Me gustaría limitar el uso de memoria para mi script Perl, que se ejecuta en un sistema Linux. He estado tratando de usar BSD::Resource 's setrlimit, pero he estado teniendo problemas. Agradecería cualquier sugerencia. Gracias.Cómo limitar la utilización de la memoria de proceso en Linux (por ejemplo, utilizando BSD :: Resource)

+0

¿Puede describir los problemas? ¿Estás tratando de evitar o causar un límite? – ysth

+0

asegúrese de agregar el límite duro, no el blando. –

Respuesta

7

Cuando está desarrollando código, es fácil que su programa Perl se escape y consuma toda la memoria. La máquina se detendrá, hasta que el programa agote la memoria y muera. Puede evitar este problema:

Usar este código:

use BSD::Resource; 
setrlimit(get_rlimits()->{RLIMIT_VMEM}, 1_000_000_000, -1) or die; 
1; 

que poner este código en limit.pm (de ahí el "1";). Entonces puedo decir

use limit; 

en la parte superior de cualquier programa que quiera limitar.

+0

Funciona con Python también, gracias :) – Joril

+0

@Joril ¿Cómo funciona eso en python? – alvas

+1

@alvas: Estoy usando resource.setrlimit (resource.RLIMIT_RSS, (megs * 1048576L, -1L)) – Joril

3

Scott Corely sugiere la configuración ulimit antes de ejecutar el script perl.

Cuestiones relacionadas