Thread ulimit -a liefert keine Ausgabe (9 answers)
Opened by ingobulla at 2008-12-17 17:46

murphy
 2008-12-18 00:35
#117341 #117341
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Tja, welchen Parameter Du setzen musst, haengt davon ab, was Du machen willst. Die Anforderung, dass ein Prozess nicht
Quote
[...] mehr als 4 GB in Anspruch nehmen [...]
soll, ist einfach nicht spezifisch genug:

- Mit ulimit -d ... bzw. setrlimit(RLIMIT_DATA, ...) beschraenkst Du die Menge an virtuellem Speicher, die von automatisch aus der ausfuehrbaren Datei geladenen Datensektionen und mittels brk / sbrk allozierten Seiten belegt werden darf. Wenn Du nicht weisst, ob der Allokator des betreffenden Prozesses ueberhaupt diese Systemaufrufe verwendet, und nicht vielleicht direkt mmap benutzt, ist das Limit je nach Betriebssystem wohl wenig sinnvoll. Wenn das Limit ueberschritten wird, bricht der Kernel den Prozess in der Regel mit einem SEGV-Signal ab.

- Mit ulimit -l ... bzw. setrlimit(RLIMIT_MEMLOCK, ...) beschraenkst Du die Menge an physikalischem Speicher, der so zugewiesen ist, dass er nicht ausgelagert werden darf. Meistens existiert hier bereits standardmaessig ein recht geringes Limit und nur wenige Programme brauchen solchen Speicher, zum Beispiel um kryptographische Schluessel abzulegen. Wenn das Limit ueberschritten wird, bricht der Kernel den Prozess in der Regel mit einem SEGV-Signal ab.

- Mit ulimit -m ... bzw. setrlimit(RLIMIT_RSS, ...) beschraenkst Du die Menge an physikalischem Speicher, der aktuell insgesamt von dem Programm belegt wird, also die Groesse aller Seiten, die dem Programm gehoeren und nicht ausgelagert sind. Je nach Betriebssystem haengt es auch hier vom Allokator ab, ob das Limit etwas bewirkt. Je nach Betriebssystem wird der Prozess auch nicht abgebrochen, wenn er dieses Limit ueberschreitet, sondern es werden einfach mehr Speicherseiten ausgelagert, was den Prozess nur langsamer macht und den Speichermanager des Kernels zusaetzlich belastet.

- Mit ulimit -v ... bzw. setrlimit(RLIMIT_AS, ...) beschraenkst Du die Menge an virtuellem Speicher, der aktuell insgesamt von dem Programm belegt wird, inklusive ausgelagerter Seiten und inklusive Bereichen, die eigentlich gar keine Daten enthalten. Dieses Limit funktioniert wohl am zuverlaessigsten auf verschiedenen Betriebssystemen aehnlich, ist aber auch am unspezifischsten. Wenn das Limit ueberschritten wird, bricht der Kernel den Prozess in der Regel mit einem SEGV-Signal ab.
When C++ is your hammer, every problem looks like your thumb.

View full thread ulimit -a liefert keine Ausgabe