Warum ist der Arbeitsspeicher teilweise voll (sagen wir mal 80%), wodurch das Gerät stark verzögert wird, obwohl etwas Platz zum Speichern weiterer Daten zur Verfügung steht? Was ich erwarte ist, dass es bis zu 99% gut funktioniert.
Ich bemerke, dass auf dem Handy mehr als auf dem PC, da es einen kleineren Arbeitsspeicher hat, z. B. mein Handy 2 GB RAM hat; Wenn ich weniger als 1 GB RAM frei habe, bleibt es viel zurück! Warum passiert das, obwohl noch ~ 1 GB zu verwenden sind?
Antworten:
Es ist viel damit zu tun, aber ich werde versuchen, es so einfach wie möglich und auf eine Weise zu erklären, die auf nahezu jedes Betriebssystem anwendbar ist.
Hier gibt es zwei Grundprinzipien:
Die Gesamtsumme von allem, was sich im RAM befinden muss und was davon profitieren würde, ist fast immer größer als die Größe des RAM. Zu den Dingen, die davon profitieren würden, im RAM zu sein, gehören Prozessarbeitssätze und die Standby-Liste. Letzteres enthält Daten und Code, die einmal aktiv verwendet wurden, seitdem jedoch inaktiv sind. Ein Großteil davon wird wieder verwendet, ein Teil davon ziemlich bald. Daher ist es vorteilhaft, dies im RAM zu belassen. Dieser Speicher fungiert als eine Art Cache, ist jedoch nicht unbedingt erforderlich, gehört also zur Kategorie des verfügbaren Speichers. Wie der freie Speicher kann er schnell jedem Programm zugewiesen werden, das ihn benötigt. Im Interesse der Leistung sollte der Standby-Speicher groß sein.
Die Verwendungshäufigkeit von Speicherblöcken ist alles andere als zufällig, kann jedoch mit beträchtlicher Genauigkeit vorhergesagt werden. Der Speicher ist in Blöcke unterteilt, häufig 4 KB. Auf einige Blöcke wird mehrmals pro Sekunde zugegriffen, während auf andere für viele Minuten, Stunden, Tage oder sogar Wochen nicht zugegriffen wurde, wenn das System lange genug in Betrieb war. Zwischen diesen beiden Extremen besteht ein breiter Anwendungsbereich. Der Speichermanager weiß, auf welche Blöcke in letzter Zeit 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 in letzter Zeit nicht zugegriffen wurde, wird wahrscheinlich in Kürze nicht mehr benötigt. Langjährige Erfahrung hat gezeigt, dass dies ein gültiges Prinzip ist.
Der Speichermanager nutzt das zweite Prinzip, um die unerwünschten Folgen des ersten Prinzips weitgehend zu mildern. Zu diesem Zweck wird ein Balanceakt ausgeführt, bei dem die Daten, auf die kürzlich zugegriffen wurde, im RAM gespeichert werden, während die selten verwendeten Daten in den Originaldateien oder in der Auslagerungsdatei beibehalten werden.
Wenn genügend RAM vorhanden ist, ist dieser Spagat einfach. Ein Großteil der nicht so kürzlich verwendeten Daten kann im RAM aufbewahrt werden. Das ist eine gute Situation.
Die Dinge werden komplizierter, wenn die Arbeitsbelastung zunimmt. Die Gesamtsumme der verwendeten Daten und des verwendeten Codes ist größer, die RAM-Größe bleibt jedoch gleich. Dies bedeutet, dass eine kleinere Teilmenge davon im RAM aufbewahrt werden kann. Einige der zuletzt verwendeten Daten befinden sich nicht mehr im RAM, sondern müssen auf der Festplatte belassen werden. Der Speichermanager ist sehr bemüht, ein ausgewogenes Verhältnis zwischen aktivem Speicher und verfügbarem Speicher aufrechtzuerhalten. Mit zunehmender Arbeitsbelastung muss der Speichermanager jedoch den laufenden Prozessen mehr verfügbaren Speicher zur Verfügung stellen. Dies ist keine gute Situation, aber der Speichermanager hat keine andere Wahl.
Das Problem ist, dass das Verschieben von Daten in und aus dem RAM während der Ausführung von Programmen einige Zeit in Anspruch nimmt. Wenn genügend RAM vorhanden ist, kommt es nicht sehr oft vor und wird nicht einmal bemerkt. Wenn die RAM-Auslastung jedoch einen hohen Wert erreicht, kommt dies viel häufiger vor. Die Situation kann so schlimm werden, dass mehr Zeit für das Verschieben von Daten in den und aus dem RAM aufgewendet wird, als für deren tatsächliche Verwendung. Dies ist ein Problem, das der Speichermanager nur sehr schwer zu vermeiden versucht, bei einer hohen Arbeitsbelastung jedoch häufig nicht zu vermeiden ist.
Der Memory Manager ist auf Ihrer Seite und bemüht sich stets, auch unter widrigen Bedingungen eine optimale Leistung zu erzielen. Aber wenn die Arbeitslast groß ist und der verfügbare Speicher knapp wird, muss er schlechte Dinge tun, um weiterhin zu funktionieren. Das ist in der Tat das Wichtigste. Die Priorität ist es, zuerst die Dinge am Laufen zu halten und dann so schnell wie möglich zu machen.
quelle
memory manger
gehört zu meinemOS
Recht? Wenn ich mich also mit Zeigern und diesen Dingen auf sehr niedriger Ebene befasse, wird es dann immer noch in der Lage sein, zu pagen?Alle modernen Betriebssysteme verwenden ansonsten ungenutzten Speicher zum Zwischenspeichern von Daten, sodass auf diese über den schnellen Arbeitsspeicher zugegriffen werden kann, anstatt dass der Speicher langsamer wird. In der Regel wird dies als freier Speicher gemeldet, da Anwendungen den Cache löschen und bei Bedarf verwenden können, er jedoch weiterhin verwendet wird. Je weniger davon vorhanden ist, desto weniger Daten können zwischengespeichert werden und desto langsamer wird der Computer.
quelle
Paging ist ein Speicherverwaltungsschema, mit dem Speicherblöcken mit fester Größe Prozesse zugewiesen werden. Wenn die Speichernutzung auf ein hohes Niveau ansteigt (dh 80% Kapazität), beginnt sich das Paging vom RAM in den vRAM (virtueller RAM) auszudehnen.
vRAM befindet sich im Systemspeicher, normalerweise auf einer Festplatte oder an einem anderen größeren Speicherort.
Prozessen wird ein Teil Ihrer Festplatte als Arbeitsspeicher zugewiesen, und ihr Abschnitt wird als RAM behandelt. Dies ist ein ganz normaler Vorgang. Wenn jedoch die Zeit für die Datenübertragung zum und vom vRAM zunimmt, sinkt die Systemleistung.
Während auf den dedizierten RAM direkt über die Hauptplatine von der CPU aus zugegriffen wird, wodurch eine schnelle Verbindung hergestellt wird, muss der virtuelle RAM die Verkabelung zwischen der Platine und dem Speicherort des vRAM überbrücken.
Dies führt jedoch nur zu geringen Leistungseinbußen. Wenn die Rate, mit der ein Paging zum vRAM stattfindet, drastisch ansteigt (wenn sich der dedizierte RAM der Kapazität nähert), findet ein Thrashing statt.
Thrashing ist das schnelle und schnelle Übertragen von Speicherseiten in Ihren virtuellen Speicher. Dies beeinträchtigt die Leistung erheblich, 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 ihn schreiben (mit dem dedizierten Speicher), oder Sie erinnern sich an Stücke von 5, rennen in den nächsten Raum und schreiben ihn dort auf Ihren Notizblock (mit virtuellem Speicher). Beide erledigen den Job, aber was geht schneller?
Hier erfahren Sie mehr über Thashing !
quelle
Dies liegt daran, dass das Betriebssystem viel paging (Laden von Teilen aktiver Programme) und swappen (Verschieben von Daten im RAM auf HD und umgekehrt) muss, um Ihre Software am Laufen zu halten. Wenn neue Seiten geladen werden müssen, die möglicherweise mehr Speicherplatz als die verfügbaren 20% benötigen, muss das Betriebssystem vorhandene Seiten im RAM auslagern, von denen es annimmt, dass sie bald weniger genutzt werden. Besonders beim Start anderer Programme. Das Hin- und Herwechseln von Seiten nimmt viel Zeit in Anspruch und verlangsamt die Leistung Ihres PCs drastisch, da Sie jetzt mit der Geschwindigkeit der Festplatte und nicht des Arbeitsspeichers arbeiten.
Es hilft ein wenig, auf einer Festplatte eine spezielle Partition auf Ihrer Festplatte zu erstellen und diese als dedizierten "Auslagerungsspeicher" zuzuweisen (nicht für "echte" Dateien verwenden), damit das Auslagern weniger von der Fragmentierung der Festplatte betroffen ist.
quelle
Denken Sie daran, dass Festplatten um eine Größenordnung langsamer sind als RAM, und RAM selbst ist (in der Gesamtarchitektur) zunächst gar nicht so schnell. In der Reihenfolge der Zugriffsgeschwindigkeit (wobei jeder Strompfad eine Größenordnung langsamer ist als der oben angegebene) haben Sie
Der Virtual Memory Manager ist ein Spieler. Es wird gewettet, dass Sie nicht immer den gesamten Arbeitsspeicher benötigen. Daher werden Vermutungen angestellt und die Würfel gewürfelt, die Ihr Dokumentprogramm (das in den letzten 10 Minuten im Hintergrund war, während Sie dies gelesen haben) nicht hat wirklich wichtig und es schiebt es auf die Festplatte.
Aber dann klickt man wieder auf das Dokument! Jetzt muss der VMM alle diese Daten von der Festplatte zurückladen. Schlimmer noch, wenn Sie wenig RAM haben, müssen andere Daten (mehr Glücksspiele) auf die Festplatte übertragen werden, um nutzbaren Speicherplatz freizugeben. Linux lebt hier gerne am Rande. Es füllt den größten Teil des Arbeitsspeichers mit häufig verwendeten Daten (ideal für Server mit wenigen Prozessen).
quelle
Die krachenden Antworten haben es ziemlich genau getroffen. Wenn Sie dazu in der Lage sind, können Sie minimieren, wie schnell dies geschieht, indem Sie die Auslagerungsgeschwindigkeit verringern (wie viel RAM das System verwenden kann, bevor Objekte in den Auslagerungsbereich verschoben werden). Ich mag es, Systeme so einzustellen, dass sie nicht ausgetauscht werden, bis der RAM-Wert für Serveranwendungen 99% erreicht, da der Standardwert effektiv bedeutet, dass ich nur 80% des RAM-Werts für die Nutzung des Cachings verwenden muss, ohne dafür bestraft zu werden das System in Swap Space.
quelle