Das System stürzt ab, wenn die Festplatten-E / A gesättigt sind

8

Wenn ich eine große Dateiübertragung von meiner externen USB3-Festplatte auf meine interne Festplatte (oder umgekehrt) durchführe, sei es über Nautilus oder über ein Terminal, wird Ubuntu (Unity) fast vollständig blockiert. Dinge wie Alt-Tab dauern mindestens 20 Sekunden, während die Dateiübertragung ausgeführt wird. Dies ist nicht der Fall, wenn viele zufällige Lese- / Schreibvorgänge auf der Festplatte ausgeführt werden, z. B. bei der Installation von Paketen.

Wenn ich Windows ausführte, konnte ich eine Dateiübertragung im Hintergrund ausführen und trotzdem Dinge tun, wenn auch langsamer, wenn etwas für den Zugriff auf die Festplatte erforderlich war. Ich konnte immer noch gut alt-tab.

Es scheint, dass Ubuntu die Dateiübertragung vor allen anderen Festplatten-E / A priorisiert, weshalb sie abstürzt. In Windows scheinen Dateiübertragungen eine niedrigere Priorität zu haben, was bedeutet, dass das System reagieren kann, während die Festplatte gesättigt ist.

Wie kann ich das beheben? Es ist ziemlich ärgerlich, da der Computer beim Kopieren von Dateien völlig unbrauchbar wird. Dieses Problem tritt sowohl am 14.04 als auch am 15.10 auf. Ich bin gezwungen, meine Festplatte an einen USB2-Anschluss anzuschließen, um dieses Problem zu vermeiden. Dies führt zu viel längeren Übertragungszeiten.

Degru
quelle
Sollte nicht, aber überprüfen Sie, ob unix.stackexchange.com/questions/107703/… hilft
Rmano

Antworten:

10

Ich hatte das gleiche Problem mit meinem Laptop, der im Vergleich zum Rest des Computers ein ziemlich langsames Festplattensystem hat.

Ich konnte dies viel besser machen, indem ich den Planungsalgorithmus für Datenträgerübertragungen änderte. Standardmäßig verwendet Ubuntu Deadline, aber ich finde, dass mein System schneller reagiert, wenn ich cfq verwende.

Geben Sie den Befehl ein, um zu sehen, welchen Scheduler Sie verwenden

cat /sys/class/block/sda/queue/scheduler    

Um eine einmalige Änderung (bis zum Neustart) vorzunehmen, geben Sie den Befehl aus

echo cfq | sudo tee /sys/class/block/sda/queue/scheduler

Beachten Sie, dass es wichtig ist, dass die Änderung an dem vorgenommen wird, was Sie für Ihre externe Festplatte haben. Meins wird normalerweise als SDB geladen. also würde ich den Befehl ausgebenecho cfq | sudo tee /sys/class/block/sdb/queue/scheduler

Ich mache meine Änderung für alle an meinen Computer angeschlossenen Laufwerke dauerhaft, indem ich den Kernel-Parameter elevator=cfqin meine Grub-Datei einfüge, der folgendermaßen aussieht:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noautogroup elevator=cfq"
Charles Green
quelle
Wow, das hat funktioniert. Vielen Dank! Mein System reagiert jetzt beim Übertragen viel schneller und lädt die Dinge insgesamt schneller.
Degru
Ich bin froh zu hören, dass es geholfen hat.
Charles Green
1
> Standardmäßig verwendet Ubuntu Deadline, aber ich finde, dass mein System schneller reagiert, wenn ich Deadline verwende. Ich vermute, Sie wollten, dass dieser Satz mit "... wenn ich cfq verwende" endet.
markus_b
Ich habe aus dem einen oder anderen Grund nie nach einer Lösung dafür gesucht. Ich habe diese Antwort positiv bewertet, als sie vor einigen Tagen veröffentlicht wurde. Jetzt hatte ich die Möglichkeit, sie zu testen (ich musste viele Torrents von Deluge zurück zu Transmission migrieren , was eine erneute Überprüfung jedes einzelnen Torrents erforderte), und der Scheduler wurde tatsächlich geändert eine Verbesserung. Das System stottert immer noch, insbesondere beim Wechseln des Arbeitsbereichs, aber es hängt sicher nicht mehr so ​​vollständig wie früher. Vielen Dank! Diese Antwort ist so nützlich, dass IMO eine Prämie verdient (und ich setze eine).
Kos
@kos Es ist keine vollständige Lösung, oder ich wäre sicherlich selbst viel glücklicher - ich stottere immer noch gelegentlich auch und finde das sehr frustrierend.
Charles Green