понедельник, 11 января 2010 г.

Pipe Viewer - оценка скорости прохождения данных через pipe

При обработке очень больших файлов такими утилитами как tar, gzip, grep и др. порой возникает необходимость видеть ETA или по крайней мере скорость работы программы. Проблема в том, что большинство стандартных UNIX-утилит не отображает скорость обработки конкретного файла. В лучшем случае имеется ключ вида --verbose, при указании которого программа сообщает имя файла, который обрабатывается в настоящий момент. Ясно, что если файл очень большой и только один, то пользы от подобного ключа будет немного.

Однако, если программа умеет работать в режиме фильтра или по крайней мере читать данные со STDIN, то для оценки скорости её работы можно воспользоваться утилитой pv - Pipe Viewer. Она показывает скорость прохождения данных через pipe, а также ETA, если это возможно. Например:

pv very-big-file | gzip -c > very-big-file.gz
219MB 0:00:13 [16,3MB/s] [========> ] 34% ETA 0:00:24]

В данном примере pv действует аналогично утилите cat, считывая данные и передавая их дальше по конвейеру программе gzip. При этом, pv "знает" с какой скоростью gzip считывает входные данные со STDIN, размер файла также известен. Таким образом, можно достаточно точно получить ETA.

Ссылки

Комментариев нет:

Отправить комментарий