Nach 30 Minuten Betriebszeit mit Ubuntu 14.04 mit einer Hybrid-SSD sehe ich viele Prozesse, die die Verwendung von E / A blockieren iotop
. Dies ist während des Schreibens von Datenträgern der Fall. Wenn ich beispielsweise eine leere Datei in gedit öffne und schließe, kann das Schließen aufgrund der Einstellungen für das Schreiben von dconf 2 Sekunden dauern. Dies wirkt sich auf ähnliche Weise auf andere Apps aus. das ganze System ziemlich stark verlangsamen.
Mit strace konnte ich dies auf einen fsync-Aufruf zurückführen und von dort aus mit dem Befehl sync reproduzieren.
sync
Um es noch einmal zusammenzufassen: Das wiederholte Ausführen vom Terminal aus kann in der Größenordnung von 1 bis 2 Sekunden erfolgen, jedoch NUR nach 30 Minuten Betriebszeit.
Um dies zu beweisen, habe ich ein Skript erstellt, das die Betriebszeit in Sekunden gegen die für die Ausführung der Synchronisierung benötigte Zeit ausgibt, und es jede Sekunde ausgeführt:
while true;
do
cat /proc/uptime | awk '{printf "%f ",$1}'; /usr/bin/time -f '%e' sync;
sleep 1;
done;
Ich habe das obige Skript ausgeführt, ungefähr eine Stunde gewartet (das System wurde inaktiv gelassen) und dann die Ergebnisse in Gnuplot aufgezeichnet (y = Zeit in Sekunden, um die Synchronisierung auszuführen, x = Betriebszeit in Sekunden):
Der Zeitpunkt, zu dem der Graph Spitzen aufweist, liegt bei 1780 (1780/60 = ungefähr 30 Minuten).
Außer dem Skript sollte zu diesem Zeitpunkt nichts auf die Festplatte geschrieben werden. Daher sollte sich nach der ersten Synchronisierung so gut wie nichts im Seitencache befinden. Bei jeder nachfolgenden Synchronisierung wird genau das geschrieben, was in das Skript geschrieben wird. Dies entspricht ungefähr 100 Byte oder damit.
Dieses Problem besteht nach einem Neustart weiterhin. Beispiel: Wenn ich 30 Minuten auf die Verlangsamung warte und dann neu starte, ist die Verlangsamung immer noch vorhanden. Wenn ich herunterfahre und dann neu starte, verschwindet das Problem bis 30 Minuten später.
Eine weitere Kuriosität ist, dass ich, als ich das obige Diagramm untersuchte und einen Bereich vergrößerte, in dem die Verlangsamung auftritt, Folgendes bekam:
Die Spitzen und Täler wiederholen sich - dies tritt fast genau alle 10 Sekunden von Talsohle zu Talsohle auf, und auch die Spitzen knicken, wenn sie abfallen.
Ich habe auch hdparm-Tests ( hdparm -t /dev/sda
und hdparm -T /dev/sda
) vor der Verlangsamung durchgeführt:
/dev/sda:
Timing cached reads: 23778 MB in 2.00 seconds = 11900.64 MB/sec
/dev/sda:
Timing buffered disk reads: 318 MB in 3.01 seconds = 105.63 MB/sec
und während der Verlangsamung:
/dev/sda:
Timing cached reads: 2 MB in 2.24 seconds = 915.50 kB/sec
/dev/sda:
Timing buffered disk reads: 300 MB in 3.01 seconds = 99.54 MB/sec
Könnte dies bedeuten, dass dies tatsächlich mit dem Systembus und nicht mit der Festplatte zu tun hat, wenn gezeigt wird, dass tatsächliche Festplattenlesevorgänge nicht ausgeführt werden, zwischengespeicherte Lesevorgänge jedoch?
Hier sind die Lösungen, die ich ausprobiert habe:
Ändern Sie die Spindown-Einstellungen der Festplatte. Möglicherweise wurde die Festplatte in den Energiesparmodus versetzt:
hdparm /dev/sda -S252 #(set it to 5 hours before spindown)
Ändern Sie den Journalling-Typ des Dateisystems in "Zurückschreiben" anstatt "Bestellt", damit wir Leistungsverbesserungen erhalten. Dies löst das Problem jedoch nicht, da es die 30-minütige verlangsamungsfreie Verfügbarkeit nicht erklärt.
Deaktiviert CRON, da es nach ungefähr 30 Minuten auftritt.
Die CPU-Auslastung ist in Ordnung und vollständig im Leerlauf, sodass keine Prozesse verantwortlich gemacht werden können. Ich habe jedoch versucht, jeden Dienst einschließlich des Sitzungsmanagers (lightdm) herunterzufahren. Dies führt zu nichts, da ich glaube, dass das Problem niedriger ist.
Die Analyse neuer Prozesse, die nach 30 Minuten eingehen, zeigt keine Änderungen an. Ich habe die Ausgabe von PS vorher und nachher geändert, und es gibt keinen Unterschied.
Dies begann erst vor ungefähr 2 Wochen, es wurde nichts installiert und es wurden zu dieser Zeit keine Updates durchgeführt. Ich denke, dieses Problem ist viel niedriger, daher würde ich mich über eine Hilfe hier sehr freuen, da ich keine Ahnung habe. Es wäre hilfreich, mich in die richtige Richtung zu weisen. Gibt es beispielsweise eine Möglichkeit zu untersuchen, was aus dem Seiten-Cache gelöscht wird?
Das Schreib-Caching ist auf der betreffenden Festplatte aktiviert. Ich habe auch versucht, Schreibbarrieren zu deaktivieren. SMART-Daten auf der Festplatte weisen auf keine Probleme mit der Festplatte selbst hin. Ich habe jedoch den Verdacht, dass die Festplatte etwas Geheimnisvolles tut, da sie nach dem Neustart weiterhin besteht.
BEARBEITEN:
Ich habe getan:
watch -n 1 cat /proc/meminfo
... um zu sehen, wie sich der Speicher ändert, insbesondere wenn man die schmutzige Zeile und die Rückschreibzeile betrachtet, von denen ich glaube, dass sie der Festplattenpuffer der Festplatte sind. Sie alle bleiben größtenteils bei Null und sind wahrscheinlich 300 kb. Durch das Aufrufen der Synchronisierung werden diese wie erwartet auf 0 zurückgesetzt, aber während der Verlangsamung sperrt das Aufrufen der Synchronisierung, wenn keine fehlerhaften Seiten und keine KB im Festplattenpuffer vorhanden sind, weiterhin E / A. Was könnte die Synchronisierung noch tun, wenn der Seiten-Cache nicht geleert und der Cache geschrieben werden kann?
quelle
sudo smartctl --smart=off /dev/sda
das Problem behoben. Interessanterweise habe ich SMART-Daten wieder eingeschaltet und das Problem besteht nicht weiter. Daher kann ich nur davon ausgehen, dass sich die SMART-Daten in einem inkonsistenten Zustand befanden, und sie durch Aus- und Einschalten zurücksetzen. Wenn Sie es als Antwort hinzufügen, akzeptiere ich Ihre Antwort. Vielen Dank für die Hilfe sehr geschätzt.Antworten:
Die Symptome stimmen sehr gut mit einem größtenteils gesättigten E / A-System überein. Da jedoch die E / A-Belastung von der Seite des Betriebssystems / des Benutzerbereichs größtenteils ausgeschlossen ist, besteht eine weitere Möglichkeit darin, dass das Laufwerk Selbsttests für sich selbst ausführt, einschließlich des Lesens aus allen Sektoren. Dies sollte von smartctl abfragbar / abstimmbar sein (mindestens eine Stelle ist smartctl -c zum Abfragen).
Warum es jetzt kommt und geht und plötzlich beginnt:
quelle