Wie kann ich die Größe des für das System verfügbaren gemeinsam genutzten Speichers berechnen?

Wie kann ich die Größe des für das System verfügbaren gemeinsam genutzten Speichers berechnen?

Entsprechend derRHEL-Dokument, die Gesamtmenge des im System verfügbaren gemeinsam genutzten Speichers beträgt shmall*PAGE_SIZE.

Nachdem ich die Installation von RHEL 6 abgeschlossen habe, beträgt der Wert des shmallKernelparameters standardmäßig 4294967296, was bedeutet, dass die Gesamtmenge der gemeinsam genutzten Speicherseiten, die systemweit verwendet werden können, 4294967296 beträgt und die Seitengröße 4096 B beträgt. Basierend auf der Formel beträgt die Größe des gemeinsam genutzten Speichers also

4294967296*4096/1024/1024/1024/1024 = 16 TB

... was viel mehr ist als die RAM-Größe (8 GB), über die das Betriebssystem verfügt. Wie kann ein Betriebssystem 16 TB gemeinsam genutzten Speicher finden, den es zuweisen kann?

Ist die Größe also /dev/shmgleich der Größe des gemeinsam genutzten Speichers? Wenn nicht, wie kann ich die tatsächliche Größe des gemeinsam genutzten Speichers ermitteln?

Antwort1

Deine Berechnung ist richtig. shmall kann höher eingestellt werden als der verfügbare virtuelle Speicher. Wenn du versuchen würdest, den gesamten Speicher zu nutzen, würde dies nicht daran scheitern, dass shmall überschritten wird, sondern an anderen Gründen.

Übrigens gibt es auch Befehle, um diese IPC-Grenzen zu finden:

ipcs -l
lsipc  # util-linux>=2.27

Beachten Sie, dass selbst der virtuelle Speicher unter Linux standardmäßig unbegrenzt ist und größer als RAM+Swap ist. Siehe

https://serverfault.com/questions/606185/how-does-vm-overcommit-memory-work

Wie entscheidet der OOM-Killer, welcher Prozess zuerst beendet wird?

Andererseits könnte manGrenzedie Verwendung des virtuellen Speichers pro Prozess ulimt -vhätte auch keine Auswirkungen auf den Kernel /proc/sys/kernel/shmall.

verwandte Informationen