This program, gprog (download here), is a basic pipemeter along the lines of reblock, cpipe, pv, pipemeter and speedometer - however:
  1. This one's a GUI.
  2. This one's very fast, despite being a GUI because:
    1. The GUI carefully avoids updating itself for every block
    2. The backend uses a cache oblivious algorithm to self-tune
    3. It takes advantage of multicore systems: it uses one process for the GUI, and another for the data transfer. This is done using Python's excellent multiprocessing module, rather than threads.
  3. It shows more statistics than is usual for these tools.
  4. It allows display in SI or IEC units or a mix of the two, and you can change the units mid-transfer.

Here's a pair of pictures of it in action, both run on an Ubuntu 9.10 system with the following specs:

  1. Reading from /dev/zero and writing to /dev/null.
    Here the CPU is the limiting factor.
    Because you can't get a length estimate out of /dev/zero, the progress bar is pulsing back and forth, not progressing. Also for this reason the ETA's are "Unknown".
  2. Reading from a tar process that's reading from disk, and writing to /dev/null.
    Here the disk or perhaps the interprocess communication is the limiting factor.
    This is really invoked via gprog-du-tar, so we have a length estimate, hence the progress bar is growing from the left. Also, we have ETA data.

License:

Bugs:

  1. Sometimes the GUI won't come up until the transfer is complete. I believe this to be an issue on machines with almost no free physical memory - EG, it happened on a system with a huge ramfs (ramdisk).
  2. gprog is not suitable for (direct) use with traditional tape drives, because most tape drives want tape blocks to be of a consistent size. gprog gets a lot of its performance by sacrificing blocksize consistency - this is fine for disk and network, but typically not for tape. If you need (GUI) progress with a tape drive, consider putting something like dd at the end of your pipeline.



1665

Back to Dan's tech tidbits

You can e-mail the author with questions or comments: