2009-06-09 2 views
7

Ich möchte die Speicherauslastung für mein Perl-Skript begrenzen, das auf einem Linux-System ausgeführt wird. Ich habe versucht, BSD::Resource 's setrlimit zu verwenden, aber habe Probleme gehabt. Ich würde mich über Hinweise freuen. Vielen Dank.Wie die Auslastung des Prozessspeichers unter Linux begrenzt wird (z. B. mit BSD :: Resource)

+0

Können Sie die Probleme beschreiben? Versuchen Sie, ein Limit zu verhindern oder zu verursachen? – ysth

+0

stellen Sie sicher, dass Sie die harte Grenze hinzufügen, nicht weiche. –

Antwort

7

Wenn Sie Code entwickeln, ist es einfach, Ihr Perl-Programm weglaufen zu lassen und den gesamten Speicher zu verbrauchen. Die Maschine wird zum Stillstand kommen, bis das Programm den Speicher erschöpft und stirbt. Sie können dieses Problem vermeiden:

Mit diesem Code:

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

ich diesen Code in limit.pm setzen (daher die "1";). Ich kann dann sagen

use limit; 

an der Spitze eines Programms, das ich begrenzen möchte.

+0

Funktioniert auch mit Python, danke :) – Joril

+0

@Joril Wie funktioniert das in Python? – alvas

+1

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

3

Scott Corely schlägt die Einstellung ulimit vor dem Ausführen des Perl-Skripts.

Verwandte Themen