
Es klingt für mich ziemlich kontraproduktiv, ausgelagerte Seiten zwischenzuspeichern. Wenn Sie Seiten einlagern, welchen Vorteil hat es dann, sie zuerst im Speicher zwischenzuspeichern, um sie dann an die richtige Stelle verschieben zu müssen? Selbst wenn Seiten proaktiv eingelagert werden, ist es dann nicht sinnvoller, sie „einfach“ einzulagern? Ist das Zwischenspeichern von Auslagerungen nicht tatsächlich nur eine Verschwendung von Ressourcen?
Antwort1
Nach einigen weiteren Recherchen bin ich zu dem Schluss gekommen, dass der Begriff „SwapCached in“ /proc/meminfo
irreführend ist. Tatsächlich bezieht er sich auf die Anzahl der Bytes, die gleichzeitig im Speicher und im Swap vorhanden sind, sodass diese Seiten, wenn sie nicht schmutzig sind, nicht ausgelagert werden müssen.
Antwort2
Davon habe ich noch nie gehört und es ergibt für mich auch nicht viel Sinn. Ich denke immer noch, dass die gute alte Regel, sicherzustellen, dass überhaupt kein Swap stattfindet (außer natürlich die Reservierungen), am besten ist. Theoretisch hat das Zwischenspeichern von Inhalten im direkt verfügbaren Speicher, deren Laden von etwas so Langsamem wie einer Festplatte eine Weile dauert, einen offensichtlichen Vorteil. Aber wenn Sie in der Lage sind, zu tauschende Seiten zwischenzuspeichern, warum dann überhaupt noch einmal Swap durchführen?
Antwort3
Der Sinn der Duplizierung von Seiten zwischen Swap und RAM besteht darin, das Warten auf die Festplatte in folgenden Fällen zu vermeiden:
Etwas muss von ihnen gelesen werden
Sie müssen vertrieben werden, um Platz für etwas anderes zu schaffen
Wenn sie nur im Swap-Speicher wären, müsste im Fall 1 darauf gewartet werden, dass sie von der Festplatte kommen. Wenn sie nur im RAM wären, müsste im Fall 2 darauf gewartet werden, dass sie auf die Festplatte gehen.
(Fall 2 ist natürlich etwas komplizierter, da es offensichtlich billiger ist, solche Seiten zu verdrängen, sodass der Kernel sie wahrscheinlich bevorzugt verdrängt, aber der Punkt sollte klar sein.)