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.
quelle
Antworten:
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
Um eine einmalige Änderung (bis zum Neustart) vorzunehmen, geben Sie den Befehl aus
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 ausgeben
echo 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=cfq
in meine Grub-Datei einfüge, der folgendermaßen aussieht:quelle