Warum empfehlen die meisten Leute, den Wechsel auf 10-20 zu reduzieren?


65

Ich habe auf mehreren Websites gesehen, dass es empfehlenswert ist, die Austauschbarkeit für eine bessere Leistung auf 10-20 zu reduzieren.

Ist es ein Mythos oder nicht? Ist das eine allgemeine Regel? Ich habe einen Laptop mit 4 GB RAM und 128 GB SSD-Festplatte. Welchen Wert empfehlen Sie für meinen Austausch?

Vielen Dank.


5
Die Sites, die Sie auflisten, erklären nicht, warum sie empfehlen, die Standardeinstellungen zu ändern. Die Antworten hier sind viel besser, für diese schwierige Wahl in Bezug auf ein kompliziertes Problem.
Nealmcb

Antworten:


88

Weil die meisten glauben, dass Tauschen = schlecht ist und dass das System tauschen wird, wenn es nicht wirklich benötigt wird, wenn Sie das Tauschen nicht reduzieren. Keines davon ist wirklich wahr. Leute assoziieren das Tauschen mit Zeiten, in denen ihr System festgefahren ist - es ist jedoch meistens ein Tauschen, weil das System festgefahren ist und nicht umgekehrt. Wenn das System vertauscht wird, hat es die Leistungskosten bereits bei seiner Entscheidung für den Austausch berücksichtigt und entschieden, dass dies insgesamt eine größere Beeinträchtigung der Systemleistung oder -stabilität bedeuten würde.

Insgesamt führen die Standardeinstellungen zu einer guten Gesamtleistung und Stabilität. Ich würde empfehlen, die Standardeinstellung beizubehalten. Es gibt weitere Möglichkeiten für Linux, die Speicherverwaltung zu verbessern, um einige Randfälle zu lösen, aber im Großen und Ganzen ist die Swappiness-Steuerung keine gute Umgehung - passen Sie sie in eine Richtung an, und Sie können ein Problem beheben und andere Probleme erstellen. Wenn es überhaupt möglich ist, verdrängt die einfache Installation von mehr physischem RAM (und das Überlassen von Swapiness) alle anderen Maßnahmen.

Wie Linux RAM benutzt

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 auf der Festplatte beschleunigt.

Wenn Ihre Anwendungen den Arbeitsspeicher so weit erhöhen, dass fast der gesamte Arbeitsspeicher belegt ist, wird der Cache verkleinert und der Festplattenbetrieb verlangsamt sich im Durchschnitt. Heutzutage reicht es nicht mehr aus, nur zehn Megabyte oder weniger für den Cache zu haben.

Wenn Anwendungen die Speichernutzung noch weiter erhöhen - vorausgesetzt, Sie haben keinen Auslagerungsspeicher -, haben Sie nicht nur keinen Cache-Speicher, sondern irgendwann keinen Arbeitsspeicher mehr und Ihr System muss die laufenden Prozesse beenden. Tötungsprozesse sind schlimmer als eine Verlangsamung, da sie ein instabiles, unvorhersehbares System ergeben.

Wie Linux Swap verwendet

Um diesen beiden Problemen zu begegnen, kann Ihr System dem Auslagerungsspeicher auf Ihrer Festplatte einen Teil des selten verwendeten Anwendungsspeichers neu zuweisen und so RAM freigeben. Der zusätzliche Arbeitsspeicher kann verhindern, dass Prozesse aufgrund von Speichermangel abstürzen, und kann einen kleinen Cache-Speicher freigeben, damit Festplattenoperationen reibungsloser ablaufen können.

Diese Neuzuweisung erfolgt jedoch nicht nach einem bestimmten Cutoff. Sie erreichen keinen bestimmten Prozentsatz der Zuweisung, nach dem Linux mit dem Auslagern beginnt. Es hat einen "Fuzzy" -Algorithmus. Es werden viele Dinge berücksichtigt, die am besten mit "wie viel Druck für die Speicherzuweisung besteht" beschrieben werden können. Wenn viel "Druck" besteht, neuen Speicher zuzuweisen, erhöht dies die Wahrscheinlichkeit, dass einige ausgetauscht werden, um mehr Platz zu schaffen. Wenn es weniger "Druck" gibt, werden diese Chancen verringert.

Ihr System verfügt über eine "Swappiness" -Einstellung, mit der Sie die Berechnung dieses "Drucks" optimieren können. Es wird oft fälschlicherweise als "Prozentsatz des Arbeitsspeichers" dargestellt, aber nicht, es ist nur ein Wert, der als Teil der Formel verwendet wird. Werte um 40 bis 60 sind die empfohlenen, vernünftigen Werte, wobei 60 heutzutage Standard sind.

Es ist insgesamt eine sehr gute Sache, Ihr System bei Bedarf tauschen zu lassen, auch wenn Sie über viel RAM verfügen. Wenn Sie Ihr System bei Bedarf austauschen, können Sie beruhigt sein, dass Ihr System eine zweite Chance hat, alles am Laufen zu halten, wenn Sie jemals auch nur vorübergehend in eine Situation mit wenig Arbeitsspeicher geraten (während ein kurzer Prozess viel Arbeitsspeicher benötigt). Wenn Sie das Auslagern vollständig deaktivieren, besteht die Gefahr, dass Prozesse abgebrochen werden, weil kein Speicher zugewiesen werden kann.

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

Das Austauschen ist eine langsame und kostspielige Operation, daher vermeidet das System dies, es sei denn, es wird berechnet, dass der Kompromiss bei der Cache-Leistung dies insgesamt wettmacht, oder es ist erforderlich, das Beenden von Prozessen zu vermeiden.

Die meisten Leute werden sich ihr System ansehen, das die Festplatte stark auslastet und viel Swap-Platz nutzt, und Schuld daran ist, dass es ausgetauscht wird. Das ist der falsche Ansatz. Wenn das Auslagern jemals dieses Extrem erreicht, bedeutet dies, dass das Auslagern der Speicher Ihres Systems nicht die Ursache des Problems ist, sondern der Versuch, Probleme mit geringem Arbeitsspeicher zu lösen.

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

Benutzer eines Desktopsystems erwarten in der Tat, dass sich das System als Reaktion auf vom Benutzer eingeleitete Aktionen wie das Öffnen einer Anwendung "anspricht". Dies ist die Art von Aktion, die aufgrund der erforderlichen Speichererweiterung manchmal einen Auslagerungsvorgang auslösen kann.

Eine Möglichkeit, dies zu optimieren, besteht darin, den Parameter swappiness zu verringern, wodurch die Toleranz des Systems gegenüber Anwendungen erhöht wird, bei denen der Arbeitsspeicher aufgebraucht ist und der Cache-Speicher knapp wird.

Dies verschiebt jedoch nur die Torpfosten. Die erste Anwendung wird möglicherweise jetzt ohne einen Auslagerungsvorgang geladen, lässt jedoch für die nächste Anwendung, die geladen wird, weniger Spielraum. Derselbe Austausch wird möglicherweise erst später ausgeführt, wenn Sie stattdessen das nächste Mal eine Anwendung öffnen. In der Zwischenzeit ist die Systemleistung aufgrund der reduzierten Cache-Größe insgesamt geringer. Daher kann es schwierig sein, einen Nutzen aus der reduzierten Austauschbarkeitseinstellung zu ziehen, wodurch die Austauschverzögerung manchmal verringert wird, zu anderen Zeiten jedoch eine andere langsame Leistung verursacht wird. Wenn Sie wissen, was Sie tun, ist es möglicherweise gerechtfertigt, die Auslagerungsrate ein wenig zu reduzieren. Wenn Sie sie jedoch auf 10% reduzieren, kann dies zu einer Toleranz des Systems gegenüber sehr geringen Cachegrößen und zu einem kurzfristigen Auslagerungsrisiko führen.

Das vollständige Deaktivieren von Swap sollte vermieden werden, da Sie den zusätzlichen Schutz vor nicht genügend Arbeitsspeicher verlieren, der zum Absturz oder zum Absturz von Prozessen führen kann.

Das mit Abstand effektivste 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, müssen Sie selten tauschen. Das Deaktivieren von Swap wird wahrscheinlich die meiste Zeit keinen Unterschied machen. Wenn Sie jedoch über ausreichend RAM verfügen, wird das Aktivieren von Swap ebenfalls nicht beeinträchtigt, da das System nicht tauscht, wenn dies nicht erforderlich ist.

Die einzigen Situationen, in denen dies einen Unterschied machen würde, sind die unwahrscheinlichen Situationen, in denen dem System der Speicher ausgeht und das Cache-System infolgedessen behindert wird. In solchen Situationen möchten Sie am meisten tauschen. Auf diese Weise können Sie die normalen Einstellungen für ein beruhigendes Gefühl beibehalten, ohne dass dies negative Auswirkungen hat, wenn Sie über ausreichend Speicher verfügen.

Aber wie kann ein Tausch mein System beschleunigen? Tauscht nicht langsam?

Das Übertragen von Daten vom RAM zum Swap ist ein langsamer Vorgang, der jedoch nur ausgeführt wird, wenn der Kernel ziemlich sicher ist, dass der Gesamtvorteil durch die Beibehaltung einer angemessenen Cachegröße dies überwiegt.

Wann werden die Daten nach dem Austausch wieder ausgegeben?

Ein bestimmter Teil des Speichers wird aus dem Swap-Speicher entfernt, sobald er verwendet wird - gelesen oder beschrieben. Bei dem ausgelagerten Speicher handelt es sich jedoch in der Regel um Speicher, auf den lange nicht mehr zugegriffen wurde und von dem nicht erwartet wird, dass er bald benötigt wird.

Das Übertragen von Daten aus dem Swap ist ungefähr so ​​zeitaufwendig wie das Einspielen. Ihr Kernel entfernt keine Daten, wenn dies nicht erforderlich ist. Während Daten ausgetauscht werden und nicht verwendet werden, verbleibt mehr Speicher für andere Dinge, die verwendet werden, und mehr Systemcache.

Gibt es Fälle, in denen es angebracht ist, den Austausch zu reduzieren?

Ja. Wenn Sie einen Server für eine bestimmte Serveranwendung ausführen, der nicht vom Systemcache profitiert. Einige Datenbankserver wie Oracle Server, MySQL / MariaDB empfehlen, in einigen Fällen die Auslagerungsrate auf 1 bis 10 zu reduzieren, da diese Datenbankmodule ihr eigenes Caching verwenden.

Beachten Sie, dass dies nur dann zutrifft, wenn Ihr System für diese eine Aufgabe vorgesehen ist, und im Fall von MySQL / MariaDB nur dann, wenn Sie ausschließlich InnoDB oder XtraDB und nicht MyISAM oder Aria usw. verwenden.


Vielen Dank für Ihre ausführliche Beschreibung. Ich denke in meinem Fall (4GB Ram und 128GB SSD Hard) und bei meiner Nutzung (Java EE Entwicklung und mehrere Betriebssysteme in der Box) ist swappiness = 20 geeignet. Was denkst du?
Saeed Zarinfam

Ich denke, der Standard von 60 wäre meiner Meinung nach am besten.
Thomasrutter

4
@BlancaHiggins hast du den Beitrag gelesen, den du kommentiert hast? Ihr Kommentar scheint nicht zu beschreiben, was Swappiness tatsächlich tut.
Thomasrutter

1
Dies ist eine hervorragende Antwort. Vielen Dank für diese großartige Erklärung.
Dan Barron

2
Ein Teil der Informationen in diesem SwapFaq ist meiner Meinung nach irreführend: Wenn Sie ihn auf 100 setzen, wird er "aggressiv" ausgetauscht. Ich denke, es ist genauer zu sagen, dass es sich um eine sehr vorsichtige, proaktive Einstellung handelt, die beim ersten Anzeichen dafür, dass der verfügbare Speicher oder Cache sogar ein bisschen knapp wird, ausgetauscht wird. Während niedrige Einstellungen wie 10 eine riskantere, aufregendere Einstellung sind, sollten Sie das Auslagern vermeiden, bis der verfügbare Arbeitsspeicher sehr niedrig ist und der Cache so gut wie vollständig aufgebraucht ist, sodass das System keinen Spielraum mehr hat.
Thomasrutter

14

Auf einem normalen Desktop haben Sie 4-5 aktive Aufgaben, die 50-60% des Arbeitsspeichers verbrauchen. Wenn Sie swappiness auf 60 setzen, werden ungefähr 1 / 4-1 / 3 der ACTIVE-Aufgabenseiten ausgelagert. Das heißt, für jede Taskänderung, für jede neue Registerkarte, die Sie geöffnet haben, für jede JS-Ausführung wird ein Auslagerungsprozess durchgeführt.

Die Lösung besteht darin, swappiness auf 10 zu setzen. Nach praktischen Beobachtungen gibt das System den Festplatten-io-Cache auf (der auf dem Desktop kaum eine Rolle spielt, da der Lese- / Schreib-Cache praktisch überhaupt nicht verwendet wird. Es sei denn, Sie kopieren ständig LARGE Dateien) anstatt irgendetwas in Swap zu schieben. In der Praxis bedeutet dies, dass sich das System weigert, Seiten auszutauschen, und stattdessen den io-Cache schneidet, sofern nicht 90% des Arbeitsspeichers belegt sind. Und das bedeutet wiederum eine reibungslose, tauschlose und schnelle Desktop-Erfahrung.

Auf dem Dateiserver würde ich jedoch swappiness auf 60 oder noch mehr setzen, da der Server keine großen aktiven Vordergrundaufgaben hat, die als Ganzes im Speicher gehalten werden müssen, sondern viele kleinere Prozesse, die entweder arbeiten oder schlafen. und nicht wirklich ihren Zustand sofort zu ändern. Stattdessen stellt der Server den Clients häufig genau die gleichen Daten zur Verfügung (verzeihen), was die Wertschöpfung von Festplatten-Io-Caches erheblich steigert. Auf dem Server ist es daher viel besser, die Ruhevorgänge auszutauschen, um Speicherplatz für Festplatten-Cache-Anforderungen freizugeben.

Auf Desktops führt diese genaue Einstellung jedoch dazu, dass Speicherblöcke von REAL-Anwendungen ausgelagert werden, die diese Daten nahezu ständig ändern oder auf sie zugreifen.

Seltsamerweise reservieren Browser häufig große Speicherbereiche, die sie ständig ändern. Wenn solche Chunks ausgelagert werden, dauert es eine Weile, bis sie zurückgefordert werden - und gleichzeitig aktualisiert der Browser seine Caches. Welches enorme Latenzen verursacht. In der Praxis warten Sie 2 Minuten darauf, dass die einzelne Webseite in einem neuen Tab geladen wird.

Desktop kümmert sich nicht wirklich um Festplatten-IO, da Desktop selten cachefähige Daten liest und schreibt, die große Teile der Daten wiederholen. Das Schneiden der Festplatte io, um das Auslagern so weit wie möglich zu verhindern, ist für den Desktop viel günstiger, als wenn 30% des Arbeitsspeichers für den Festplatten-Cache reserviert und 30% des Arbeitsspeichers (voller Blöcke aktiv genutzter Anwendungen) ausgelagert werden.

Starten Sie einfach htop, öffnen Sie einen Browser, GIMP, LibreOffice - laden Sie dort einige Dokumente und durchsuchen Sie sie dann mehrere Stunden lang. Es ist wirklich so einfach.


3
+1 für die Beschreibung der Unterschiede zwischen Server und Desktop. Der Festplatten-Cache des Servers kann in einem Festplattenfeld ausgeführt werden.
Dee

Wenn dies der Fall ist, warum verwenden sowohl die Server- als auch die Desktop-Version von Ubuntu standardmäßig einen Swap-Wert von 60? Wenn das, was Sie angeben, wahr ist, ist es sinnvoller, wenn die Desktop-Version den Standardwert 20 oder sogar 10 hat, dies ist jedoch nicht der Fall.
JAB

1
Referenz für die Implikation, dass Swapiness ein direkter Prozentsatz des RAM ist, der getauscht wird? Ich denke nicht, dass es so funktioniert.
Xen2050

1
Das tut es nicht. Swappiness hängt nicht mit einem Prozentsatz des RAM zusammen. Es ist ein Drehknopf, der einen Fuzzy-Algorithmus dahingehend optimiert, dass es in einer bestimmten Problemsituation mehr oder weniger wahrscheinlich ist, dass er sich ändert. Ich denke auch, dass die Beschreibung von Server- und Desktop-Workloads in dieser Antwort eine Reihe von Annahmen enthält, die nicht immer zutreffen.
Thomasrutter

9

Wenn Sie einen Java-Server auf Ihrem Linux-System ausführen, sollten Sie wirklich in Betracht ziehen, den Swap-Status von 60 um ein Vielfaches zu verringern. 20 ist also in der Tat ein guter Anfang. Das Austauschen ist ein Mörder für einen Garbage-Collection-Prozess, 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 wird empfohlen, möglichst wenig für produktive Anwendungsserver zu tauschen.


Wenn Sie einen Server für eine spezielle Arbeitsauslastung reservieren, von der Sie wissen, dass sie nicht vom Systemcache profitiert (z. B. ein Datenbankserver), ist es möglicherweise sinnvoll, die Auslagerungsrate zu verringern. Ich denke jedoch nicht, dass die Müllabfuhr ein Spezialfall ist. Wenn der Speicher häufig berührt wird, wird er nicht ausgetauscht, sondern im physischen RAM aufbewahrt. Dies ist nur dann nicht der Fall, wenn Sie eine schwerwiegende Speichermangelsituation haben - und das Austauschen nicht verantwortlich ist.
Thomasrutter

4

Ich würde vorschlagen, einige Experimente durchzuführen, während der Systemmonitor geöffnet ist, um genau zu sehen, unter welcher Last sich Ihr Computer befindet. Außerdem arbeite ich mit 4 GB Arbeitsspeicher und einer 128 GB SSD. Daher wurde der Swap-Wert auf 10 geändert, was nicht nur die Leistung unter Last, sondern auch die Leistung verbessert als Bonus erhöht sich auch die Lebensdauer des SSD-Laufwerks, da es weniger Schreibvorgänge erleidet.

Ein einfaches Video-Tutorial mit einer vollständigen Erklärung finden Sie im folgenden YouTube-Video

http://youtu.be/i6WihsFKJ7Q


1
Tolles Video, das du gemacht hast, aber das Video beantwortet die Frage nicht wirklich direkt, es ist eher ein Howto zum Ändern der Austauschbarkeit.
Jmunsch

+1 für die Lebensdauer von SSDs, für SSDs ist es am besten, wenn das System so viel wie möglich schreibgeschützt ist, der Rest im Arbeitsspeicher verbleibt und der Arbeitsspeicher heutzutage auf aktuellen Desktop-PCs normalerweise kein großes Problem darstellt.
Dee

3

Ich möchte eine Perspektive von einem Big Data Performance-Ingenieur hinzufügen, um anderen mehr Hintergrundinformationen über 2017-Technologie zu geben.

Meine persönliche Erfahrung ist, dass ich, obwohl ich das Tauschen normalerweise deaktiviert habe, um sicherzustellen, dass meine Systeme mit maximaler Geschwindigkeit laufen, auf meiner Workstation für ein bestimmtes Problem festgestellt habe, dass das Tauschen von 1 und 10 zu einem Einfrieren (für immer) und langen Pausen führt. Ein Wechsel von 80 für diese spezielle Anwendung führt zu einer viel besseren Leistung und kürzeren Pausen als der Standardwert (60). Beachten Sie, dass ich 8 GB RAM und 4 x 256 GB Swap hatte, die von 1 Festplatte unterstützt wurden. Normalerweise würde ich genaue Statistiken angeben, die in meinen Benchmarks und den vollständigen Hardwarespezifikationen zu sehen sind, aber ich habe noch keine erstellt und es ist ein aktueller Low-End-Desktop, der hier nicht wichtig ist.

In meiner früheren Firma haben wir die Auslagerung auf Spark-Servern mit [500 GB bis 4 TB] x [10-100] Knoten nicht aktiviert, weil wir eine schlechte Leistung als Zeichen für eine effizientere Neugestaltung der Datenpipeline und der Datenstrukturen sahen Weise. Wir wollten auch nicht die HDDs / SSDs vergleichen. Wenn Sie so viel RAM austauschen, werden 10 bis 30 Festplatten pro Knoten mit parallelen Schreibvorgängen benötigt, um die Festplattenzugriffszeit zu minimieren.

Heute, vor 20 Jahren und in 20 Jahren, wird der Fall bestehen bleiben, dass einige Probleme für den Arbeitsspeicher zu groß sind. Mit unendlich viel Zeit und Geld können wir mehr Hardware kaufen / leasen oder jeden Prozess neu gestalten, um die Leistung auf ein gewünschtes Niveau zu bringen. Tauschen ist nur ein Hack, damit wir das eigentliche Problem ignorieren können (wir haben nicht genug RAM und wollen nicht mehr Geld ausgeben).

Für diejenigen, die ein höheres Tauschverhalten für einen schlechten Rat halten, hier eine kleine Perspektive. In der Vergangenheit hatten HDs nur ein paar KB Cache, wenn überhaupt. Die Schnittstelle war IDE / Parallel ATA. Der CPU-Bus war zusammen mit RAM und vielen anderen Dingen auch viel langsamer. Kurz gesagt, die Systeme waren in jeder Hinsicht (im Vergleich zu heute) sehr langsam. Vor ein paar Jahren verwendeten Festplatten SATA3. Heute verwenden sie das NVMe-Protokoll, mit dem sich die Latenz erheblich verbessert. HDs haben viele MB Cache. Der interessanteste Teil ist, wenn Sie eine moderne SSD (viel stabilere Lese- / Schreibbeständigkeit und Leistung) mit NVMe oder PCIe als 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 flüchtigem Hochleistungsspeicher würde ich dringend empfehlen, mit einem hohen Austauschwert zu experimentieren. Dies hängt hauptsächlich von den Speicherzugriffsmustern (wahlfreier Zugriff auf den gesamten Speicher im Gegensatz zu seltenem Zugriff auf die meisten), der Speichernutzung, wenn die Festplattenbandbreite bereits voll ist, und den tatsächlichen Kosten für das Thrashing ab.


1

Es könnte sein, dass ein Großteil des wahrgenommenen Auslagerungsverhaltens beim Starten oder Öffnen von Programmen darin besteht, dass Linux Konfigurationsdateien usw. von der Festplatte liest. Daher ist es möglicherweise am besten, das Systemüberwachungsprogramm zu verwenden, bevor Sie davon ausgehen, dass der Festplattenzugriff auf das Austauschen zurückzuführen ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.