Ich verwende zram auf meinem Computer als komprimierten RAM-Swap. Wenn das System etwas auslagern muss, entspricht das Auslagern in eine zram-gesicherte Auslagerungsdatei in etwa dem Komprimieren dieser Daten im Arbeitsspeicher, um Speicherplatz freizugeben. Dies macht das Auslagern im Vergleich zum festplattengestützten Auslagern die meiste Zeit sehr schnell. Aus diesem Grund frage ich mich, ob es eine gewisse Leistung bringt, wenn das System dazu angeregt wird, nicht genutzte Inhalte aggressiver auszutauschen, da dies möglich ist, ohne die Festplatte tatsächlich zu beschädigen.
vm.swappiness
Hat also jemand damit rumgespielt, während er zram benutzt , beispielsweise auf 100 zu setzen? Wäre das wünschenswert?
sysctl -w vm.swappiness=100
Antworten:
Ich würde wirklich nicht empfehlen, das swappiness höher zu setzen. Ein allgemeiner Mechanismus im Kernel besteht darin, dass Seiten (Speicherblock) in den Swap gestellt werden, um Speicher für andere ausgeführte Aufgaben freizugeben.
Erstes "Problem", wenn der Kernel n Seiten freigeben will, m (mit m <n, m ist die Anzahl der komprimierten Seiten, die für n erforderlich sind) neu im RAM erstellt werden, ich bin nicht sicher, ob dies den Kernel stören kann oder nicht nicht.
Wenn Sie Seiten im Tausch haben, ist es dennoch möglich, dass Sie die Anwendung später mit einigen Seiten im Tausch verwenden. Der Kernel bringt diese Seiten in den physischen Speicher zurück, entfernt sie jedoch nicht aus dem Swap (was bei Standard-Swap als Caching angesehen werden kann. Wenn die Anwendung also wieder im Hintergrund ausgeführt wird, muss der Kernel diese Seiten nicht zurückschreiben in den langsamen Swap). Mit zram ist dies jedoch möglicherweise kein kluger Trick, da Sie dann im Speicher die m Seiten in zram + die n Seiten haben, die sich wieder im Speicher befinden!
Der Kernel verfügt in der Regel über einen "Gesamtspeicher", der für die Geschäftsabwicklung verwendet werden kann. Wenn Sie zram hinzufügen, zählt es nur im "Swap" -Speicher, wie es bei jedem festplattenbasierten Swap der Fall wäre, aber es reduziert den tatsächlichen "Gesamtspeicher" und das wird vom Kernel nicht erwartet. Manchmal kann es vorkommen, dass Sie sich deshalb komisch und unerwünscht verhalten!
Mit zram wäre es gut, wenn der Kernel nicht zu viel in diesen Bereich wechselt, wenn er unter Speicherdruck steht. Und Sie sollten immer eine echte Festplatten-Swap-Partition haben, die mindestens die maximale Größe Ihres zram überschreitet, damit das System keine OOM erhält, während Sie gleichzeitig viel freien Speicherplatz sehen würden, wie von gemeldet
free
!quelle
Kurze Antwort:
vm.swappiness=100
ist angemessener Wert für zram (Zumindest unter Debian Stretch mit Linux 4.9 glaube ich, dass dies der beste Wert ist)Ich teste schon
vm.swappiness=100
für mich.Ich denke, Sie können einen einfachen Test durchführen, um festzustellen, welcher Wert für Sie am besten ist.
Außerdem habe ich ein weiteres einfaches Programm zum Testen dieser Frage erstellt. x Bei meinem Computer kann ein sehr niedriger
vm.swappiness
Wert (z. B.vm.swappiness=1
) ein offensichtliches Reaktionsproblem verursachen.Über
SwapCached
in/proc/meminfo
:Versuchen Sie zunächst einmal
vm.page-cluster=0
, dies kann möglicherweise dazu führen, dass einigeSwapCached
vom Swap-In unbrauchbar werden .SwapCached kann zram genauso beschleunigen wie Nicht-zram-Swap-Geräte
SwapCached
Ist kann (kostenlos) bei Bedarf wiederverwendet werden:quelle
Seiten müssen (auf die Festplatte) ausgelagert werden, wenn der Speicher voll ist. Wenn Sie den Speicher verwenden, um den Platz zum Auslagern von Seiten zu schaffen, wenn der Speicher voll ist, würde man meinen, dass dies den Zweck übertrifft, es sei denn, die Komprimierung macht einen Unterschied (und dann wäre es natürlich, den Speicher direkt zu komprimieren, anstatt durchzugehen Tauschen). Das müsste man wohl messen, da Computer im Vergleich zur Speichergeschwindigkeit immer schneller komprimieren und dekomprimieren.
quelle
vm.swappiness
Wert für disk-backed Swap optimiert ist und ob ich ihn ändern sollte, wenn ich meistens zram-backed Swap verwende.