Die Linux-Speicherverwaltung ("MM") scheint etwas geheimnisvoll und schwierig zu sein.
In der Linux-Literatur wird LRU (Least Recent Used) im Zusammenhang mit der Speicherverwaltung stark erwähnt. Ich habe keinen der anderen genannten Begriffe bemerkt.
Ich fand eine interessante Einführung (erste vier Absätze) in diesem Artikel über das unvergleichliche LWN.net. Es wird erklärt, wie grundlegende LRU in der Praxis für den virtuellen Speicher implementiert werden können. Lies es.
Ein echter LFU-Ersatz (Least Frequently Used) wird für den virtuellen Speicher nicht als praktisch angesehen. Der Kernel kann nicht jeden einzelnen Lesevorgang einer Seite zählen, wenn mmap()
er für den Zugriff auf Datei-Cache-Seiten verwendet wird. So werden beispielsweise die meisten Programme in den Speicher geladen. Der Leistungsaufwand wäre viel zu hoch.
Um über dieses einfache Konzept hinauszugehen, gibt es hier eine Entwurfsbeschreibung zu Linux Version 2.6.28-32:
http://linux-mm.org/PageReplacementDesign
Es wird vorgeschlagen, dass Clock-PRO für Dateiseiten verwendet wird. Darauf befindet sich ein Originalpapier. Es gibt eine alte Beschreibung von Clock-PRO auf LWN.net, die wiederum einige praktische Implementierungsdetails enthält. Anscheinend "versucht Clock-PRO" über den LRU-Ansatz hinauszugehen ", von dem eine Variante" in den meisten Systemen verwendet wird ". Es scheint mehr Gewicht auf die Frequenz zu legen.
Linux-mm verfügt über ein weiteres Designdokument zur Implementierung von Clock-PRO unter Linux. Dieser spricht nicht davon, dass es zusammengeführt wird; es wurde geschrieben über sie ein paar Monate vor dem LWN Artikel. http://linux-mm.org/ClockProApproximation
Neuere Beschreibungen besagen, dass Linux lediglich "einige Ideen" von Clock-PRO verwendet und tatsächlich eine "Mischung aus einer Reihe verschiedener Algorithmen mit einer Reihe von Modifikationen zum Abfangen von Eckfällen und verschiedenen Optimierungen" ist .
Das obige Zitat wurde auf eine Frage von Adrian McMenamin beantwortet . McMenamin schloss 2011 ein MSc-Projekt ab und testete Änderungen am Ersetzen von Linux-Seiten basierend auf dem "Working-Set-Modell". Es enthält eine kurze Beschreibung des Austauschs von Linux-Seiten. Die "Variante von LRU" wird als "2Q-Ansatz (Zwei-Warteschlangen] für die Datenbankverwaltung" bezeichnet, es werden eine Reihe von Referenzen bereitgestellt, und es gibt ein Diagramm, das die Bewegung zwischen den beiden Warteschlangen und anderen Zustandsübergängen veranschaulicht. Er beschreibt Linux auch als eine teilweise Implementierung von CLOCK-PRO.
Ich gehe davon aus, dass das LRU-Konzept im Gegensatz zu den anderen von Ihnen genannten Möglichkeiten von Anfang an etabliert wurde. Die wichtigste Änderung war die Einführung von Clock-PRO-basierten Funktionen, dh die Erhöhung der Frequenz.
Im Jahr 2013 erhielt Linux die "Thrash Detection-basierte Dateicache-Größe". Dies ist wahrscheinlich auch für die Frage relevant.