Sinn des Freiseitenpuffers

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Sinn des Freiseitenpuffers
Hallo,

eine Frage zum Freiseitenpuffer:
Die Seiten werden ja logisch ausgelagert? Nun heißt es, der Vorteil sei, dass man sie schnell wieder einlagern könnte wenn sie doch noch gebraucht werden.
Aber wenn man den Platz für den Freiseitenpuffer hat, dann könnte man die Seiten doch gleich so im Speicher liegen lassen?

Wo ist der Denkfehler?

Freundliche Grüße :slight_smile:


Dass man eine Seite, die noch im Freiseitenpuffer steckt, bei Bedarf schnell wieder einlagern kann, ist lediglich ein netter Nebeneffekt. Mit einer guten Seitenersetzungsstrategie sollte diese Situation sowieso nur relativ selten auftreten, denn das Ziel ist ja gerade diejenigen Seiten auszulagern, die in der näheren Zukunft voraussichtlich nicht mehr so früh angefasst werden.

Der Hauptvorteil ist ein anderer: Wenn die Anwendung versucht auf eine ausgelagerte Seite zuzugreifen, muss das Betriebssystem nur einen vorgehaltenen Seitenrahmen aus dem Freiseitenpuffer holen und kopiert den Seiteninhalt von der Platte dort rein - fertig.
Ohne Freiseitenpuffer müsste man im Extremfall (= Hauptspeicher komplett voll) erst eine andere Seite auf Platte auslagern, bevor man die gewünschte Seite einlagern kann - die Reaktionszeit wäre also etwa doppelt so lang.


Ahhhh, vielen Dank :slight_smile:

Und das eigentliche Auslagern von Seiten macht das Betriebssystem dann zwischendurch, wenn die Festplatte nichts anderes zu tun hat? → Kein Zeitverlust?

Eine andere Frage: Normale Rechner haben ja meist mehr als genug RAM. Lagern sie trotzdem etwas aus und führen einen Freiseitenpuffer wenn der RAM nur zu 1/6 voll ist? Hat das irgendeinen Vorteil? Oder gibt es viele Rechensysteme bei denen man bewusst (aus Kostengründen) weniger RAM verbaut und auf effektive Strategien setzt?

Freundliche Grüße, Tobias


Naja so ein Betriebsystem kann mehr sinnvolle Dinge mit freiem Speicher tun als nur da Seiten für Programme einzulagern. z.B. Dinge aus deinem Dateisystem geheimspeichern – und dann kanns schon Sinn ergeben wenn dafür mal „normaler“ Speicher weichen muss.

Ansonsten kommt die Thematik halt auch ursprünglich aus einer anderen Zeit als 1) der (relative) Geschwindigkeitsunterschied zwischen Festplatte und RAM noch nicht so groß war (und auslagern entsprechend weniger schmerzhaft) und Arbeitsspeicher auch einfach deutlich knapper war im Vergleich


Exakt.

Was siccegge sagt.

So ein Linux befüllt in aller Regel den Anteil des Hauptspeichers, der gerade nicht von Anwendungen genutzt wird, nahezu komplett mit Dateisysteminhalten, um Plattenzugriffe zu beschleunigen. Es wäre ja auch Verschwendung, den teuren Hauptspeicher einfach ungenutzt brach liegen zu lassen. Unter Umständen denkt sich das Betriebssystem dann so Dinge wie:
„Ach guck mal, folgende Speicherseiten von Anwendung X wurden ja schon eeewig nicht mehr angefasst! Ich räum die mal beiseite, damit Anwendung Y, die gerade massiv auf der Platte rumrödelt, schneller vorankommt.“


Da Linux genannt wurde, es ist ein schönes praktisches Beispiel zu dieser Fragestellung. Denn die virtuelle Speicherverwaltung von Linux bietet den “Swappiness”-Parameter, über den der Nutzer selbst regeln kann, wie gerne Speicherseiten ausgelagert werden. Ist die Swappiness sehr hoch gesetzt, so wird bevorzugt ausgelagert, um Platz für Zwischenspeicher zu schaffen oder zu erhalten; ist sie sehr niedrig, so wird Auslagern wenn möglich vermieden.

Hier ein Beispiel dafür, wie auf einem Server der Speicher relativ voll ist, aber trotzdem fast vollständig verfügbar – alles “geheimes Lager”:

MiB Mem : 257842.1 total,  20435.3 free,  19510.2 used, 217896.5 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used. 236473.2 avail Mem

Dank NVME-SSDs kann Auslagern heutzutage auch wieder deutlich weniger schmerzhaft sein (was die Performance angeht, für die SSD ist es auf Dauer schon etwas schmerzhaft).
Beispiel: Ein Speicherkanal des aktuellen Epyc-Prozessors schafft knapp 20 GiB/s (die Zahl ließ sich jetzt schnell recherchieren). Auf dem Markt sind erschwingliche NVME SSDs mit 4 GiB/s lesen und etwas weniger schreiben. (Disclaimer: Epyc besitzt acht Speicherkanäle, aber das ist sein Alleinstellungsmerkmal; auch SSDs lassen sich parallel betreiben)