Der Grund dafür ist, dass das Programm "Write this data" (Diese Daten schreiben) sagt und der Linux-Kernel sie in einen Speicherpuffer kopiert, der sich in der Warteschlange befindet, um auf die Festplatte zu gelangen, und dann "ok, done" sagt. Das Programm glaubt also, alles kopiert zu haben. Dann schließt das Programm die Datei, aber plötzlich lässt der Kernel sie warten, während dieser Puffer auf die Festplatte verschoben wird.
Leider kann das Programm Ihnen nicht sagen, wie lange es dauern wird, den Puffer zu leeren, da es nicht weiß.
Wenn Sie einige Power-User-Tricks ausprobieren möchten, können Sie die Größe des Puffers, den Linux verwendet, verringern, indem Sie den Kernel-Parameter vm.dirty_bytes
auf etwa 15000000
(15 MB) setzen. Dies bedeutet, dass die Anwendung nicht mehr als 15 MB vor ihrem eigentlichen Fortschritt haben kann. (Sie können die Kernel-Parameter im laufenden Betrieb ändern. sudo sysctl vm.dirty_bytes=15000000
Damit sie jedoch über einen Neustart hinweg erhalten bleiben, müssen Sie eine Konfigurationsdatei ändern, /etc/sysctl.conf
die möglicherweise für Ihre Distribution spezifisch ist.)
Ein Nebeneffekt ist, dass Ihr Computer mit dieser Einstellung möglicherweise einen geringeren Datendurchsatz beim Schreiben hat. Im Großen und Ganzen finde ich es jedoch hilfreich, zu sehen, dass ein Programm lange ausgeführt wird, während es viele Daten schreibt, im Vergleich zu der Verwirrung, dass es eine hat Das Programm scheint mit seiner Arbeit fertig zu sein, aber das System bleibt schlecht zurück, da der Kernel die eigentliche Arbeit erledigt. Wenn Sie dirty_bytes
einen relativ kleinen Wert festlegen , kann dies auch dazu beitragen, dass Ihr System nicht mehr reagiert, wenn der verfügbare Speicher knapp wird und Sie ein Programm ausführen, das plötzlich viele Daten schreibt.
Aber nicht zu klein einstellen! Ich verwende 15 MB als grobe Schätzung, dass der Kernel den Puffer in 1/4 Sekunde oder weniger auf eine normale Festplatte leeren kann. Es verhindert, dass sich mein System "nachlässig" anfühlt.