Skopiowałem duży plik na dysk USB zamontowany w systemie Linux za pomocą asynchronizacji. Powraca to do wiersza poleceń stosunkowo szybko, ale kiedy piszę sync
, oczywiście wszystko musi przejść na dysk, a to zajmuje dużo czasu.
Rozumiem, że będzie powoli, ale czy jest gdzieś, gdzie mogę zobaczyć, jak licznik spada do zera? Oglądając buffers
w top
nie pomaga.
linux
filesystems
io
async
mattdm
źródło
źródło
Odpowiedzi:
Spojrzenie na
/proc/meminfo
to pokazuje, żeDirty
liczba maleje w czasie, gdy wszystkie dane są buforowane; niektóre z nich mogą się również rozlaćWriteback
. To będzie podsumowanie dla wszystkich urządzeń, ale w przypadkach, gdy jedno urządzenie w systemie jest znacznie wolniejsze niż pozostałe, zwykle kończy się to tym, że wszystko w tej kolejce jest z nim powiązane. Prawdopodobnie znajdzieszDirty
dużą liczbę, gdy zaczniesz, a skończyszsync
mniej więcej w tym samym czasie, gdy zbliża się do 0. Spróbuj uzyskać interaktywny wyświetlacz:W przypadku zwykłych dysków zwykle mogę to zignorować
Writeback
, ale nie jestem pewien, czy jest on częściej zaangażowany w ścieżkę przesyłania USB. Jeśli odbija się w górę i w dół bez wyraźnego trendu, prawdopodobnie możesz po prostu spojrzeć naDirty
liczbę.źródło
Możesz sprawdzić
/sys/block/<device>/stat
plik odpowiedniego urządzenia podczas synchronizacji. W perspektywie 9 th kolumna wskazuje liczbę żądań w locie na urządzeniu, które powinny zejść do zera, gdy synchronizacja jest wykonywana.Nie znam sposobu na przetłumaczenie tego na kilka bajtów, ale powinno to dać ci ogólne pojęcie o tym, ile „rzeczy” wciąż czeka.
Zobacz plik stat.txt w dokumentacji jądra, aby uzyskać więcej informacji. (W
inflight
moim katalogu jest także plik, który wygląda, jakby mógł zawierać żądania odczytu i zapisu w locie, ale nie mogę znaleźć dokumentów na ten temat).źródło
watch -t -n1 'awk "{ print \$9 }" /sys/block/sdd/stat'
sync
później. To idzie do zera, ale tylko na samym końcu. To sprawia, że druga odpowiedź jest bardziej przydatna do niecierpliwego oglądania postępów.du
do obliczenia rzeczywistych danych synchronizowanych na dysku.Korzystając z odpowiedzi Grega, możesz po prostu
sync
biegać w tle, wyświetlając stan Brudnego bloku w pamięci.Aby to osiągnąć, po prostu uruchom następujące polecenie:
To zadzwoni
sync
w tle podczas wykonywaniawatch
z przodu. Kiedysync
polecenie zakończy się (mniej więcej wtedy, gdy rozmiar Brudnego bloku osiągnie 0), otrzymasz wynik, który wygląda następująco:Oznacza to, że polecenie zostało zakończone i możesz je zabić za
watch
pomocą Ctrl+ C.źródło