Was sind die genauen Bedingungen, auf deren Grundlage Linux-Swaps Prozess (e) Speicher vom RAM in einer Auslagerungsdatei?

StackOverflow https://stackoverflow.com/questions/2029015

Frage

Mein Server hat 8gigs RAM und 8gigs für Auslagerungsdatei konfiguriert. Ich habe speicherintensive Anwendungen ausgeführt werden. Diese Anwendungen haben Spitzenlasten, in denen wir Swap-Nutzung erhöhen finden. Etwa 1 GIG von Swap verwendet wird.

Ich habe einen anderen Server mit 4gigs RAM und 8 Gigs von Swap- und ähnlichen speicherintensiven Anwendungen, die darauf ausgeführt. Aber hier Swap-Nutzung ist sehr gering. Rund 100 MB.

Ich frage mich, was sind die genau Bedingungen oder eine grobe Formel basierend auf dem Linux eine Auslagerungs eines Prozesses Speicher im RAM tun auf die Auslagerungsdatei. Ich weiß, seinen basierend auf swapiness Faktor. Was sonst ist es auf? Tauschen Sie die Dateigröße? Alle Hinweise auf Linux Kernel-Dokumentation / Quellcode dieser Erklärung wird groß sein.

War es hilfreich?

Lösung

Ich habe eine Menge Leute Posting subjektive Erklärungen des Gesehenen dies tut. Hier ist hoffentlich eine vollständige Antwort.

In der geteilten LRU auf Post 2.6.28 Linux swappiness ist ein Multiplikator verwendet, um den Anteil willkürlich zu ändern, die den Druck berechnet Bestimmung sowohl LRUs aufgebaut.

So zum Beispiel auf einem System ohne freien Speicherplatz - den Wert des vorhandenen Speichers Sie wird gemessen basierend aus der Rate, wie vielen Speicher aufgeführt als ‚Aktiv‘ und der Rate, wie oft Seiten gefördert werden auf aktiv, nachdem sie in die inaktive Liste fallen.

Ein LRU mit vielen Aktionen / Degradierungen von Seiten zwischen aktiven und inaktiven ist in einer Menge Einsatz.

Normalerweise ist Datei gesichert Lagerung billiger und sicherer zu vertreiben, wenn der Speicher ausgeführt wird und automatisch einen Modifikator von 200 angegeben wird (diese Datei Speicher gesichert macht 200-mal mehr wertlos als Swap-Speicher gesichert (die einen Wert von 0) hat, wenn sie vermehrt diese Fraktion.

Was swappiness tut, ist dieser Wert ändern, indem Sie die swappiness Zahl Abzug Sie gab (Standard 60) zum Dateispeicher und das Hinzufügen des swappiness Wert, den Sie als Multiplikator zu Anon Speicher gab. So ist die Standard swappiness Blätter Sie mit anonymen Speicher ist 80-mal mehr wert als Dateispeicher (200-60 für Datei, 0 + 60 für Anon). So auf einem typischen Linux-System, das ausgenutzt hat, alle seine Speicher, Seiten-Cache würde für die anonymen Speicher 80 mal aktiver als anonyme Erinnerung seines für Seiten-Cache ausgelagert werden.

Wenn Sie swappiness auf 100 gesetzt gibt diesen Anon einen Modifikator von 100 und Dateispeichern ein Modifikator von 100 (200-100) sowohl LRUen verlassen gleich gewichtet. So auf einem Dateisystem, die schweren Seiten-Cache Bereitstellung den Anon Speichers will, ist nicht so aktiv wie Seiten-Cache dann Anon Speicher auf der Festplatte, um Platz für zusätzliche Seiten-Cache ausgetauscht werden.

Andere Tipps

Linux (oder jedes andere OS) teilt Speicher bis in die Seiten (typischerweise 4 Kb). Jede dieser Seiten stellt einen Teil des Speichers. Nutzungsinformationen für diese Seiten erhalten bleiben, die im Grunde Informationen enthalten darüber, ob die Seite frei ist oder im Einsatz ist (Teil eines Prozesses), ob es vor kurzem zugegriffen wurde, welche Art von Daten sie enthalten (Prozessdaten, ausführbaren Code usw. ), Inhaber der Seite, usw. auch diese Seiten im Großen und Ganzen in zwei Kategorien unterteilt werden können - Dateisystem-Seiten oder die Seiten-Cache (in dem alle Daten / geschrieben zu Ihrem Laufwerk vorhanden lesen) und Seiten zu Prozessen gehören.

Wenn das System wenig Speicher ausgeführt wird, startet der Kernel Seiten Auslagern auf der Grundlage ihrer Nutzung. Mit Hilfe einer Liste von Seiten sortierten w.r.t recency des Zugangs ist üblich, um zu bestimmen, welche Seiten ausgelagert werden können (Linux-Kernel hat eine solche Liste auch).

Während Swapping, Linux-Kernel Bedürfnisse zu entscheiden, was zu Trade-off, wenn Seiten im Speicher nuking und um sie zu tauschen senden. Wenn es Dateisystem Seiten zu aggressiv austauscht, mehr Lesevorgänge aus dem Dateisystem erforderlich, diese Seiten wieder zu lesen, wenn sie gebraucht wird. Wenn es jedoch mehr auslagert aggressiv Prozess Seiten kann es Interaktivität verletzt, weil, wenn der Benutzer versucht, die ausgelagert Prozesse zu verwenden, werden sie von der Platte gelesen werden müssen. Hier finden Sie eine nette Diskussion hier zu diesem Thema.

Durch die Einstellung swappiness = 0, erzählen Sie den Linux-Kernel nicht auf die Swap-Seiten zu Prozessen gehören. Wenn swappiness Einstellung = 100 statt, sagen Sie den Kernel Swap-Seiten Prozesse aggressiv mehr gehört. Um Ihr System, versuchen Ändern des swappiness Parameter in Schritten von 10, Überwachung der Leistung und Seiten in / out bei jeder Einstellung vertauscht werden, um den „vmstat“ Befehl. Halten Sie die Einstellung, dass Sie die besten Ergebnisse. Denken Sie daran, diese Tests während der Spitzennutzungszeiten zu tun. :)

Für Datenbankanwendungen swappiness = 0 wird generell empfohlen. (Auch dann Test verschiedene Einstellungen auf Ihrem System einen guten Wert gelangen).

Referenzen:
http: //www.linuxvox. com / 2009/10 / what-is-the-linux-Kernel-Parameter-vm-swappiness /
http://www.pythian.com/news/1913/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top