Wir wollten wissen, ob es eine Beziehung gibt zwischen der maximalen Speichermenge, die verwendet werden kann, um eine Datei über mmap() abzubilden und der Größe des RAM in einer Linux-Box . Ich habe versucht, einige Dateien im Speicher abzulegen, und habe festgestellt, dass ich keine weiteren Dateien zuordnen kann, wenn die Verwendung von "Mapped" dem "MemTotal" nahe kommt (angezeigt über cat/proc/meminfo).Speicherverbrauch beim Laden von Dateien via mmap()
Von/proc/meminfo auf der 64-Bit-Linux-Box:
MemTotal: 32909628 kB
MemFree: 221.744 kB
Puffer: 1800 kB
Mapped: 31642928 kB
CommitLimit: 38012616 kB
Committed_AS: 42641120 kB
VmallocTotal: 536870911 kB
VmallocUsed: 299.920 kB
VmallocChunk: So 536.568.999 kB
, bin ich recht in der Annahme, dass die "Mapped" usage würde niemals das "MemTotal" überschreiten. Die Verwirrung, die ich habe, war ich der Meinung, dass die Erinnerung immer virtuell ist, wenn wir eine Datei mappen.
Danke!
Weitere Informationen in meiner Frage hinzugefügt. Unter MAC-Adressraumlimit versteht man das Limit des virtuellen Speichers. Aber ich habe zu dieser Zeit eine Menge virtuellen Speicher. – sim
Ich meine die Grenze, wie viel Adressraum ein einzelner Prozess gleichzeitig kartieren kann. – bdonlan
Ich würde denken, das wäre eine Menge in einer 64-Bit-Linux-Box. Mein Programm lädt nur eine 1,5-GB-Datei in den Speicher. – sim