Die Verwendung von Linux (3.4) SSD-Swap-Partitionen führt zu extremer Latenz - wie kann dies behoben werden?

7

Ich verwende 4G RAM mit einer zusätzlichen 6G-Swap-Partition. SSD ist ein ziemlich anständiges SAMSUNG MZMPA128HMFU-Modell. Das System reagiert sehr gut auf Workloads, wenn sich die Dinge im RAM befinden. Sobald jedoch die Swap-Partition in einer sinnvollen Menge (z. B. 1 GB + verwendeter Swap) erreicht wird, geht die Reaktionsfähigkeit während des Austauschs von Episoden vollständig verloren. Das SSD-Licht bleibt einige Sekunden lang an, während anscheinend viele Dinge ein- oder ausgelagert werden. Währenddessen werden alle anderen E / A-Vorgänge blockiert. Ich habe gesehen, wie die Systemlast in wenigen Sekunden von 0,8 auf 10 gestiegen ist und dann wieder nach unten gefallen ist, wenn IO wieder in Gang kommt. Wenn der Swap aktiv genutzt wird (ich halte eine Reihe großer Apps offen), treten diese würgenden Swap-Episoden mit zunehmender Verfügbarkeit (nach 26 Tagen) immer häufiger auf.

Ich schaue auf Latenzzeit, aber es sagt mir nicht viel, was ich weitermachen könnte.

Derzeit scheint es keine andere Lösung zu geben, als genügend Apps zu stoppen, um Swapoff -a ausführen zu können, und einfach die Verwendung von Swap zu beenden. Ich bin mir nicht sicher, wie sich dies auf meine Nutzungsmuster auswirkt. Ich bin mir fast sicher, dass dies für die von mir regelmäßig ausgeführten Apps ausreichen wird.

Das Verringern von vm.swappiness auf 1 hilft nichts. Zumindest nicht von alleine.

Ist das eine bekannte Sache? Welche Optionen stehen mir zur Verfügung, um bei Verwendung des virtuellen Speichers eine angemessene Desktop-Reaktionsfähigkeit zu erzielen?

lkraav
quelle
7
Die unnötige Verwendung von Swap ist sehr, sehr dumm . Wenn Sie ständig Swap für sehr aktives Material verwenden müssen, benötigen Sie mehr RAM. Eine SSD ist um Größenordnungen langsamer als der reale Speicher, obwohl sie merklich schneller ist als eine sich drehende Platte.
Goldlöckchen
2
Ich bin mir nicht sicher, woher das "unnötig" kam. Ich führe meine Apps aus, um echte Arbeit zu leisten. Wollen Sie damit sagen, dass die Verwendung von Swap unter Linux das System wie folgt durch Kernel- oder Scheduler-Design blockieren soll?
lkraav
Nein, er sagt, dass Sie anscheinend zu wenig Speicher in Ihrem System haben, um Ihre Aufgaben auszuführen. Wenn Ihre Arbeitsbelastung erheblich mehr Speicher erfordert als Sie, befinden Sie sich einfach in einer Welt voller Schmerzen.
Marcelm
Allerdings sind nicht alle SSDs gleich. Einige, besonders ältere und billigere, können schrecklich langsam sein. Ich hatte eine SSD in meiner Workstation, und sobald sie nicht triviale E / A-Vorgänge (z. B. 10 bis 20 MB / s) ausführen musste, war Linux nicht mehr funktionsfähig. Jetzt habe ich eine neue SSD (anständig, aber nichts Besonderes) und alles funktioniert auch unter E / A-Last hervorragend.
Marcelm

Antworten:

6

Ich würde dringend empfehlen, mehr Speicher zu installieren, damit Sie nicht tauschen. Jeder Austausch tötet nur die Leistung eines Linux- oder UNIX (tm) -Systems. Installieren Sie also genügend Speicher, um den Austausch zu stoppen!

mdpc
quelle
2
Richtig, aber das erklärt nicht den technischen Hintergrund des Problems. Nachdem ich beispielsweise OS X mehrere Jahre lang bis zu Snow Leopard verwendet hatte, konnte ich dieses Verhalten unter ähnlichen Verwendungsmustern und -bedingungen nicht feststellen. Wie ist Linux hier schwächer?
lkraav
@lkraav der technische Hintergrund ist sehr viel die Datenübertragungsgeschwindigkeit: RAM ist in der Größenordnung GB / s, SSD ist mindestens eine Reihenfolge darunter (plus Sie müssen es sowohl schreiben als auch lesen). Wenn Sie also auf Swap klicken und das System nur versucht, die benötigten Seiten so schnell wie möglich in den Arbeitsspeicher zu verschieben, wundern Sie sich nicht, dass es nicht so schnell reagiert wie Swap. Und wenn Sie von einer Anwendung in eine andere springen, wird es die Sache nur noch schlimmer machen.
Peterph
1
Ähnliche Hardware mit ähnlicher Arbeitslast führt auf jeder Plattform (Windows, OSX, Linux, Unix, ...) zu einer ähnlichen Leistungsminderung. Entweder vergleichen Sie zwei verschiedene Situationen oder Ihre Hardware funktioniert nicht richtig.
Jippie
2
Ich habe das Gefühl, dass der Speicher heutzutage recht billig ist und die Kernel-Entwickler nicht motiviert sind, das Austauschverhalten zu verbessern. Es hat für sie einfach keine hohe Priorität.
Mdpc
1
Update Mitte 2015: 16 GB sind immer noch meistens genug für alles, was ich heutzutage mache. Immer wenn ich jetzt auf Swap drücke, ist dies ein sofortiges Signal dafür, dass eine App fehlerhaft ist und Speicherplatz verliert, und htop bestätigt dies jedes Mal. Aus diesem Grund ist das XPS13 2015 mit Infinity-Display eine schöne Sache, aber maximal 8 GB RAM sind einfach nicht in Ordnung.
lkraav
2

Wenn Ihre Workload wirklich mehr als 6 GB aktiven RAM benötigt, können Sie nichts wirklich optimieren, damit sie beim Austauschen schneller läuft.

Einige Light-Swap-Anwendungen sind nicht unbedingt ein Problem - mein 3-GB-Laptop läuft seit ungefähr 30 Tagen und verwendet 600 MB Swap (auf einer sich drehenden Festplatte, keine SSD), aber es läuft einwandfrei - da nur inaktive Seiten vorhanden waren ausgetauscht, so dass Seiten selten (wenn überhaupt) wieder eingelagert werden müssen.

Wenn Sie Ihrem System nicht mehr RAM hinzufügen können, ist es am besten, zu prüfen, welche Prozesse so viel RAM verbrauchen, und zu prüfen, ob Sie sie entfernen oder Maßnahmen zur Reduzierung der RAM-Nutzung ergreifen können. Der Befehl "top" ist hierfür nützlich. Verwenden Sie einfach den Befehl "M", um nach Speichernutzung zu sortieren.

Johnny
quelle
1
Sie verwechseln Paging mit Swapping. Paging ist ganz normal (dh das Entfernen von Speicherseiten, die inaktiv sind oder nicht verwendet werden, in den Auslagerungsbereich), während beim Auslagern ein ganzer Prozess aus dem Speicher auf die Auslagerungsdiskette verschoben wird. Das Austauschen erfolgt nur, wenn der Paging-Prozess nicht die erforderliche Speichermenge bereitstellt.
Mdpc
Moderne VM-basierte Betriebssysteme tun nicht das, was in der Vergangenheit als "Auslagern" bezeichnet wurde - das Auslagern ganzer Prozessadressräume in den Sekundärspeicher. Sie alle blättern in eine sogenannte Auslagerungsdatei. Daher verwenden viele Menschen die Begriffe austauschbar. Der korrektere Begriff wäre wahrscheinlich "Seitentausch" (im Gegensatz zu nur "Paging", was mit MMU-Seitenzuordnung verwechselt werden könnte).
Johnny