Ich habe 2 Stunden damit verbracht, Fragen zu diesem Thema zu lesen, und es gibt immer noch einige Missverständnisse.
Ich habe diesen Prozess:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1452 0.4 1.8 1397012 19308 ? Sl 04:23 3:48 ./transaction_server
Dies zeigt, dass 19.3Mbder systemreservierte Speicher (ich habe keine Auslagerungsdatei) 1.8%für den gesamten 1GBSystemspeicher verwendet wird. Virtuelle Größe ist 1.39GB?!?. Ich habe gelesen, dass ulimit -mdas nicht funktioniert. Menschen verwenden ulimit -vzB das Einstellen des virtuellen Speichers für den Prozess. Ist dieser virtuelle Speicher derjenige, mit dem VSZ aufgelistet ist ps? Welchen Wert sollte ich festlegen, wenn ich diesen Prozess auf die Verwendung von 100MBhöchstens Systemspeicher beschränken möchte . Ich habe die Dokumentation für gelesen setrlimitund dies scheint legitim zu sein:
RLIMIT_AS
This is the maximum size of a process' total available memory,
in bytes. If this limit is exceeded, the malloc() and mmap()
functions shall fail with errno set to [ENOMEM]. In addition,
the automatic stack growth fails with the effects outlined above.
In anderen Versionen der Dokumentation RLIMIT_ASlegt dieser Parameter jedoch die Größe des virtuellen Speichers fest. Was ist die Wahrheit?