2017-03-17 4 views
2

Ich habe einen Algorithmus, wo mein Leben würde stark vereinfacht werden, wenn ich etwa 20 Blöcke von Speicheradressen der Größe 4 GB behalten kann. In der Praxis verwende ich nie mehr als 4GB, aber ich weiß nicht, welcher Block im Voraus gefüllt wird.Was kostet MMaping unter Mac OS X?

Wenn ich mmap 20 Blöcke von 4GB scheint alles gut zu funktionieren - bis ich in den Speicher schreiben scheint das Betriebssystem tatsächlich nichts zuweisen.

Gibt es einen Grund, warum ich nicht mmap verwenden sollte 80 GB Speicher zuzuweisen, und dann auch nur eine kleine Menge davon mit? Ich nehme an, es gibt einige Kosten für die Einrichtung dieser Puffer. Kann ich es messen?

Antwort

2

Der einzige Nachteil von mmap-ing 80GB auf einmal ist, dass ein page table für das volle 80 GB erstellt werden muss. Wenn die Seiten also 4kB groß sind, könnte diese Tabelle viel Speicher belegen (es sei denn, huge pages wird verwendet).

Für Größen wie diese ist es wahrscheinlich besser, eine oder mehrere gleitende mmap-ed Ansichten zu verwenden (d. H. Erstellen und entfernen Sie sie bei Bedarf).

Unter Windows Speichernutzung für mmap/Seitentabellen können mit RamMap, nicht sicher Mac überprüft werden.