bw_tcp - time data movement through TCP/IP sockets
bw_tcp [
-m <message size> ] [
-M <total bytes>
] [
-P <parallelism> ] [
-W <warmups> ] [
-N
<repetitions> ]
server
bw_tcp -s
bw_tcp -S <server>
bw_tcp is a client/server program that moves data over a TCP/IP socket.
Nothing is done with the data on either side;
total bytes of data is
moved in
message size chunks.
bw_tcp has three forms of usage: as a server (-s), as a client (bw_tcp
localhost), and as a shutdown (bw_tcp -S localhost).
The default amount of data is 10MB. The client form may specify a different
amount of data. Specifications may end with ``k'' or ``m'' to mean kilobytes
(* 1024) or megabytes (* 1024 * 1024).
Output format is Socket bandwidth using localhost: 2.32 MB/sec
This benchmark can move up to six times the requested memory per process when
run through the loopback device. 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 and Silicon Graphics, Inc.
lmbench(8).
Carl Staelin and Larry McVoy
Comments, suggestions, and bug reports are always welcome.