Wie behebe ich ein Problem mit der Festplatten-E / A-Leistung, das möglicherweise mit dm-crypt / LUKS zusammenhängt?


7

Problem

Ich habe kürzlich Ubuntu 16.04 LTS (Kernel 4.8.0-52) auf einem Lenovo T460p mit einem i7-6820HQ, 32 GB RAM und einer 512 GB Micron 1100 SSD installiert. Ich habe während der Installation das Kontrollkästchen für die vollständige Festplattenverschlüsselung aktiviert und das Standard-Partitionierungslayout verwendet. Im Allgemeinen ist die Leistung großartig.

Im Laufe der Zeit liefen meine Builds jedoch ungefähr doppelt so lange. Während Teilen des Builds, in denen große Dateien geschrieben werden, muss jede (nicht erstellte) Aufgabe, die Festplatten-E / A erfordert, viel warten. Dazu gehört das Starten neuer Programme, das Laden von Seiten in Firefox usw. In Firefox kann ich beispielsweise durch die Benutzeroberfläche navigieren, die Registerkarten wechseln und alles ist in Ordnung. Wenn ich jedoch einem Link folge, wird die gesamte Benutzeroberfläche gesperrt, bis sich die Dinge beruhigt haben.

Zusammenfassend lässt sich sagen, dass Builds nach einiger Zeit plötzlich länger dauern und der Computer an bestimmten Stellen während des Builds grundsätzlich unbrauchbar ist.

Was kann ich tun, um dieses Problem zu diagnostizieren oder zu beheben?

Informationen zur Fehlerbehebung

  • Starten Sie nicht oft neu, damit das System oft mehrere Tage in Betrieb ist, bevor ich auf dieses Problem stoße. Sobald ich es getroffen habe, versuche ich ein wenig, das Problem herauszufinden, und starte dann neu, damit ich weiterarbeiten kann.

  • Das einzige, was das Problem behebt, ist ein Neustart des Computers. Ich habe versucht, alle Anwendungen zu beenden, mich abzumelden und wieder anzumelden und den Puffercache zu löschen (die Dreschflegel-Theorie, dass bei der Verwendung von Speicherplatz-Festplatten-Synchronisierungen häufiger vorkommt), aber nur ein Neustart funktioniert.

  • Bei weitem habe ich versucht, diese Antwort zu lösen, aber es gab keine Verhaltensänderung.

  • Beim Ausführen iotopwird der dmcrypt_writeThread mit 99% E / A angezeigt, wenn Probleme auftreten. Wenn ich nicht das Problem auftritt, sehe ich auch dmcrypt_writemit einem relativ hohen IO% an die Spitze Pop , aber es bleibt nicht sehr lange dort.

  • Wenn ich renne, dd if=/dev/urandom of=$HOME/bigfile bs=10k count=200k; syncwenn die Dinge normal funktionieren, dmcrypt_writespringe ich für ein oder zwei Sekunden nach oben, aber es ist nicht annähernd die gleiche Dauer wie bei einem meiner Builds.

  • Ein vollständiger Build generiert ungefähr 1,4 GB Daten. Es ist ein Java-Projekt mit mehreren Modulen. Es werden also viele kleine Dateien sowie einige größere JAR-Dateien erstellt, die all diese kleinen Dateien zusammenfassen.

  • Es ist immer genügend Speicher verfügbar und die Swap-Partition wird nicht verwendet.

  • Ich habe Mitarbeiter mit ähnlichen Computern (T460p), auf denen auch Ubuntu ausgeführt wird und bei denen dieses Problem nicht auftritt. Sie alle scheinen jedoch unterschiedliche SSD-Marken / -Modelle zu haben .

Aktualisieren

Das Problem ist gerade wieder aufgetaucht, also habe ich basierend auf der Antwort auf diese Frage weitere Tests durchgeführt.

  • Das Dateisystem ist immer noch nicht mit der discardOption gemountet, daher habe ich stattdessen fstrimangenommen, dass dies der Aktivierung der discardOption etwas ähnlich wäre
  • Ich habe nicht genug Zeit genommen, als das Problem zum ersten Mal auftrat, aber nach dem Ausführen fstrimschienen die Build-Geschwindigkeiten wieder normal zu sein ... aber nach Abschluss des Builds wird der dmcrypt_writeThread aktiviert und macht das System für einen bestimmten Zeitraum unbrauchbar. Die gesamte Zeit zum Erstellen und zur Nutzung des Systems scheint ungefähr dieselbe zu sein wie zuvor.
  • Ich habe /proc/sys/vm/dirty_ratioauf 2 und /proc/sys/vm/dirty_background_ratio1 gewechselt und einige Builds ausgeführt. Die Builds dauerten länger als normal - ungefähr so ​​lange wie beim letzten Mal, als ich auf dieses Problem stieß, aber das System schien nicht so stark zu blockieren. Durch Zurücksetzen auf 20 und 10 wurde das oben erwähnte Verhalten wiederhergestellt.
  • Bei einem sauberen Start habe ich versucht, /proc/sys/vm/dirty_ratioauf 2 und /proc/sys/vm/dirty_background_ratio1 zu setzen, und die Zeit war vergleichbar mit 20 und 10.

Antworten:


1

Ich weiß nicht genau über LUKS Bescheid, aber für allgemeine E / A-Probleme auf einer SSD stellen Sie sicher, dass Discard für Ihr fs-Mount aktiviert ist. Grep discard / proc / mounts versucht möglicherweise auch (als root) "echo 1 >> / proc / sys / vm / dirty_background_ratio; echo 2 >> / proc / sys / vm / dirty_ratio ", dies veranlasst das System, E / A früher zu initiieren, wenn weniger Daten zurückgeschrieben werden müssen.


Danke, ich werde das nächste Mal damit herumspielen. Die Option zum Verwerfen wurde von einem Kollegen vorgeschlagen, aber andere hatten sie nicht aktiviert, sodass ich sie ignorierte. Ich habe vorher ein bisschen mit Dirty_background_ratio und Dirty_ratio herumgespielt, aber das schien den Effekt zu haben, dass alles langsamer wurde. Ich erinnere mich nicht, welche Werte ich versucht habe.
Peter Rebholz

AFAIK die Frage, ob Sie Discards
aktivieren

Während eines Datenbankimports wurde echo 1 | sudo tee /proc/sys/vm/dirty_background_ratio && echo 2 | sudo tee /proc/sys/vm/dirty_ratiodie Systemlast von unbrauchbaren 30+ auf etwa 13-14 reduziert, ohne über einen längeren Zeitraum zu blockieren.
10b0
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.