bw_pipe - time data movement through pipes
[ -m <message size>
] [ -M <total
] [ -P <parallelism>
] [ -W <warmups>
] [ -N <repetitions>
creates a Unix pipe between two processes and moves total
through the pipe in message size
chunks (note that pipes are
typically sized smaller than that). The default total bytes
is 10MB and
the default message size
Output format is "Pipe bandwidth: %0.2f MB/sec\n",
Pipe bandwidth: 4.87 MB/sec
This benchmark can move up to six times the requested memory per process. There
are two processes, the sender and the receiver. Most Unix systems implement
the read/write system calls as a bcopy from/to kernel space to/from user
space. Bcopy will use 2-3 times as much memory bandwidth: there is one read
from the source and a write to the destionation. The write usually results in
a cache line read and then a write back of the cache line at some later point.
Memory utilization might be reduced by 1/3 if the processor architecture
implemented "load cache line" and "store cache line"
instructions (as well as getcachelinesize).
Funding for the development of this tool was provided by Sun Microsystems
Carl Staelin and Larry McVoy
Comments, suggestions, and bug reports are always welcome.