Ich war in letzter Zeit neugierig auf die verschiedenen speicherbasierten Linux-Dateisysteme.
Note:
Was mich betrifft, sollten die folgenden Fragen im Vergleich zu den im Titel gestellten Fragen als mehr oder weniger fakultativ angesehen werden. Ich frage sie weiter unten, weil ich glaube, dass die Beantwortung mir dabei helfen kann, die Unterschiede besser zu verstehen, aber da mein Verständnis zugegebenermaßen begrenzt ist, kann es sein, dass andere es besser wissen. Ich bin bereit, jede Antwort zu akzeptieren, die mein Verständnis der Unterschiede zwischen den drei im Titel genannten Dateisystemen bereichert.
Letztendlich denke ich, dass ich ein brauchbares Dateisystem bereitstellen möchte, hugepages,
obwohl ein wenig Lichtforschung (und noch leichteres Basteln) dazu geführt hat, dass ich glaube, dass a rewritable hugepage mount
keine Option ist. Irre ich mich Was sind die Mechaniker hier zu spielen?
Auch in Bezug auf hugepages:
uname -a
3.13.3-1-MANJARO \
#1 SMP PREEMPT \
x86_64 GNU/Linux
tail -n8 /proc/meminfo
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 8223772 kB
DirectMap2M: 16924672 kB
DirectMap1G: 2097152 kB
(Hier sind Volltextversionen von / proc / meminfo und / proc / cpuinfo )
Was ist oben los? Bin ich schon vergeben? hugepages?
Gibt es einen Unterschied zwischen DirectMap
Speicherseiten undhugepages?
Update Nach einigem Anstupsen von @Gilles habe ich 4 weitere Zeilen hinzugefügt und es scheint, dass es einen Unterschied gibt, obwohl ich noch nie davon gehört hatte, DirectMap
bevor ich das tail
gestern gezogen habe ... vielleicht DMI
oder so?
Nur noch ein bisschen mehr ...
Wenn das hugepages
Bestreben nicht zum Erfolg führt und Festplatten-Backups von Image-Dateien vorausgesetzt werden, wie hoch ist das Risiko, dass Schleifen aus tmpfs?
meinem Dateisystem gemountet werden swapped
? Ich verstehe, dass tmpfs
ein gemounteter Dateisystem-Cache vorliegt. Kann mein gemountetes Loopfile nicht genügend Speicher haben? Gibt es mildernde Maßnahmen, die ich ergreifen kann, um dies zu vermeiden?
Zuletzt - genau was ist das überhaupt shm,
? Inwiefern unterscheidet es sich von oder schließt entweder hugepages
oder ein ?tmpfs?
quelle
/proc/meminfo
, die diese enthaltenHugePage
(oder hat Ihre Kernel-Version diese nicht)? Auf welcher Architektur ist das (x86_64, nehme ich an)?Antworten:
Es gibt keinen Unterschied zwischen tmpfs und shm. tmpfs ist der neue Name für shm. shm steht für SHaredMemory.
Siehe: Linux tmpfs .
Der Hauptgrund, warum tmpfs auch heute noch verwendet wird, ist dieser Kommentar in meiner / etc / fstab auf meiner Gentoo-Box. BTW Chromium wird nicht mit der fehlenden Linie bauen:
das kam aus der Linux-Kernel-Dokumentation
Zitat:
Aus dem Transparent Hugepage Kernel Doc:
Neuer Kommentar nach einigen Berechnungen:
HugePage-Größe: 2 MB
HugePages-Verwendung: Keine / Aus, wie durch die Nullen belegt, aber gemäß den obigen 2 MB aktiviert.
DirectMap4k: 8,03
GB
DirectMap2M: 16,5 GB DirectMap1G: 2 GB
Unter Verwendung des obigen Abschnitts zur Optimierung in THS sieht es so aus, als würden 8 GB Ihres Speichers von Anwendungen verwendet, die mit Mallocs mit 4 KB und 16,5 GB arbeiten. Anwendungen, die Mallocs mit 2 MB verwenden, forderten dies an. Die Anwendungen, die Mallocs von 2M verwenden, ahmen den HugePage-Support nach, indem sie die 2M-Abschnitte in den Kernel auslagern. Dies ist die bevorzugte Methode, da nach der Freigabe des malloc durch den Kernel der Speicher für das System freigegeben wird, während das Mounten von tmpfs mit hugepage erst nach einem Neustart des Systems zu einer vollständigen Bereinigung führt. Als letztes, das einfache, hatten Sie 2 Programme geöffnet / ausgeführt, die ein Malloc von 1 GB verlangten
Für diejenigen unter Ihnen, die nicht wissen, dass ein Malloc eine Standardstruktur in C ist, die für Memory ALLOCATION steht. Diese Berechnungen dienen als Beweis dafür, dass die OP-Korrelation zwischen DirectMapping und THS möglicherweise korrekt ist. Beachten Sie auch, dass das Mounten von NUR RIESIGEN Fs nur zu einem Zuwachs von Inkrementen von 2 MB führen würde, wohingegen das Verwalten des Speichers mithilfe von THS hauptsächlich in 4-KB-Blöcken erfolgt ), damit ein anderer Prozess verwendet wird.
quelle
Um das "DirectMap" -Problem zu beheben: Der Kernel verfügt über eine lineare ("direkte") Zuordnung des physischen Speichers , die von den virtuellen Zuordnungen getrennt ist, die jedem Benutzerprozess zugewiesen sind.
Der Kernel verwendet die größtmöglichen Seiten für diese Zuordnung, um den TLB-Druck zu verringern.
DirectMap1G ist sichtbar, wenn Ihre CPU 1-GB-Seiten unterstützt (ab Barcelona; einige virtuelle Umgebungen deaktivieren sie) und wenn im Kernel aktiviert - die Standardeinstellung ist 2.6.29+.
quelle
Es gibt keinen Unterschied zwischen
shm
undtmpfs
(eigentlichtmpfs
ist nur der neue Name des früherenshmfs
).hugetlbfs
ist ein auftmpfs
dem Kernel basierendes Dateisystem, das seinen Speicherplatz auf riesigen Seiten des Kernels verteilt und eine zusätzliche Konfiguration benötigt (die Verwendung wird in Documentation / vm / hugetlbpage.txt erklärt ).quelle
DirectMap
auf derprocfs man
Seite überhaupt keine Erwähnung finde . Woher?