Thrashing (Informatik)
Im Informatik, Prügel tritt bei einem Computer auf virtueller Speicher Ressourcen werden überbeansprucht und führen zu einem ständigen Zustand von Paging und Seitenfehleram meisten hemmen Anwendung-Level -Verarbeitung.[1] Dies verursacht das Leistung des Computers zu verschlechtern oder zusammenzubrechen. Die Situation kann auf unbestimmte Zeit fortgesetzt werden, bis entweder der Benutzer einige laufende Anwendungen schließt oder die aktiven Prozesse zusätzliche virtuelle Speicherressourcen freisetzen.
Nach Abschluss der Initialisierung arbeiten die meisten Programme im Vergleich zum Gesamtspeicher, das das Programm benötigt, auf einer geringen Anzahl von Code- und Datenseiten. Die am häufigsten zugegriffenen Seiten werden als die genannt Workingset.
Wenn der Arbeitssatz ein kleiner Prozentsatz der Gesamtzahl der Seiten des Systems ist, funktionieren virtuelle Speichersysteme am effizientesten und es wird eine unbedeutende Menge an Computing aufgelöst, Seitenfehler. Wenn der Arbeitssatz wächst, bleibt die Auflösungsfehler überschaubar, bis das Wachstum einen kritischen Punkt erreicht. Dann steigen die Fehler dramatisch und die Zeit, die sie aufgelöst hat, überwältigt die Zeit, die das Programm für das Programm aufgewendet hat, wurde geschrieben. Dieser Zustand wird als Thrashing bezeichnet. Thrashing tritt in einem Programm auf, das mit riesigen Datenstrukturen funktioniert, da der große Arbeitssatz kontinuierliche Seitenfehler verursacht, die das System drastisch verlangsamen. Befriedigende Seitenfehler erfordern möglicherweise Seiten, die bald von der Festplatte gelesen werden müssen.
Der Begriff wird auch für verwendet Verschiedene ähnliche Phänomene, insbesondere Bewegung zwischen anderen Ebenen der Speicherhierarchie, wo ein Prozess langsam voranschreitet, weil erhebliche Zeit aufgewendet wird, Ressourcen zu erwerben.
"Thrashing" wird auch in anderen Kontexten als virtuelle Speichersysteme verwendet. Zum Beispiel beschreiben Zwischenspeicher Probleme beim Computer oder Dummes Fenster -Syndrom in Networking.
Überblick
Virtueller Speicher Arbeiten durch Behandlung eines Teils von Zweitlager wie ein Computer Festplatte als zusätzliche Schicht der Cache -Hierarchie. Der virtuelle Speicher ist bemerkenswert, um zuzulassen Prozesse mehr Speicher zu verwenden als physisch vorhanden in Haupterinnerung und zum Aktivieren virtuelle Maschinen. Betriebssysteme, die virtuelle Speicher unterstützen Virtueller Adressraum und jeder Prozess bezieht sich auf Adressen in seinem Ausführungskontext durch eine sogenannte virtuelle Adresse. Um Zugang zu erhalten Daten wie zum Beispiel Code oder Variablen An dieser Adresse muss der Prozess die Adresse in a übersetzen physikalische Adresse in einem Prozess bekannt als als Virtuelle Adressübersetzung. In der Tat wird das physische Hauptgedächtnis a Zwischenspeicher für virtuelles Gedächtnis, das allgemein auf der Festplatte in gespeichert ist Speicherseiten.
Programmen werden eine bestimmte Anzahl von Seiten zugewiesen, die von der benötigt werden Betriebssystem. Aktive Speicherseiten existieren sowohl in RAM als auch auf der Festplatte. Inaktive Seiten sind aus dem Cache entfernt und geschrieben auf die Festplatte Wenn der Hauptgedächtnis voll wird.
Wenn Prozesse alle Hauptspeicher verwenden und zusätzliche Speicherseiten benötigen, eine Kaskade schwerer Cache Fehler bekannt als Seitenfehler wird auftreten und oft zu einem spürbaren führen Verzögerung im Betriebssystem Empfänglichkeit. Dieser Prozess zusammen mit dem vergeblichen, sich wiederholenden Seitenaustausch, der auftritt, wird als "Thrashing" bezeichnet. Dies führt häufig zu einer hohen, außer Kontrolle geratenen CPU -Auslastung, die das System zum Stillstand schleifen kann. In modernen Computern kann im Paging -System Thrashing auftreten (falls es nicht ausreicht physikalischer Speicher oder die Datenträgerzugriffszeit ist übermäßig lang) oder im E/A -Kommunikations -Subsystem (insbesondere in Konflikte über den internen Buszugang), etc.
Abhängig von der Konfiguration und den beteiligten Algorithmen Durchsatz und Latenz eines Systems kann sich um mehrere verschlechtern Größenordnungen. Thrashing ist ein Zustand, in dem die CPU "produktive" Arbeiten weniger ausführt und mehr "tausch". Die allgemeine Speicherzugriffszeit kann zunehmen, da der Speicher auf höherer Ebene nur so schnell ist wie die nächste niedrigere Ebene in der Speicherhierarchie.[2] Die CPU ist so sehr damit beschäftigt, Seiten so sehr auszutauschen, dass sie nicht auf Benutzerprogramme reagieren und so weit wie erforderlich unterbricht. Thrashing tritt auf, wenn zu viele Seiten im Speicher vorhanden sind, und jede Seite bezieht sich auf eine andere Seite. Der eigentliche Speicher verkürzt in der Kapazität, um alle Seiten darin zu haben, und verwendet daher "Virtual Memory". Wenn jede Seite in der Ausführung diese Seite verlangt, die derzeit nicht im realen Speicher (RAM) liegt, platziert sie einige Seiten für den virtuellen Speicher und passt die erforderliche Seite auf RAM an. Wenn die CPU mit dieser Aufgabe zu beschäftigt ist, tritt Thrashing auf.
Ursachen
Im virtueller Speicher Systeme, Thrashing können durch Programme oder Arbeitsbelastungen verursacht werden, die unzureichend sind Referenzort: Wenn die Workingset eines Programms oder einer Arbeitsbelastung kann nicht im physischen Speicher effektiv gehalten werden, dann konstante Datenaustausch, d.h. Thrashing kann auftreten. Der Begriff wurde zunächst während der Tagen des Bandbetriebssystems verwendet, um den Ton zu beschreiben, den die Bänder erstellten, als Daten schnell geschrieben und gelesen wurden. Ein schlimmster Fall dieser Art auf dem IBM System/370 Serie Hauptrechner könnte ein sein Anweisung ausführen Überqueren Sie eine Seitengrenze, die auf einen Bewegungsanweis selbst zeigt, der auch eine Seitengrenze überschreitet und auf eine Quelle und ein Ziel zeigt, das jede Seitengrenze überschreitet. Die Gesamtzahl der Seiten, die so an dieser speziellen Anweisung beteiligt sind, beträgt acht, und alle acht Seiten müssen gleichzeitig im Speicher vorhanden sein. Wenn jemand der acht Seiten nicht sein kann ausgetauscht (Zum Beispiel, um Platz für eine der anderen Seiten zu schaffen), wird der Anweisungen versagt, und jeder Versuch, sie neu zu starten, fällt fehl, bis alle acht Seiten ausgetauscht werden können.
Andere Verwendungen
Thrashing ist am besten im Kontext von Gedächtnis und Speicher bekannt, aber analoge Phänomene treten für andere auf Ressourcen, einschließlich:
- Cache -Thrashing
Wobei der Hauptspeicher in einem Muster zugegriffen wird, das zu mehreren Hauptspeicherorten führt, die um dieselben Cache -Linien konkurrieren, was zu übermäßigem Bereich führt Cache Fehler. Dies ist am problematischsten für Caches, die niedrig haben Assoziativität.
- TLB Thrashing
Bei dem die Übersetzungs -Lookaside -Puffer (TLB) als Cache für die Speicherverwaltungseinheit (MMU), die virtuelle Adressen in physische Adressen übersetzt, ist für den Arbeitssatz von Seiten zu klein. TLB -Thrashing kann auch dann auftreten, wenn kein Anweisungs -Cache- oder Datencache -Thrashing auftritt, da diese in verschiedenen Größen zwischengespeichert werden. Anweisungen und Daten werden in kleinen Blöcken zwischengespeichert (Cache -Zeilen), nicht ganze Seiten, aber die Adress -Lookup erfolgt auf Seitenebene. Selbst wenn der Code und die Datenarbeitssätze in Cache passen, wenn die Arbeitssätze sind fragmentiert Auf vielen Seiten passt die virtuelle Adressabwicklung möglicherweise nicht in TLB, was zu TLB -Thrashing führt.
- Haufen
Häufig Müllsammlung, aufgrund des Versäumnisses, Speicher für ein Objekt zuzuweisen, aufgrund eines unzureichenden freien Speichers oder unzureichenden, zusammenhängenden freien Speicher durch Gedächtnisfragmentierung wird als Heap -Thrashing bezeichnet.[3]
- Prozess Thrashing
Ein ähnliches Phänomen tritt für Prozesse auf: wenn die Prozessarbeitssatz kann nicht sein cospleduled - Daher sollen nicht alle interagierenden Prozesse gleichzeitig ausgeführt werden - sie erleben "Prozessverstürze", weil sie wiederholt geplant und außerplanmäßig geplant sind und nur langsam voranschreiten.[4]
Siehe auch
- Seitenersatzalgorithmus- Algorithmus für die Implementierung des virtuellen Speichers
- Überlastungskollaps
- Ressourcenkonkurrenz- Konflikt über den Zugriff auf eine gemeinsame Ressource
- Aus dem Gedächtnis- Stand des Computerbetriebs, in dem kein zusätzlicher Speicher zugewiesen werden kann
- Softwarealterung
Verweise
- ^ Denning, Peter J. (1968). "Thrashing: seine Ursachen und Prävention" (PDF). Proceedings Afips, Herbst Joint Computer Conference. 33: 915–922. Abgerufen 2012-02-15.
- ^ L., Hennessy, John (2012). Computerarchitektur: Ein quantitativer Ansatz. Patterson, David A., Asanović, Krste. (5. Aufl.). Waltham, MA: Morgan Kaufmann. ISBN 9780123838728. OCLC 755102367.
- ^ Leistungsoptimierungstechniken für Leistungsoptimierung und Tuning für IBM -Prozessoren, einschließlich IBM Power8, "Heap+Thrashing" p. 170
- ^ OUSTERHOUT, J. K. (1982). "Planungstechniken für gleichzeitige Systeme" (PDF). Verfahren der dritten internationalen Konferenz über verteilte Computersysteme. S. 22–30.