bw_file_rd - time the reading and summing of a file
bw_file_rd [ -P <parallelism> ] [ -W <warmups> ] [ -N <repetitions> ]
bw_file_rd times the read of the specified file in 64KB blocks. Each
block is summed up as a seried of 4 byte integers in an unrolled loop.
Results are reported in megabytes read per second.
The data is not accessed in the user program; the benchmark relies on
the operating systems read interface to have actually moved the data.
Systems that implement page flipping may fool this benchmark.
The benchmark is intended to be used on a file that is in memory, i.e.,
the benchmark is a reread benchmark. Other file benchmarking can be
done with lmdd(8).
The size specification may end with ‘‘k’’ or ‘‘m’’ to mean kilobytes (*
1024) or megabytes (* 1024 * 1024).
Output format is "%0.2f %.2f\n", megabytes, megabytes_per_second, i.e.,
This benchmark can move up to three times the requested memory. Most
Unix systems implement the read system call as a bcopy from kernel
space to 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
Funding for the development of this tool was provided by Sun
Microsystems Computer Corporation.
Carl Staelin and Larry McVoy
Comments, suggestions, and bug reports are always welcome.
(c)1994 Larry McVoy $Date$