Ich muss ein In-Memory-Speichersystem für ca. 10 GB Daten einrichten, das aus vielen 100-KB-Einzeldateien (Bildern) besteht. Es wird viele Lese- und Schreibvorgänge geben (Hinzufügen neuer Dateien, Löschen einiger alter Dateien).
Jetzt weiß ich, dass sich tmpfs wie ein reguläres Dateisystem verhält, für das Sie beispielsweise mit df den freien / verwendeten Speicherplatz überprüfen können , was eine nette Funktion ist. Ich bin jedoch interessiert, ob RAMFS einige Vorteile in Bezug auf die Geschwindigkeit von E / A-Vorgängen bieten würde. Ich weiß, dass ich die Größe des verbrauchten Arbeitsspeichers bei Verwendung von RAMs nicht steuern kann und dass mein System hängen bleiben kann, wenn der freie Arbeitsspeicher vollständig verbraucht wird, aber das wird in diesem Szenario kein Problem sein.
Um es zusammenzufassen, ich bin interessiert:
- Leistungstechnisch, was ist schneller: RAMFS oder TMPFS (und möglicherweise warum)?
- Wann verwendet tmpfs Swap Space? Verschiebt es bereits gespeicherte Daten zum Auslagern (um RAM für andere derzeit laufende Programme freizugeben) oder nur neue Daten, wenn in diesem Moment kein RAM mehr frei ist?
quelle
Antworten:
Meine Empfehlung:
Messung und Beobachtung der realen Aktivität unter normalen Bedingungen.
Es ist unwahrscheinlich, dass diese Dateien ALLES benötigen und jederzeit aus dem Cache bereitgestellt werden. Es gibt jedoch ein nützliches Tool namens vmtouch , mit dem Sie feststellen können, was sich zu einem bestimmten Zeitpunkt im Cache befindet. Sie können es auch verwenden, um bestimmte Verzeichnisse oder Dateien im Cache zu sperren. Sehen Sie sich also an, wie die Dinge nach regelmäßigem Gebrauch aussehen. Die Verwendung von tmpfs und ramfs ist in dieser Situation nicht erforderlich.
Siehe: http://hoytech.com/vmtouch/
Ich denke, Sie werden überrascht sein, dass die aktivsten Dateien wahrscheinlich bereits im Cache gespeichert sind.
In Bezug auf tmpfs und ramfs gibt es keinen nennenswerten Leistungsunterschied. Es gibt betriebliche Unterschiede. Ein realer Anwendungsfall ist Oracle, bei dem mithilfe von RAMFS Oracle Daten im RAM verwalten konnte, ohne dass das Risiko eines Datenaustauschs bestand. tmpfs-Daten können unter Speicherdruck ausgelagert werden. Es gibt auch Unterschiede in der Größenänderung und Änderung von Einstellungen im laufenden Betrieb.
quelle
Überdenken Sie das nicht. Platzieren Sie genügend RAM in Ihrem System und lassen Sie den Festplatten-Cache des Kernels für Sie sorgen. Auf diese Weise erhalten Sie den Vorteil, dass die Lesevorgänge direkt aus dem Speicher stammen und die Daten auf der Festplatte erhalten bleiben.
quelle
1) Leistungsbenchmark.
Mit dieser Seite als Referenz habe ich einen E / A-Vergleich zwischen tmpfs und ramfs durchgeführt. Die Ergebnisse sind in Bezug auf die Leistung ziemlich identisch:
2) Laut dieser Seite verwendet tmpfs swap und ramfs swap nicht.
quelle
Wenn Sie genügend RAM installiert haben, um die verschiedenen Kernel-Puffer, den Anwendungsstapel und -heaps, den regulären Dateisystem-Cache und alle Dateien, die Sie dort ablegen möchten, zu hosten,
ramfs
sollte dies niemals langsamer sein,tmpfs
da dies kein Risiko darstellt physische E / A von Entwurf. Physische I / Os sind zweifellos die Hauptursache für Leistungseinbußen in diesem Bereich.Wenn Sie jedoch nicht so viel RAM installiert haben, ist die Verwendung
ramfs
möglicherweise und wahrscheinlich langsamer alstmpfs
die Verwendung der virtuellen Speicherheuristik, um zu entscheiden, was sich besser auf der Festplatte (dh im Auslagerungsbereich) als auf dem RAM befinden sollte während mittmpfs
, ist Ihr Dateisystemdaten auf RAM stecken , die eine Verschwendung von Ressourcen sein könnte.Wenn Sie die zweite Frage mit "Ja" beantworten,
tmpfs
werden alte Daten zuerst in den Auslagerungsbereich verschoben, nicht in den letzten "heißen".quelle