Wenn Sie ein In-Memory-Dateisystem verwenden, läuft mehr als nur Daten in den Arbeitsspeicher. Sie müssen immer noch mit den Datenstrukturen umgehen, die der Datei zugeordnet sind, einschließlich der Nachverfolgung, wo sich alle Zuordnungen im Speicher befinden. Das Schreiben dieser Informationen erfordert ebenfalls Zeit (insbesondere wird für die von Ihnen durchgeführten Tests die Dateigröße bei jedem Schreibvorgang aktualisiert, wodurch sofort die Anzahl der Stellen verdoppelt wird, in denen sich die Daten im Speicher befinden).
Das Zuweisen von Speicher ist außerdem extrem langsam. In der Tat handelt es sich dabei um eines der langsamsten Dinge, die Sie auf den meisten Systemen tun können, bei denen keine E / A-Operationen erforderlich sind. Das einzig wesentlich langsamere ist das Erstellen eines neuen Threads oder Prozesses. Tools wie ramspeed
der gesamte Speicher, den sie gleich beim Start verwenden, vorab reservieren, damit sie die tatsächliche Speicherleistung testen können. Im Vergleich dazu hat tmpfs keine Ahnung, wie groß eine Datei sein wird, die Sie erstellen werden. Daher muss alles nach Bedarf zugewiesen werden. Dies geschieht in dd
Blöcken, die nicht größer als die Blockgröße sind (ich denke, es liegt bei 64 KB, aber Ich bin mir nicht sicher). Aus diesem Grund haben Sie in jedem Block einen Aufwand für die Zuweisung von Speicher, um diesen Block zu speichern.