Table of Contents
bw_pipe - time data movement through pipes
bw_pipe [ -m <message
size> ] [ -M <total bytes> ] [ -P <parallelism> ] [ -W <warmups> ] [ -N <repetitions>
]
bw_pipe creates a Unix pipe between two processes and moves
total bytes 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 is 64KB.
Output format is CB"Pipe bandwidth:
%0.2f MB/sec\n", megabytes_per_second, i.e.,
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 Computer
Corporation.
lmbench(8)
.
Carl Staelin and Larry McVoy
Comments,
suggestions, and bug reports are always welcome.
Table of Contents