Warum empfehlen die meisten Leute Swappiness auf 10-20 zu reduzieren?

51

Ich habe in mehreren Seiten gesehen, die Swappiness auf 10-20 für eine bessere Leistung zu reduzieren empfehlen.

Ist es ein Mythos oder nicht? Ist das eine allgemeine Regel? Ich habe einen Laptop mit 4GB Ram und 128GB SSD hart, welchen Wert empfehlen Sie für meine Swappiness?

Danke.

    
Saeed Zarinfam 05.09.2012, 07:02

6 Antworten

80

Weil die meisten glauben, dass Swapping = schlecht ist und dass, wenn Sie Swappiness nicht reduzieren, das System tauschen wird, wenn es wirklich nicht nötig ist. Keine von beiden ist wirklich wahr. Mitarbeiter assoziieren mit Zeiten, in denen sich ihr System festsetzt - sie tauschen jedoch meist aus, weil sich das System festsetzt und nicht umgekehrt. Wenn das System tauscht, hat es die Performance-Kosten bereits in seiner Entscheidung für den Tausch berücksichtigt und entschieden, dass dies eine größere Gesamteinbuße bei der Systemleistung oder -stabilität nach sich ziehen würde, die später bemerkbar werden könnte.

Insgesamt führen die Standardeinstellungen zu einer guten Gesamtperformance und Stabilität. Ich würde empfehlen, es standardmäßig zu lassen. Es gibt Verbesserungen, die vorgenommen werden können, wie Swap auf Desktop / interaktiven Systemen funktioniert, aber im Großen und Ganzen ist die Swappiness-Kontrolle nicht die beste Lösung - passen Sie sie in eine Richtung an und Sie können ein Problem beheben und andere Probleme erstellen. Es verblasst im Vergleich zu einfach mehr RAM installieren.

Wie Linux RAM verwendet

Jeder RAM, der nicht von Anwendungen verwendet wird, kann als "Cache" verwendet werden. Cache ist wichtig für ein schnelles, reibungsloses System, das sowohl Lese- als auch Schreibvorgänge beschleunigt.

Wenn Ihre Anwendungen ihren Speicherbedarf so weit erhöhen, dass sie fast Ihr gesamtes RAM verwenden, schrumpft Ihr Cache und die Festplattenoperationen werden dadurch im Durchschnitt langsamer.

Wenn Anwendungen ihren Speicherbedarf noch weiter erhöhen, vorausgesetzt, Sie haben keinen Auslagerungsspeicher, wird Ihnen möglicherweise der Speicher ausgehen und Ihr System muss Prozesse abbrechen. Tötungsvorgänge sind schlimmer als eine Verlangsamung, da sie zu Instabilität führt.

Wie Linux swap verwendet

Um diese beiden Probleme zu bekämpfen, kann Ihr System einigen selten verwendeten Anwendungsspeicher dem Auslagerungsbereich auf Ihrer Festplatte zuweisen, wodurch mehr Arbeitsspeicher zur Verfügung steht. Dies kann verhindern, dass Prozesse aufgrund des fehlenden Arbeitsspeichers abstürzen, und kann einen kleinen Cache zurückfordern, so dass Festplattenoperationen reibungslos funktionieren können.

Diese Neuzuordnung erfolgt jedoch nicht nach einem bestimmten Cutoff. Sie erreichen einen bestimmten Prozentsatz der Zuteilung nicht, dann beginnt Linux mit dem Tauschen. Es hat einen "unscharfen" Algorithmus. Es müssen viele Dinge berücksichtigt werden, die am besten durch "wie viel Druck ist für die Speicherzuweisung vorhanden" beschrieben werden kann. Wenn es viel "Druck" gibt, um neuen Speicher zuzuweisen, wird es die Chancen erhöhen, dass einige ausgetauscht werden, um mehr Platz zu schaffen. Wenn es weniger "Druck" gibt, wird es diese Chancen verringern.

Ihr System verfügt über eine "Swappiness" -Einstellung, mit der Sie die Berechnung dieses "Drucks" optimieren können. Es wird normalerweise nicht empfohlen, dies zu ändern. Swapping ist insgesamt eine sehr gute Sache - gelegentliche Leistungseinbußen sollen durch einen Gewinn an allgemeiner Reaktionsfähigkeit und Stabilität des Systems für eine breite Palette von Aufgaben ausgeglichen werden. Wenn Sie die Swappiness reduzieren, lässt sich die Menge an Cache-Speicher ein wenig mehr schrumpfen als sonst, selbst wenn es wirklich nützlich wäre. Sie riskieren daher, Ihren Computer insgesamt zu verlangsamen. Wenn Sie das vollständige Auslagern deaktivieren, riskieren Sie, dass Prozesse abgebrochen werden, weil Sie keinen Speicher zuordnen können.

Was passiert, wenn das System festgefahren und stark ausgelagert ist?

Das Auslagern ist ein langsamer und kostspieliger Vorgang, daher wird es vom System vermieden, es sei denn, es wird berechnet, dass der Ausgleich in der Cache-Leistung es insgesamt ausgleichen wird oder wenn es notwendig ist, Prozesse zu vermeiden.

Oft sehen die Leute ihr System an, das die Festplatte stark durchschlägt und viel Swap-Space verwendet und dafür verantwortlich ist. Das ist der falsche Ansatz. Wenn das Swapping jemals dieses Extrem erreicht, bedeutet dies, dass Swapping der Versuch Ihres Systems ist, Probleme mit wenig Speicher zu bewältigen, nicht die Ursache des Problems.

Was ist mit Desktop-Systemen? Benötigen sie nicht einen anderen Ansatz?

Benutzer eines Desktop-Systems erwarten in der Tat, dass das System als Reaktion auf vom Benutzer ausgelöste Aktionen wie das Öffnen einer Anwendung "reagiert". Dies ist die Art von Aktion, die manchmal aufgrund des erhöhten Speicherbedarfs einen Austausch auslösen kann .

Eine Möglichkeit, dies zu optimieren, besteht darin, den Swappiness-Parameter zu reduzieren, der die Toleranz des Systems gegenüber Anwendungen erhöhen kann, die Speicherplatz belegen und wenig Cache-Speicher zur Verfügung haben.

Allerdings verschiebt dies nur die Torpfosten. Die Anwendung kann jetzt ohne eine Swap-Operation geladen werden, aber es wird weniger Spielraum für die nächste Anwendung, die geladen wird. Derselbe Austausch kann nur später auftreten, wenn Sie als nächstes eine Anwendung öffnen. In der Zwischenzeit ist die Systemleistung aufgrund der reduzierten Cachegröße insgesamt etwas geringer. Daher kann es schwierig sein, irgendeinen Nutzen aus der reduzierten Swappiness-Einstellung zu messen, was die Swapping-Verzögerung zu manchen Zeiten reduziert, aber zu anderen Zeiten eine andere langsame Performance verursacht.Es mag gerechtfertigt sein, Swappiness ein wenig zu reduzieren, wenn Sie wissen, was Sie tun, aber es auf so wenig wie 10% zu reduzieren, sollte mit Vorsicht erfolgen, da dies das System gegenüber sehr niedrigen Cache-Größen tolerant machen kann müssen kurzfristig tauschen.

Die vollständige Deaktivierung von Swap sollte vermieden werden, da Sie den zusätzlichen Schutz vor Speichermangel-Bedingungen verlieren, die zum Absturz oder zum Absturz von Prozessen führen können.

Das bei weitem wirksamste Mittel ist die Installation von mehr RAM, wenn Sie es sich leisten können.

Kann Swap auf einem System mit viel RAM deaktiviert werden?

Wenn Sie viel mehr RAM haben, als Sie wahrscheinlich für Anwendungen benötigen, brauchen Sie selten einen Swap. Deaktivieren von Swap wird wahrscheinlich die meiste Zeit keinen Unterschied machen. Wenn Sie jedoch über genügend Arbeitsspeicher verfügen, wird das Deaktivieren des Swap-Vorgangs ebenfalls keine Nachteile haben, da das System nicht wechselt, wenn es nicht benötigt wird.

Die einzige Situation, in der einen Unterschied machen würde, wäre in der unwahrscheinlichen Situation, dass das System nicht mehr genügend Arbeitsspeicher hat und folglich das Cache-System behindert wird, und das ist in einer solchen Situation wo man am liebsten tauschen möchte. So können Sie sicher Swap auf seine normalen Einstellungen verlassen für zusätzliche Sicherheit ohne negative Auswirkungen, wenn Sie viel Speicher haben.

Aber wie kann Swap mein System beschleunigen? Verlangsamen Sie nicht langsame Dinge?

Das Übertragen von Daten vom RAM zum Auslagern ist ein langsamer Vorgang, aber es wird nur ausgeführt, wenn der Kernel sich ziemlich sicher ist, dass der Gesamtnutzen als Ergebnis einer vernünftigen Cachegröße dies überwiegen wird.

Sobald Daten im Austausch sind, wann kommt sie wieder heraus?

Irgendein bestimmter Teil des Speichers wird aus dem Swap zurückkommen, sobald er benutzt wird - gelesen oder geschrieben. In der Regel handelt es sich bei dem ausgelagerten Speicher jedoch um Speicher, auf den seit langem nicht mehr zugegriffen wurde und von dem nicht erwartet wird, dass er bald benötigt wird.

Das Übertragen von Daten aus einem Swap ist ungefähr so ​​zeitaufwendig wie das Einbringen von Daten. Dein Kernel wird Daten nicht entfernen, wenn es nicht nötig ist. Während Daten im Austausch sind und nicht verwendet werden, verbleibt mehr Speicher für andere Dinge, die sind und mehr System-Cache.

    
thomasrutter 05.09.2012, 07:24
11

Auf einem normalen Desktop haben Sie 4-5 aktive Aufgaben, die 50-60% des Arbeitsspeichers belegen. Wenn Sie Swappiness auf 60 setzen, werden ca. 1 / 4-1 / 3 der ACTIVE-Task-Seiten ausgelagert. Das bedeutet, dass bei jedem Taskwechsel für jeden neuen Tab, den Sie geöffnet haben, für jede JS-Ausführung ein Austauschprozess stattfindet.

Die Lösung besteht darin, Swappiness auf 10 zu setzen. Praktisch gesehen führt dies dazu, dass das System den Disk-io-Cache aufgibt (das spielt auf dem Desktop wenig bis gar keine Rolle, da der Lese- / Schreibcache praktisch gar nicht verwendet wird Kopieren von LARGE-Dateien) statt alles in Swap zu schieben. In der Praxis bedeutet dies, dass das System es ablehnt, Seiten zu tauschen und stattdessen io cache zu löschen, es sei denn, es wird 90% des belegten Speicherplatzes erreicht. Und das wiederum bedeutet ein reibungsloses, schnelles und schnelles Desktop-Erlebnis.

Auf dem Dateiserver würde ich Swappiness jedoch auf 60 oder mehr setzen, weil der Server keine großen aktiven Vordergrundaufgaben hat, die als Ganzes im Speicher gehalten werden müssen, sondern eher eine Menge kleinerer Prozesse, die entweder funktionieren oder schlafen, und nicht wirklich ihren Zustand sofort ändern. Stattdessen bedient der Server oft genau die gleichen Daten wie die Clients, wodurch Disk-io-Caches wesentlich wertvoller werden. Auf dem Server ist es also viel besser, die ruhenden Prozesse auszutauschen und Speicherplatz für Festplatten-Cache-Anfragen freizugeben.

Auf Desktops führt diese genaue Einstellung jedoch zum Auslagern von Speicherblöcken von REAL-Anwendungen, die diese Daten ständig ändern oder auf sie zugreifen.

Seltsamerweise reservieren Browser oft große Speicherbereiche, die sie ständig modifizieren. Wenn solche Chunks ausgelagert werden, dauert es eine Weile, wenn sie zurück angefordert werden - und gleichzeitig geht der Browser weiter und aktualisiert seine Caches. Das verursacht große Latenzen. In der Praxis werden Sie 2 Minuten warten, bis die einzelne Webseite in einem neuen Tab geladen wird.

Desktop kümmert sich nicht wirklich um Disk-io, weil der Desktop selten cachefähige große Teile von Daten liest und schreibt. Das Schneiden auf Platte, um nur so viel wie möglich zu verhindern, ist für den Desktop viel günstiger, als 30% des für den Plattencache reservierten Speichers mit 30% RAM (voll von Blöcken, die zu aktiv genutzten Anwendungen gehören) zu vertauschen.

Starten Sie einfach htop, öffnen Sie einen Browser, GIMP, LibreOffice - Laden Sie einige Dokumente dort und durchsuchen Sie dann für mehrere Stunden. Es ist wirklich so einfach.

    
Linux dude 02.06.2014 00:10
9

Wenn Sie einen Java-Server auf Ihrem Linux-System betreiben, sollten Sie wirklich überlegen, Swappiness um den Standardwert von 60 zu reduzieren. Also ist 20 in der Tat ein guter Anfang. Swapping ist ein Mörder für einen Müllsammelprozess, da Sammlungen jedes Mal große Teile des Prozessspeichers berühren müssen. Das Betriebssystem verfügt nicht über die Mittel, um solche Prozesse zu erkennen und die richtigen Dinge für sie zu finden. Es empfiehlt sich, so viel wie möglich für produktive Anwendungsserver nicht zu wechseln.

    
Andreas 25.02.2014 13:22
4

Ich würde vorschlagen, einige Experimente zu machen, während der Systemmonitor offen ist, um genau zu sehen, wie viel Last Ihre Maschine unter ist, ich auch mit 4GB Speicher und einer 128GB SSD laufen, so änderte die swappiness Wert auf 10, die nicht nur Leistung während verbessert unter Last, aber als Bonus wird auch die Lebensdauer der SSD-Laufwerk erhöhen, da es weniger Schreibvorgänge leidet.

Für ein einfaches Video-Tutorial, wie Sie dies mit einer vollständigen Erklärung tun können Siehe das YouTube-Video unten

Link

    
Tech-Compass 07.06.2014 18:20
1

Es könnte sein, dass ein Großteil des wahrgenommenen Swapping-Verhaltens beim Start oder beim Öffnen von Programmen das Lesen von Konfigurationsdateien usw. von der Festplatte ist. Es ist daher am besten, wenn Sie das Systemmonitorprogramm verwenden, bevor Sie davon ausgehen, dass der Festplattenzugriff aufgrund des Swapping erfolgt.

    
user1740850 24.04.2013 19:57
1

Ich möchte eine Perspektive von einem Big Data Performance-Ingenieur hinzufügen, um anderen einen besseren Hintergrund für die Technologie von 2017 zu geben.

Meine persönliche Erfahrung ist, dass während ich typischerweise das Auslagern deaktiviert habe, um zu garantieren, dass meine Systeme mit maximaler Geschwindigkeit laufen, auf meiner Workstation für ein spezifisches Problem, dass swappiness von 1 und 10 zum Einfrieren (für immer) und lang führt Pausen. Swappiness von 80 für diese spezielle Anwendung führt zu viel besserer Leistung und kürzeren Pausen als der Standard (60). Beachten Sie, dass ich 8GB RAM und 4x 256GB Swap von 1 HDD unterstützt hatte. Normalerweise würde ich präzise Statistiken in meinen Benchmarks und den vollständigen Hardware-Spezifikationen angeben, aber ich habe noch keine gemacht und es ist ein neuer Low-End-Desktop, der hier nicht wichtig ist.

Zurück bei meiner früheren Firma war der Grund, warum wir Swappiness auf Spark-Servern mit [500GB to 4TB] x [10-100] Knoten nicht aktiviert haben, dass wir eine schlechte Performance als Zeichen für die Neugestaltung der Datenpipeline und Datenstrukturen sahen eine effizientere Art und Weise. Wir wollten auch nicht die HDDs / SSDs benchmarken. Außerdem würde das Tauschen von so viel RAM 10-30 Platten pro Knoten mit parallelen Schreibvorgängen erfordern, um die Zugriffszeit auf die Platte zu minimieren.

Heute, vor 20 Jahren und 20 Jahren in der Zukunft, bleibt der Fall, dass einige Probleme für den RAM zu groß sind. Mit unendlicher Zeit und Geld können wir mehr Hardware kaufen / leasen oder jeden Prozess neu gestalten, um die Leistung auf ein wünschenswertes Niveau zu bringen. Swapping ist nur ein Hack, damit wir das eigentliche Problem ignorieren können (wir haben nicht genug RAM und wollen kein Geld mehr ausgeben).

Für diejenigen, die denken, dass höhere Swappiness ein schlechter Rat ist, hier ist eine kleine Perspektive. In der Vergangenheit hatten HDs, wenn überhaupt, nur ein paar kb Cache. Die Schnittstelle war IDE / Parallel ATA. Der CPU-Bus war auch viel langsamer zusammen mit RAM und vielen anderen Dingen. Kurz gesagt, Systeme waren in jeder Hinsicht sehr langsam (im Vergleich zu heute). Vor ein paar Jahren verwendeten Festplatten SATA3. Heute verwenden sie das NVMe-Protokoll, das deutliche Latenzverbesserungen aufweist. HDs haben viele MB Cache. Der interessanteste Teil ist, wenn Sie eine moderne SSD (viel stabilere Lese / Schreib-Ausdauer und -Perforation) mit NVMe oder PCIe als Ihren Swap-Speicher verwenden. Es ist der beste Kompromiss zwischen Kosten und Leistung. Bitte versuchen Sie dies nicht mit billigen oder alten SSDs.

Swap + SSDs! Bei hochleistungsfähigem flüchtigen Speicher würde ich sehr empfehlen, mit einem hohen Swappiness-Wert zu experimentieren. Es hängt hauptsächlich von den Speicherzugriffsmustern ab (zufälliger Zugriff auf den gesamten Speicher und seltenem Zugriff auf die meisten), Speicherauslastung, wenn die Festplattenbandbreite bereits gesättigt ist, und den tatsächlichen Kosten des Thrashings.

    
ldmtwo 25.04.2018 22:21

Tags und Links