Wie kann ich den Kernel für einen vollständigen Auslagerungsvorgang optimieren?

Wie kann ich den Kernel für einen vollständigen Auslagerungsvorgang optimieren?

Ich möchte die folgende Swapping-Richtlinie implementieren:

  • Standardmäßig sollten sich alle Seiten im Speicher auch im Swap-Speicher befinden.
  • Wenn eine Seite im Speicher geändert wird (d. h. verschmutzt wird), sollte die Seite so schnell wie möglich ausgeschrieben werden, jedoch mit niedrigerer Priorität als andere Prozesse.
  • Wenn ein bestimmtes, konfigurierbares Wasserzeichen erreicht wird (sagen wir, 80 % der Seiten sind schmutzig), ist die Priorität gleich wie bei anderen Prozessen.

Ist diese Art von Swapping-Richtlinie mit dem Linux-Kernel möglich? Wenn ja, wie stelle ich die Kernel-Einstellungen ein, um dies zu erreichen?

Bearbeiten:

Der Grund hierfür ist offensichtlich, dass die Anzahl der Seiten, die ausgelagert werden müssen, reduziert werden soll. Nur fehlerhafte Seiten müssen auf die Festplatte geschrieben werden, und dies geschieht im Laufe der Zeit im Hintergrund. Wenn also Seitenfehler auftreten (d. h. die Seite ist nicht im Speicher), müssen keine Seiten vom Speicher auf die Festplatte geschrieben werden, sondern nur von der Festplatte in den Speicher. Dadurch wird die Wahrscheinlichkeit von E/A-Engpässen verringert, da sowohl beim Ein- als auch beim Auslagern versucht wird, gleichzeitig auf die Festplatte zuzugreifen.

Antwort1

Sie können den Wert festlegen, /proc/sys/vm/swappinessum das Verhältnis der ausgelagerten Datensegmente zu den im Speicher verbliebenen Datensegmenten zu steuern. Ein Wert von 0 vermeidet das Auslagern um jeden Preis.

Dies kann folgendermaßen erfolgen:

  • echo 0 > /proc/sys/vm/swappiness
  • sysctl -w vm.swappiness=0
  • Das Speichern dieser Einstellung in/etc/sysctl.conf

Im Allgemeinen ist es nicht schlecht, nur ein wenig Swap zu verwenden. Freier Speicher kann zum Zwischenspeichern von Daten verwendet werden, die von der Festplatte gelesen werden, und das System kann vorausplanen, wenn eine Anwendung plötzlich viel Speicher benötigt.

Wenn jedoch zu viele Programme ausgelagert werden, gibt es bei jedem Programmwechsel eine Menge festplattenbezogener Aktivität, die alles wirklich verlangsamt. Bevor etwas verwendet werden kann, muss es wieder in den Speicher geladen werden.

Das Lesen von Datenträgern ist im Vergleich zum Speicherzugriff schrecklich langsam, da es deutlich länger dauert, bis die Daten ankommen. Das System muss das Lesen zwischen den anderen Lese-/Schreibanforderungen planen, das Laufwerk versucht, den richtigen Zylinder zu finden, und beginnt schließlich langsam, Daten zu liefern.

Daher denke ich, dass Ihre Logik fehlerhaft ist. Im Allgemeinen möchten Sie Programme im Speicher laufen lassen und gleichzeitig genügend Platz für plötzliches Wachstum haben. Verwenden Sie den Swap nicht zu oft, um „Dinge auf die Festplatte zu schreiben“, da dies weder ein Backup noch eine Leistungsverbesserung darstellt.

Ältere Computer hatten weniger Speicher und litten deshalb unter Auslagerungsproblemen. Wenn viele Programme gleichzeitig geöffnet waren, wurde das System langsamer und man konnte hören, wie die Festplatte die Auslagerungsdatei las und schrieb.

Antwort2

Nur weil Ihr System Swaps verwendet, heißt das nicht, dass Sie ein Problem haben. Es gibt Anwendungen, die so optimiert sind, dass sie Swaps optimal nutzen, ohne die Leistung des Systems zu beeinträchtigen. Die meisten relationalen Datenbanksysteme sind auf diese Weise optimiert: IE: Oracle und Cache, die beiden größten wahrscheinlich.

Wenn Sie den Ruhezustand verwenden, wird Swap-Speicherplatz zum Speichern des RAM verwendet. Beim erneuten Booten des Systems wird alles im Swap-Speicherplatz wieder dem RAM hinzugefügt. Auf diese Weise können Sie Ihr System herunterfahren, ohne den Akku wie im Standby-Modus zu belasten, und trotzdem dort weitermachen, wo Sie vor dem Herunterfahren aufgehört haben. Dadurch hält Ihr Akku viel länger.

Swapping kann eine tolle Sache sein, weil es mehr von Ihrem aktiven RAM freigibt, um die Leistung Ihres Systems hoch zu halten. Wenn Ihr aktiver RAM voll ist UND Ihr Swap voll ist und Sie immer noch mehr Platz brauchen, dann und nur dann haben Sie ein Problem. Bis zu diesem Punkt ist Swap da, um Ihnen zu helfen, nicht um Ihnen zu schaden.

Antwort3

Ergänzend zu vdboors Antwort denke ich, dass Sie mehr als ändern müssen, um das zu erreichen, was Sie möchten swappiness. Es gibt weitere verfügbare Kernel-Tunables, die steuern, wie Swap verwendet wird. Der Benutzer kann zur Laufzeit über /proc/sys/vm/*Dateien darauf zugreifen oder es dauerhaft festlegen /etc/sysctl.conf(dazu muss möglicherweise sysctlein Init-Skript zu Ihrer Startreihenfolge hinzugefügt werden, um eine Wirkung zu erzielen) .

Die Einstellungen werden in der Linux-Kernel-Dokumentation ausführlich beschrieben. Sie finden sie unter <your_kernel_sources_path>/Documentation/sysctl/vm.txt. Sie können auch einen Blick in die Online-Dokumentation werfen.wie dieses hier.

verwandte Informationen