it-swarm.com.de

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

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

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.

64
Saeed Zarinfam

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 das Tauschen , weil das System festgefahren ist, 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 Edge-Fälle zu lösen. Im Großen und Ganzen ist die Swappiness-Steuerung jedoch keine gute Lösung. Passen Sie sie in eine Richtung an, und Sie können ein Problem beheben und andere Probleme erstellen. Wenn es überhaupt möglich ist, werden alle anderen Abhilfemaßnahmen außer Kraft gesetzt, indem Sie einfach mehr physisches RAM installieren (und die Funktion von swappiness in Ruhe lassen).

Wie Linux RAM benutzt

Jedes RAM, das 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 möglicherweise keinen Speicher mehr und Ihr System muss laufende Prozesse beenden. Tötungsprozesse sind schlimmer als eine Verlangsamung, da sie ein instabiles, unvorhersehbares System ergeben.

Wie Linux Swap benutzt

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. Das zusätzliche RAM kann verhindern, dass Prozesse aufgrund von Speichermangel abstürzen, und kann einen kleinen Cache zurückfordern, 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 tauscht?

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 in Anspruch nimmt und Schuld daran ist. 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 keinen 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 voll 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 zu bestimmten Zeiten 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 das System sehr geringen Cache-Größen standhalten und das System muss eher kurzfristig ausgelagert werden.

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, mehr RAM zu installieren, wenn Sie es sich leisten können.

Kann Swap auf einem System mit vielen RAM sowieso deaktiviert werden?

Wenn Sie weit 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 es einen Unterschied machen würde , sind die unwahrscheinlichen Situationen, in denen dem System der Speicher ausgeht und folglich das Cache-System behindert wird , und es ist in dieser Art von Situation, in der Sie am meisten tauschen möchten. So können Sie die normalen Einstellungen für einen beruhigenden Austausch beibehalten, ohne dass dies negative Auswirkungen hat, wenn Sie über ausreichend Speicher verfügen.

Aber wie kann ein Swap mein System beschleunigen? Tauscht ein Swap nicht langsamer?

Das Übertragen von Daten von RAM zu 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.

Sobald die Daten ausgetauscht wurden, wann werden sie 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 eine Reduzierung der Austauschbarkeit angebracht ist?

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 verwenden und nicht MyISAM oder Aria usw.

88
thomasrutter

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 das System das Auslagern von Seiten ablehnt und stattdessen den io-Cache schneidet, sofern nicht 90% des verwendeten Speichers 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 einstellen, da der Server keine großen aktiven Vordergrundaufgaben hat, die als Ganzes gespeichert 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 zu schaffen.

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 darauf 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. Das verursacht enorme Latenzen. 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 nur so weit wie möglich zu verhindern, ist für den Desktop viel günstiger, als 30% des für den Festplattencache reservierten Speichers mit 30% von RAM (voll von Blöcken, die aktiv gehören) gebrauchte Anwendungen) ausgelagert.

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.

14
Linux dude

Wenn Sie auf Ihrem Linux-System einen Java -Server ausführen, sollten Sie wirklich in Betracht ziehen, die Auslagerungsrate um ein Vielfaches von dem Standardwert von 60 zu verringern. Daher ist 20 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.

9
Andreas

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

4
Tech-Compass

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 den Austausch auf Spark Servern mit [500 GB bis 4 TB] x [10-100] Knoten nicht aktiviert, da wir eine schlechte Leistung als Zeichen für die Neugestaltung der Daten-Pipeline und angesehen haben Datenstrukturen effizienter gestalten. Wir wollten auch nicht die HDDs/SSDs vergleichen. Außerdem würde das Austauschen von so viel RAM 10-30 Platten pro Knoten mit parallelen Schreibvorgängen erfordern, um die Plattenzugriffszeit 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, seltener Zugriff auf die meisten), der Speichernutzung, wenn die Festplattenbandbreite bereits voll ist, und den tatsächlichen Kosten für das Thrashing ab.

3
ldmtwo

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.

1
user1740850