Skip to content

heewa/pipestats

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pipestats

Ever wondered about the progress of something involving a pipe, where neither side reported on it? Like loading a mongo dump from a file? Put this in between and it'll tell you how much has moved and how fast it's moving! Or watch a log:

$ tail -F /var/log/mongo/mongodb.log | pipestats > /dev/null

You can use it to test the speed of devices and apps. Get a baseline with /dev/zero & /dev/null, two really fast devices:

$ pipestats < /dev/zero > /dev/null
1.09 G/s, 2.19 G total, 2.19 G since last report, 7.15 secs until 10.00 G
1.07 G/s, 4.33 G total, 2.14 G since last report, 5.30 secs until 10.00 G
1.04 G/s, 6.41 G total, 2.08 G since last report, 3.45 secs until 10.00 G
^C
Got signal Interrupt: 2, aborting early.
6.74 G (7236808392 bytes) total over 6.30 sec, avg 1.07 G/s

Then compare that to /dev/random, for example:

$ pipestats < /dev/urandom > /dev/null
10.46 M/s, 21.00 M total, 21.00 M since last report, 2.77 secs until 50.00 M
10.25 M/s, 41.56 M total, 20.56 M since last report, 0.82 secs until 50.00 M
10.46 M/s, 62.50 M total, 20.94 M since last report, 41.84 secs until 500.00 M
^C
Got signal Interrupt: 2, aborting early.
67.13 M (70386492 bytes) total over 6.50 sec, avg 10.33 M/s

Or to writing to your disk:

$ pipestats < /dev/zero > zero.0
268.39 M/s, 536.78 M total, 536.78 M since last report, 1.82 secs until 1.00 G
259.47 M/s, 1.03 G total, 518.94 M since last report, 35.40 secs until 10.00 G
209.37 M/s, 1.44 G total, 419.29 M since last report, 41.86 secs until 10.00 G
^C
Got signal Interrupt: 2, aborting early.
1.52 G (1628763312 bytes) total over 6.39 sec, avg 0.24 G/s

Measure an app, like compression:

# Compressing random data with its best attempt:
$ pipestats < /dev/urandom | bzip2 --best > /dev/null
2.96 M/s, 6.08 M total, 6.08 M since last report, 1.32 secs until 10.00 M
2.93 M/s, 12.10 M total, 6.02 M since last report, 12.94 secs until 50.00 M
3.35 M/s, 18.81 M total, 6.71 M since last report, 9.31 secs until 50.00 M
^C
Got signal Interrupt: 2, aborting early.
Failed to flush stdout, err 32: Broken pipe
19.82 M (20779176 bytes) total over 6.57 sec, avg 3.02 M/s

# Compressing random data with a fast attempt:
$ pipestats < /dev/urandom | bzip2 --fast > /dev/null
3.50 M/s, 7.04 M total, 7.04 M since last report, 0.85 secs until 10.00 M
3.67 M/s, 14.38 M total, 7.34 M since last report, 9.71 secs until 50.00 M
3.41 M/s, 21.24 M total, 6.86 M since last report, 8.43 secs until 50.00 M
^C
Got signal Interrupt: 2, aborting early.
Got err 32 during a write: Broken pipe
Exiting with 4092 bytes still in buffer.
22.50 M (23594472 bytes) total over 6.39 sec, avg 3.52 M/s

# Compressing the same 0 byte stream:
$ pipestats < /dev/zero | bzip2 --fast > /dev/null
72.26 M/s, 145.97 M total, 145.97 M since last report, 4.90 secs until 500.00 M
71.48 M/s, 288.94 M total, 142.97 M since last report, 2.95 secs until 500.00 M
71.53 M/s, 432.88 M total, 143.94 M since last report, 0.94 secs until 500.00 M
^C
Got signal Interrupt: 2, aborting early.
455.82 M (477961968 bytes) total over 6.37 sec, avg 71.53 M/s

You can also get a count of each byte value:

$ pipestats --counts < pipestats.c > /dev/null
Count of byte values:
     0x00:   0.00B  0.00%     0x01:   0.00B  0.00%     0x02:   0.00B  0.00%     0x03:   0.00B  0.00%
     0x04:   0.00B  0.00%     0x05:   0.00B  0.00%     0x06:   0.00B  0.00%     0x07:   0.00B  0.00%
     0x08:   0.00B  0.00%     0x09:   0.00B  0.00%     0x0A: 457.00B  3.44%     0x0B:   0.00B  0.00%
     0x0C:   0.00B  0.00%     0x0D:   0.00B  0.00%     0x0E:   0.00B  0.00%     0x0F:   0.00B  0.00%
     0x10:   0.00B  0.00%     0x11:   0.00B  0.00%     0x12:   0.00B  0.00%     0x13:   0.00B  0.00%
     0x14:   0.00B  0.00%     0x15:   0.00B  0.00%     0x16:   0.00B  0.00%     0x17:   0.00B  0.00%
     0x18:   0.00B  0.00%     0x19:   0.00B  0.00%     0x1A:   0.00B  0.00%     0x1B:   0.00B  0.00%
     0x1C:   0.00B  0.00%     0x1D:   0.00B  0.00%     0x1E:   0.00B  0.00%     0x1F:   0.00B  0.00%
     0x20:   4.47K 34.43%   ! 0x21:  13.00B  0.10%   " 0x22:  82.00B  0.62%   # 0x23:  16.00B  0.12%
   $ 0x24:   0.00B  0.00%   % 0x25:  39.00B  0.29%   & 0x26:  36.00B  0.27%   ' 0x27:  43.00B  0.32%
   ( 0x28: 137.00B  1.03%   ) 0x29: 137.00B  1.03%   * 0x2A:  25.00B  0.19%   + 0x2B:  11.00B  0.08%
   , 0x2C: 161.00B  1.21%   - 0x2D:  60.00B  0.45%   . 0x2E:  94.00B  0.71%   / 0x2F:  61.00B  0.46%
   0 0x30:  67.00B  0.50%   1 0x31:  23.00B  0.17%   2 0x32:  17.00B  0.13%   3 0x33:   7.00B  0.05%
   4 0x34:   2.00B  0.02%   5 0x35:   5.00B  0.04%   6 0x36:   3.00B  0.02%   7 0x37:   0.00B  0.00%
   8 0x38:   0.00B  0.00%   9 0x39:   1.00B  0.01%   : 0x3A:  45.00B  0.34%   ; 0x3B: 168.00B  1.26%
   < 0x3C:  17.00B  0.13%   = 0x3D:  98.00B  0.74%   > 0x3E:  49.00B  0.37%   ? 0x3F:   4.00B  0.03%
   @ 0x40:   0.00B  0.00%   A 0x41:  13.00B  0.10%   B 0x42:  18.00B  0.14%   C 0x43:   5.00B  0.04%
   D 0x44:  17.00B  0.13%   E 0x45:  42.00B  0.32%   F 0x46:  19.00B  0.14%   G 0x47:  18.00B  0.14%
   H 0x48:   8.00B  0.06%   I 0x49:  29.00B  0.22%   J 0x4A:   1.00B  0.01%   K 0x4B:  10.00B  0.08%
   L 0x4C:  39.00B  0.29%   M 0x4D:   7.00B  0.05%   N 0x4E:  32.00B  0.24%   O 0x4F:  21.00B  0.16%
   P 0x50:   4.00B  0.03%   Q 0x51:   1.00B  0.01%   R 0x52:  16.00B  0.12%   S 0x53:  42.00B  0.32%
   T 0x54:  30.00B  0.23%   U 0x55:  28.00B  0.21%   V 0x56:   0.00B  0.00%   W 0x57:   2.00B  0.02%
   X 0x58:   4.00B  0.03%   Y 0x59:   6.00B  0.05%   Z 0x5A:   7.00B  0.05%   [ 0x5B:  12.00B  0.09%
   \ 0x5C:  27.00B  0.20%   ] 0x5D:  12.00B  0.09%   ^ 0x5E:   0.00B  0.00%   _ 0x5F: 192.00B  1.44%
   ` 0x60:   0.00B  0.00%   a 0x61: 423.00B  3.18%   b 0x62: 134.00B  1.01%   c 0x63: 196.00B  1.47%
   d 0x64: 218.00B  1.64%   e 0x65: 630.00B  4.74%   f 0x66: 183.00B  1.38%   g 0x67:  98.00B  0.74%
   h 0x68:  80.00B  0.60%   i 0x69: 458.00B  3.45%   j 0x6A:   9.00B  0.07%   k 0x6B:  37.00B  0.28%
   l 0x6C: 206.00B  1.55%   m 0x6D: 109.00B  0.82%   n 0x6E: 513.00B  3.86%   o 0x6F: 408.00B  3.07%
   p 0x70: 156.00B  1.17%   q 0x71:  17.00B  0.13%   r 0x72: 443.00B  3.33%   s 0x73: 512.00B  3.85%
   t 0x74: 810.00B  6.09%   u 0x75: 249.00B  1.87%   v 0x76:  51.00B  0.38%   w 0x77:  39.00B  0.29%
   x 0x78:   5.00B  0.04%   y 0x79:  78.00B  0.59%   z 0x7A:   7.00B  0.05%   { 0x7B:  49.00B  0.37%
   | 0x7C:   9.00B  0.07%   } 0x7D:  49.00B  0.37%   ~ 0x7E:   0.00B  0.00%     0x7F:   0.00B  0.00%
     0x80:   0.00B  0.00%     0x81:   0.00B  0.00%     0x82:   0.00B  0.00%     0x83:   0.00B  0.00%
     0x84:   0.00B  0.00%     0x85:   0.00B  0.00%     0x86:   0.00B  0.00%     0x87:   0.00B  0.00%
     0x88:   0.00B  0.00%     0x89:   0.00B  0.00%     0x8A:   0.00B  0.00%     0x8B:   0.00B  0.00%
     0x8C:   0.00B  0.00%     0x8D:   0.00B  0.00%     0x8E:   0.00B  0.00%     0x8F:   0.00B  0.00%
     0x90:   0.00B  0.00%     0x91:   0.00B  0.00%     0x92:   0.00B  0.00%     0x93:   0.00B  0.00%
     0x94:   0.00B  0.00%     0x95:   0.00B  0.00%     0x96:   0.00B  0.00%     0x97:   0.00B  0.00%
     0x98:   0.00B  0.00%     0x99:   0.00B  0.00%     0x9A:   0.00B  0.00%     0x9B:   0.00B  0.00%
     0x9C:   0.00B  0.00%     0x9D:   0.00B  0.00%     0x9E:   0.00B  0.00%     0x9F:   0.00B  0.00%
     0xA0:   0.00B  0.00%     0xA1:   0.00B  0.00%     0xA2:   0.00B  0.00%     0xA3:   0.00B  0.00%
     0xA4:   0.00B  0.00%     0xA5:   0.00B  0.00%     0xA6:   0.00B  0.00%     0xA7:   0.00B  0.00%
     0xA8:   0.00B  0.00%     0xA9:   0.00B  0.00%     0xAA:   0.00B  0.00%     0xAB:   0.00B  0.00%
     0xAC:   0.00B  0.00%     0xAD:   0.00B  0.00%     0xAE:   0.00B  0.00%     0xAF:   0.00B  0.00%
     0xB0:   0.00B  0.00%     0xB1:   0.00B  0.00%     0xB2:   0.00B  0.00%     0xB3:   0.00B  0.00%
     0xB4:   0.00B  0.00%     0xB5:   0.00B  0.00%     0xB6:   0.00B  0.00%     0xB7:   0.00B  0.00%
     0xB8:   0.00B  0.00%     0xB9:   0.00B  0.00%     0xBA:   0.00B  0.00%     0xBB:   0.00B  0.00%
     0xBC:   0.00B  0.00%     0xBD:   0.00B  0.00%     0xBE:   0.00B  0.00%     0xBF:   0.00B  0.00%
     0xC0:   0.00B  0.00%     0xC1:   0.00B  0.00%     0xC2:   0.00B  0.00%     0xC3:   0.00B  0.00%
     0xC4:   0.00B  0.00%     0xC5:   0.00B  0.00%     0xC6:   0.00B  0.00%     0xC7:   0.00B  0.00%
     0xC8:   0.00B  0.00%     0xC9:   0.00B  0.00%     0xCA:   0.00B  0.00%     0xCB:   0.00B  0.00%
     0xCC:   0.00B  0.00%     0xCD:   0.00B  0.00%     0xCE:   0.00B  0.00%     0xCF:   0.00B  0.00%
     0xD0:   0.00B  0.00%     0xD1:   0.00B  0.00%     0xD2:   0.00B  0.00%     0xD3:   0.00B  0.00%
     0xD4:   0.00B  0.00%     0xD5:   0.00B  0.00%     0xD6:   0.00B  0.00%     0xD7:   0.00B  0.00%
     0xD8:   0.00B  0.00%     0xD9:   0.00B  0.00%     0xDA:   0.00B  0.00%     0xDB:   0.00B  0.00%
     0xDC:   0.00B  0.00%     0xDD:   0.00B  0.00%     0xDE:   0.00B  0.00%     0xDF:   0.00B  0.00%
     0xE0:   0.00B  0.00%     0xE1:   0.00B  0.00%     0xE2:   0.00B  0.00%     0xE3:   0.00B  0.00%
     0xE4:   0.00B  0.00%     0xE5:   0.00B  0.00%     0xE6:   0.00B  0.00%     0xE7:   0.00B  0.00%
     0xE8:   0.00B  0.00%     0xE9:   0.00B  0.00%     0xEA:   0.00B  0.00%     0xEB:   0.00B  0.00%
     0xEC:   0.00B  0.00%     0xED:   0.00B  0.00%     0xEE:   0.00B  0.00%     0xEF:   0.00B  0.00%
     0xF0:   0.00B  0.00%     0xF1:   0.00B  0.00%     0xF2:   0.00B  0.00%     0xF3:   0.00B  0.00%
     0xF4:   0.00B  0.00%     0xF5:   0.00B  0.00%     0xF6:   0.00B  0.00%     0xF7:   0.00B  0.00%
     0xF8:   0.00B  0.00%     0xF9:   0.00B  0.00%     0xFA:   0.00B  0.00%     0xFB:   0.00B  0.00%
     0xFC:   0.00B  0.00%     0xFD:   0.00B  0.00%     0xFE:   0.00B  0.00%     0xFF:   0.00B  0.00%
12.98 K (13292 bytes) total over 0.01 sec, avg 1591.33 K/s

About

Stats about data being piped.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages