Взгляд на /proc/meminfo
покажет Dirty
число, уменьшающееся со временем как все данные, буферизует; часть его может проникнуть в Writeback
также. Это будет сводкой против всех устройств, но в случаях, где одно устройство в системе намного медленнее, чем остальные, Вы будете обычно заканчивать, где все в той очереди связано с ним. Вы, вероятно, найдете Dirty
число, большое, когда Вы запускаете и sync
концы в то же время это приближается 0. Попробуйте это для получения интерактивного дисплея:
watch -d grep -e Dirty: -e Writeback: /proc/meminfo
С обычными дисками I может обычно игнорировать Writeback
, но я не уверен, включается ли это чаще в пути передачи USB. Если это просто возвращается вверх и вниз без ясной тенденции к нему, можно, вероятно, просто посмотреть на Dirty
число.
Можно посмотреть на /sys/block/<device>/stat
файл для соответствующего устройства, в то время как Вы синхронизируете. 9-й столбец укажет на количество запросов в полете на устройстве, которое должно понизиться для обнуления, когда синхронизация сделана.
Не знайте о способе перевести это во многие байты, но он должен дать Вам общее представление о том, сколько "материала" все еще находится на рассмотрении.
Посмотрите файл stat.txt в документации ядра некоторое время больше информации. (Существует также inflight
файл в том каталоге в моей системе, которая похожа на него, мог содержать чтение и записать запросы в полете, но я не могу найти документы для этого.)
watch -t -n1 'awk "{ print \$9 }" /sys/block/sdd/stat'
– mattdm
08.10.2012, 04:59
sync
впоследствии. Это действительно переходит в 0, но только в самом конце. Это делает другой ответ более полезным для того, чтобы нетерпеливо наблюдать прогресс.
– mattdm
08.10.2012, 05:01
du
вычислить реальные данные, которые синхронизируются на диске.
– unfa
26.04.2017, 13:06
Используя ответ Грега, вы можете просто запустить синхронизацию
в фоновом режиме, отображая состояние грязного блока в памяти.
Для этого просто запустите эту команду:
sync & watch -n 1 grep -e Dirty: /proc/meminfo
Это вызовет sync
в фоновом режиме, в то время как выполнение watch
впереди. Когда команда sync
завершится (примерно, когда размер грязного блока достигнет 0), вы получите вывод, который выглядит следующим образом:
1] + 27260 done sync
Это означает, что команда завершена, и вы можете убейте команду watch
с помощью Ctrl+C.
Вы можете просмотреть текущий трафик ввода-вывода блочного устройства с помощью nmon , как в:
NMON=ld nmon -s1
(предварительно выбирает отображение графика нагрузки и графика диска с периодом обновления 1 секунда. Это также можно установить, запустив nmon
без параметров, а затем нажав l
, d
, -
для переключения графиков и уменьшения время обновления по умолчанию 2 с.. +
, конечно, увеличит задержку обновления.)