GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Wie benutzt man Swap Space nur für Notfälle?

Ich habe einen Debian (Buster) Laptop mit 8 GB RAM und 16 GB tauschen. Ich führe eine sehr lange laufende Aufgabe aus. Das bedeutet, dass mein Laptop die letzten sechs Tage eingeschaltet gelassen wurde, während er durchläuft.

Dabei muss ich meinen Laptop regelmäßig als Laptop verwenden. Dies sollte kein Problem sein; Die lang andauernde Aufgabe ist E/A-gebunden, arbeitet Daten auf einer USB-Festplatte ab und benötigt nicht viel RAM (<200 MB) oder CPU (<4 %).

Das Problem ist Wenn ich nach ein paar Stunden zu meinem Laptop zurückkehre, ist es sehr träge und es kann 30 Minuten dauern, bis es wieder normal ist. Das ist so schlimm, dass Crash-Monitore ihre jeweiligen Anwendungen als eingefroren kennzeichnen (insbesondere Browserfenster) und Dinge anfangen, fälschlicherweise abzustürzen.

Auf dem Systemmonitor wird etwa die Hälfte der verwendeten 2,5 GB in den Swap verschoben. Ich habe bestätigt, dass dies das Problem ist, indem ich den Auslagerungsbereich entfernt habe (swapoff /dev/sda8 ). Wenn ich es ohne Swap Space lasse, wird es fast sofort wieder lebendig, auch nach 24 Stunden. Mit Swap ist es für die ersten fünf Minuten praktisch ein Ziegelstein, nachdem es nur sechs Stunden gelassen wurde. Ich habe bestätigt, dass die Speichernutzung nie 3 GB überschreitet auch wenn ich weg bin.

Ich habe versucht, die Swappiness (siehe auch:Wikipedia) auf Werte von 10 zu reduzieren und , aber das Problem besteht weiterhin. Es scheint, dass der Kernel nach einem Tag der Inaktivität glaubt, dass die gesamte GUI nicht mehr benötigt wird, und sie aus dem RAM löscht (tauscht sie auf die Festplatte aus). Die lang andauernde Aufgabe liest einen riesigen Dateibaum und liest jede Datei. Es könnte also sein, dass der Kernel verwirrt ist und denkt, dass Caching helfen würde. Aber bei einem einzigen Sweep einer 2 TB USB HD mit ~1 Milliarde Dateinamen wird ein zusätzliches GB RAM der Leistung nicht viel helfen. Dies ist ein billiger Laptop mit einer trägen Festplatte. Es kann einfach nicht schnell genug Daten zurück in den Arbeitsspeicher laden.

Wie kann ich Linux anweisen, nur im Notfall Auslagerungsspeicher zu verwenden? Ich möchte nicht ohne Swap laufen. Wenn etwas Unerwartetes passiert und das Betriebssystem plötzlich ein paar zusätzliche GB benötigt, möchte ich nicht, dass Aufgaben beendet werden, und würde es vorziehen, mit Swap zu beginnen. Aber im Moment, wenn ich Swap aktiviert lasse, kann mein Laptop einfach nicht verwendet werden, wenn ich ihn brauche.

Die genaue Definition eines „Notfalls“ könnte umstritten sein. Aber um zu verdeutlichen, was ich meine:Ein Notfall wäre, wenn das System keine andere Möglichkeit hat, als Prozesse auszutauschen oder zu beenden.

Was ist ein Notfall?Müssen Sie wirklich fragen?… Ich hoffe, Sie finden sich nie in einem brennenden Gebäude wieder!

Es ist mir nicht möglich, in dieser Frage alles zu definieren, was einen Notfall darstellen könnte. Aber zum Beispiel könnte ein Notfall eintreten, wenn der Kernel so sehr auf Speicher angewiesen ist, dass er mit dem Beenden von Prozessen mit dem OOM Killer beginnen muss. Ein Notfall ist NICHT, wenn der Kernel denkt, dass er die Leistung verbessern kann, indem er Swap verwendet.

Verwandte:Ubuntu – Wie überprüfe ich SMB-Verbindungen und den Dialekt, der unter Linux verwendet wird?

Endgültige Bearbeitung: Ich habe eine Antwort akzeptiert, die genau das tut, worum ich auf Betriebssystemebene gebeten habe. Zukünftige Leser sollten auch die Antworten beachten, die Lösungen auf Anwendungsebene anbieten.

Akzeptierte Antwort:

Heutzutage ist es oft eine schlechte Idee, einen so großen Swap zu haben. Zu dem Zeitpunkt, als das Betriebssystem nur ein paar GB Speicher zum Austauschen auslagerte, war Ihr System bereits zu Tode gekrochen (wie Sie es gesehen haben)

Es ist besser, zram zu verwenden mit einer kleinen Backup-Swap-Partition . Viele Betriebssysteme wie ChromeOS, Android und verschiedene Linux-Distributionen (Lubuntu, Fedora) haben zram seit Jahren standardmäßig aktiviert, insbesondere für Systeme mit weniger RAM. Es ist viel schneller als Wechsel auf HDD und Sie können die Reaktion des Systems in diesem Fall deutlich spüren. Weniger auf einer SSD, aber laut den Benchmark-Ergebnissen hier scheint es selbst mit dem Standard-lzo-Algorithmus immer noch schneller zu sein. Sie können für eine noch bessere Leistung mit einem etwas geringeren Komprimierungsverhältnis zu lz4 wechseln. Die Dekodierungsgeschwindigkeit ist fast fünfmal schneller als die von lzo, basierend auf dem offiziellen Benchmark

Tatsächlich verwenden Windows 10 und macOS standardmäßig auch ähnliche Techniken zur Komprimierung von Auslagerungsdateien

Es gibt auch zswap obwohl ich es nie benutzt habe. Es ist wahrscheinlich einen Versuch wert und zu vergleichen, welches für Ihre Anwendungsfälle besser ist

Danach ist ein weiterer Vorschlag, die Priorität dieser IO-gebundenen Prozesse zu reduzieren und lassen Sie möglicherweise ein Terminal mit höherer Priorität laufen, damit Sie auch bei hoher Systemlast sofort Befehle darauf ausführen können

Weiterführende Literatur

  • Arch Linux – Leistungsverbesserung – Zram oder zswap
  • ZSwap aktivieren, um die Leistung zu steigern
  • Aktivieren Sie zRAM für eine verbesserte Speicherverwaltung und weniger Auslagerung
  • Zu wenig RAM in Ubuntu? ZRAM aktivieren
  • Unterschied zwischen ZRAM und ZSWAP
  • Ultimativer Leitfaden für zram vs. zswap vs. zcache:Wann sollte man welches verwenden
  • Linux, SSD und Swap
  • https://wiki.debian.org/ZRam
  • https://www.kernel.org/doc/Documentation/blockdev/zram.txt
  • https://wiki.gentoo.org/wiki/Zram

Linux
  1. So wählen Sie einen erschwinglichen Linux-Laptop für Videokonferenzen aus

  2. Wie viel Auslagerungsspeicher muss für Oracle Database unter Linux hinzugefügt werden?

  3. So fügen Sie unter Linux Auslagerungsspeicher hinzu

  4. So vergrößern Sie den Auslagerungsspeicher unter Linux

  5. Wie nutze ich den Auslagerungsbereich nur für Notfälle?

Wie ich Cockpit für die Linux-Serververwaltung meines Hauses verwende

So erweitern Sie den Auslagerungsbereich mithilfe der Auslagerungsdatei in Linux

So suchen Sie unter Linux nach Listening Ports (Ports in use)

Wie viel Swap sollten Sie unter Linux verwenden?

So erstellen und verwenden Sie eine Auslagerungsdatei unter Linux

So überprüfen Sie den Auslagerungsbereich unter Linux