Ich habe eine große Datei mit Async auf ein USB-Laufwerk kopiert, das auf einem Linux-System installiert ist. Das kehrt relativ schnell zu einer Eingabeaufforderung zurück, aber wenn ich tippe sync
, muss natürlich alles auf die Festplatte, und das dauert lange.
Ich verstehe, dass es langsam wird, aber gibt es irgendwo einen Punkt, an dem ich zusehen kann, wie ein Zähler auf Null zurückgeht? Beobachten buffers
in top
nicht hilft.
linux
filesystems
io
async
mattdm
quelle
quelle
Antworten:
Wenn Sie auf
/proc/meminfo
schauen, wird sich dieDirty
Anzahl mit der Zeit verringern, wenn alle Daten aus dem Speicher entfernt werden. Einiges davon kann auch in das System gelangenWriteback
. Das ist eine Zusammenfassung für alle Geräte, aber in den Fällen, in denen ein Gerät im System viel langsamer als der Rest ist, werden Sie normalerweise dort enden, wo alles in dieser Warteschlange damit zusammenhängt. Sie werden wahrscheinlich feststellen, dass dieDirty
Zahl beim Starten undsync
Beenden ungefähr zur gleichen Zeit wie bei 0 groß ist . Versuchen Sie Folgendes, um eine interaktive Anzeige zu erhalten:Bei normalen Datenträgern kann ich normalerweise ignorieren
Writeback
, bin mir jedoch nicht sicher, ob der USB-Übertragungspfad häufiger betroffen ist. Wenn es nur auf und ab springt, ohne dass ein eindeutiger Trend erkennbar ist, können Sie sich wahrscheinlich nur dieDirty
Zahl ansehen .quelle
Sie können
/sys/block/<device>/stat
während der Synchronisierung in der Datei nach dem entsprechenden Gerät suchen . In der neunten Spalte wird die Anzahl der In-Flight-Anfragen auf dem Gerät angegeben, die nach Abschluss der Synchronisierung auf Null sinken sollten.Sie wissen nicht, wie Sie das in eine Anzahl von Bytes übersetzen können, aber es sollte Ihnen eine ungefähre Vorstellung davon geben, wie viel "Zeug" noch aussteht.
Weitere Informationen finden Sie in der Datei stat.txt in der Kernel-Dokumentation. (
inflight
In diesem Verzeichnis befindet sich auch eine Datei auf meinem System, die anscheinend während des Flugs gelesene und geschriebene Anforderungen enthält. Ich kann jedoch keine Dokumente dafür finden.)quelle
watch -t -n1 'awk "{ print \$9 }" /sys/block/sdd/stat'
sync
danach in der Regel um 150 . Es geht auf 0, aber nur ganz am Ende. Das macht die andere Antwort nützlicher, um den Fortschritt ungeduldig zu beobachten.du
um die tatsächlichen Daten zu berechnen, die auf dem Laufwerk synchronisiert werden.Wenn Sie Gregs Antwort verwenden, können Sie einfach
sync
im Hintergrund ausgeführt werden, während der Status des Dirty-Blocks im Speicher angezeigt wird.Führen Sie dazu einfach den folgenden Befehl aus:
Dies ruft
sync
im Hintergrund auf, während es im Vordergrund ausgeführt wirdwatch
. Wenn dersync
Befehl beendet ist (ungefähr wenn die Größe des Dirty-Blocks 0 erreicht hat), erhalten Sie eine Ausgabe, die wie folgt aussieht:Dies bedeutet, dass der Befehl beendet wurde und Sie den
watch
Befehl mit Ctrl+ beenden können C.quelle