Warum verursacht teilweise voller RAM Verzögerungen?

Warum verursacht teilweise voller RAM Verzögerungen?

Warum kommt es bei teilweise vollem RAM (sagen wir 80 %) zu starken Verzögerungen beim Gerät, obwohl noch Platz für weitere Daten vorhanden ist? Ich gehe davon aus, dass es bis zu 99 % einwandfrei funktioniert.

Das merke ich auf dem Handy mehr als auf dem PC, da es weniger RAM hat, z. B. hat mein Handy 2 GB RAM; wenn ich weniger als 1 GB RAM frei habe, ruckelt es stark! Warum passiert das, obwohl noch ~1 GB zur Verfügung stehen?

Antwort1

Das ist vielschichtig, aber ich werde versuchen, es so einfach wie möglich zu erklären, und zwar so, dass es auf praktisch jedes Betriebssystem anwendbar ist.

Dabei gelten 2 Grundprinzipien:

  1. Die Gesamtsumme von allem, was im RAM sein muss, und von den Dingen, die davon profitieren würden, im RAM zu sein, ist fast immer größer als die Größe des RAM. Dinge, die davon profitieren würden, im RAM zu sein, sind Prozessarbeitssätze und die Standbyliste. Letztere enthält Daten und Code, die einst aktiv verwendet wurden, aber seitdem inaktiv geworden sind. Vieles davon wird wieder verwendet, einiges davon schon bald, also ist es vorteilhaft, es im RAM zu behalten. Dieser Speicher fungiert als eine Art Cache, ist aber nicht wirklich wichtig und fällt daher in die Kategorie des verfügbaren Speichers. Wie freier Speicher kann er schnell jedem Programm zugewiesen werden, das ihn benötigt. Aus Leistungsgründen sollte der Standbyspeicher groß sein.

  2. Die Häufigkeit der Nutzung von Speicherblöcken ist alles andere als zufällig, sondern kann mit beträchtlicher Genauigkeit vorhergesagt werden. Der Speicher ist in Blöcke unterteilt, oft 4 KBytes. Auf einige Blöcke wird mehrmals pro Sekunde zugegriffen, während auf andere viele Minuten, Stunden, Tage oder sogar Wochen lang nicht zugegriffen wurde, wenn das System lange genug aktiv war. Zwischen diesen beiden Extremen liegt eine große Bandbreite der Nutzung. Der Speichermanager weiß, auf welche Blöcke kürzlich zugegriffen wurde und auf welche nicht. Es ist eine vernünftige Annahme, dass ein Speicherblock, auf den kürzlich zugegriffen wurde, bald wieder benötigt wird. Speicher, auf den kürzlich nicht zugegriffen wurde, wird wahrscheinlich auch in naher Zukunft nicht benötigt. Langjährige Erfahrung hat bewiesen, dass dies ein gültiges Prinzip ist.

Der Speichermanager nutzt das zweite Prinzip, um die unerwünschten Folgen des ersten weitgehend abzumildern. Dazu führt er einen Balanceakt aus, indem er kürzlich aufgerufene Daten im RAM behält, während selten verwendete Daten in den Originaldateien oder der Auslagerungsdatei verbleiben.

Wenn genügend RAM vorhanden ist, ist dieser Balanceakt einfach. Viele der zuletzt verwendeten Daten können im RAM gespeichert werden. Das ist eine gute Situation.

Bei steigender Arbeitslast wird es komplizierter. Die Gesamtsumme der verwendeten Daten und Codes ist größer, aber die Größe des RAM bleibt gleich. Das bedeutet, dass eine kleinere Teilmenge davon im RAM gespeichert werden kann. Einige der weniger kürzlich verwendeten Daten können nicht mehr im RAM gespeichert werden, sondern müssen auf der Festplatte verbleiben. Der Speichermanager versucht sehr, ein gutes Gleichgewicht zwischen aktiv verwendetem Speicher und verfügbarem Speicher aufrechtzuerhalten. Bei steigender Arbeitslast ist der Speichermanager jedoch gezwungen, laufenden Prozessen mehr verfügbaren Speicher zuzuweisen. Das ist keine gute Situation, aber der Speichermanager hat keine andere Wahl.

Das Problem besteht darin, dass das Verschieben von Daten in und aus dem RAM während der Ausführung von Programmen Zeit in Anspruch nimmt. Wenn viel RAM vorhanden ist, geschieht dies nicht sehr häufig und wird nicht einmal bemerkt. Wenn die RAM-Nutzung jedoch ein hohes Niveau erreicht, geschieht dies viel häufiger. Die Situation kann so schlimm werden, dass mehr Zeit für das Verschieben von Daten in und aus dem RAM aufgewendet wird, als für die tatsächliche Nutzung. Dies ist Überlastung, etwas, das der Speichermanager mit aller Kraft zu vermeiden versucht, bei hoher Arbeitslast jedoch oft nicht vermieden werden kann.

Der Speichermanager ist auf Ihrer Seite und versucht immer, die optimale Leistung auch unter widrigen Bedingungen aufrechtzuerhalten. Aber wenn die Arbeitslast groß ist und der verfügbare Speicher knapp wird, muss er schlechte Dinge tun, um weiter zu funktionieren. Das ist tatsächlich das Wichtigste. Die Priorität besteht zunächst darin, die Dinge am Laufen zu halten und sie dann so schnell wie möglich zu machen.

Antwort2

Alle modernen Betriebssysteme verwenden ansonsten ungenutzten Speicher zum Zwischenspeichern von Daten, damit diese über den schnellen RAM statt über den langsameren Speicher abgerufen werden können. Sie melden dies im Allgemeinen als freien Speicher, da Anwendungen den Cache leeren und bei Bedarf verwenden können, er aber tatsächlich immer noch verwendet wird. Je weniger davon vorhanden ist, desto weniger Daten können zwischengespeichert werden und desto langsamer ist der Computer.

Antwort3

Diese Antwort wurde größtenteils neu geschrieben, um die Struktur neu zu organisieren und die Botschaft klarer zu machen. Ich habe sie auch als Community-Wiki-Antwort geöffnet. Sie können sie gerne bearbeiten.

Paging ist ein Speicherverwaltungsschema, bei dem Speicherblöcken fester Größe Prozesse zugewiesen werden. Wenn die Speichernutzung ein hohes Niveau erreicht (d. h. 80 % der Kapazität), beginnt das Paging vom RAM in den vRAM (virtuellen RAM) auszudehnen.

vRAM befindet sich im Systemspeicher, normalerweise auf einer Festplatte oder an anderen großen Speicherorten.

Prozesse erhalten einen Teil Ihrer Festplatte als Arbeitsspeicher zugewiesen und behandeln diesen Abschnitt als RAM. Dies ist ein völlig normaler Vorgang. Wenn jedoch die zum Übertragen von Daten zum und vom vRAM benötigte Zeit zunimmt, verringert sich die Systemleistung.

Während auf dedizierten RAM direkt über die Hauptplatine von der CPU aus zugegriffen wird, was eine schnelle Verbindung bereitstellt, muss beim virtuellen RAM eine Querverkabelung zwischen der Platine und dem Speicherort des vRAM erfolgen.

Dies hat jedoch nur geringe Auswirkungen auf die Leistung. Wenn die Paging-Rate in den vRAM drastisch zunimmt (wenn der dedizierte RAM seine Kapazitätsgrenze erreicht), kommt es zu Thrashing.

Thrashing ist das schnelle und schnelle Übertragen von Speicherseiten in Ihren virtuellen Speicher. Dies wirkt sich erheblich auf die Leistung aus, da mehr Zeit für das Abrufen und Adressieren von Daten aufgewendet werden muss.

Nehmen wir an, Sie möchten eine 30-stellige Zahl aufschreiben. Sie könnten entweder mit Ihrem Notizblock neben Ihrem Bildschirm sitzen und die Zahl aufschreiben (unter Verwendung des dedizierten Speichers) oder Sie merken sich 5er-Blöcke, laufen in den nächsten Raum und schreiben die Zahl dort auf Ihren Notizblock (unter Verwendung des virtuellen Speichers). Beide Methoden erledigen die Aufgabe, aber welche Methode ist schneller?

Erfahren Sie mehr überhier wird gehauen!

Ein großes Dankeschön an die Mitwirkenden dieser Antwort, darunterDaniel B,xenoidUndJon Bentley.

Antwort4

Denken Sie daran, Festplatten sind eine GrößenordnungLangsamerals RAM, und RAM selbst ist von vornherein nicht so schnell (in der Gesamtarchitektur). In der Reihenfolge der Zugriffsgeschwindigkeit (wobei jede Sprosse eine Größenordnung langsamer ist als die darüber) haben Sie

  1. Prozessorregister- In der Praxis stehen Register zur Verfügunginnerhalb eines ProzessorzyklusWenn man bedenkt, dass Prozessoren Milliarden von Zyklen pro Sekunde ausführen (3 GHz = 3 Milliarden Zyklen pro Sekunde), ist das wahnsinnig schnell.
  2. Prozessor-Cache– Hängt vom Level ab, ist aber immer noch ziemlich schnell (3–5 Zyklenverfügbarkeit für L1-Cache).
  3. Arbeitsspeicher (RAM)- Der zufällige Teil bedeutet, dass Sie nicht wissen, in welchem ​​Zustand es sich befindet, wenn Sie darauf zugreifen. Denken Sie an einen Paketboten, der anhalten, das Paket abholen, zur Tür gehen, klingeln und auf eine Antwort warten muss. Vielleicht warten Sie überhaupt nicht, oder vielleicht warten Sie ein oder zwei Minuten, bis Frau Smith zur Tür hinter dem Haus schlurft. In der Praxis sprechen wir von 14 bis 27 Zyklen (je nachdem, in welchem ​​Zustand sich der RAM befand, als wir darauf zugegriffen haben).
  4. Festplatte- Es gibt hier jetzt einen physikalischen Prozess und während dieser so schnell wie möglich abläuft, wartet man darauf, dass sich Köpfe und Spuren unter diesen Köpfen bewegen. In der Praxis bedeutet das:Eine Festplatte mit 7.200 U/min kann eine Umdrehung in ca. 4 ms abschließenoder irgendwo in der Nähe750.000 Zyklen für einen 3 GHz-ProzessorDas ist langsam.

Der Virtual Memory Manager ist ein Spieler. Er geht davon aus, dass Sie Ihren gesamten RAM nicht ständig benötigen, also rät er, dass Ihr Dokumentprogramm (das während der letzten 10 Minuten, während Sie dies hier lesen, im Hintergrund lief) nicht wirklich wichtig ist, und verschiebt es auf die Festplatte.

Aber dann klicken Sie zurück zum Dokument! Jetzt muss der VMM alle Daten von der Festplatte zurückladen. Schlimmer noch: Wenn Sie wenig RAM haben, muss er jetzt andere Daten (mehr Glücksspiel) auf die Festplatte übertragen, um nutzbaren Speicherplatz freizugeben. Linux lebt hier gerne am Limit. Es füllt den Großteil des RAM mit häufig verwendeten Daten (ideal für Server mit wenigen Prozessen).

verwandte Informationen