Linux » Man Pages
find in page
sg_rbuf [[-q] | [-d] | [-m]] [-t] [-s=<num_MB>] [-b=<num_KB>]
This command reads data with the SCSI READ BUFFER command via the sg
driver and then discards it. Typically the data being read is from a
disk’s memory cache. It is assumed that the data is sourced quickly
(although this is not guaranteed by the SCSI standards). This command
is designed for timing transfer speeds across a SCSI bus.
-q only transfer the data into kernel buffers (typically by DMA
from the SCSI adapter card) and do not move it into the user
-d use direct IO if available. In this case the sg driver will
attempt to configure the DMA from the SCSI adapter to transfer
directly into user memory. This will eliminate the copy via ker-
nel buffers. If not available then this will be reported and
indirect IO will be done instead.
-m use memory mapped IO if available. In this case the sg driver
will attempt to configure the DMA from the SCSI adapter to
transfer directly into user memory. This will eliminate the copy
via kernel buffers.
-t times the bulk data transfer component of this command. The
elapsed time is printed out plus a MB/sec calculation. In this
case "MB" is 1,000,000 bytes. The gettimeofday() system call is
used internally for the time calculation.
size of total transfer (in Megabytes == 1024^2). The default is
200 MB, the maximum is 4095 MB. The actual number of bytes
transferred may be slightly less since all transfers are the
same size (and an integer division is involved rounding towards
size of each transfer (in Kilobytes == 1024). The default is the
actual available buffer size returned by the READ BUFFER com-
mand. The maximum is the same as the default, hence this argu-
ment can only be used to reduce the size of each transfer to
less than the device’s actual available buffer size.
This command is typically used on modern SCSI disks which have a RAM
cache on their drive electronics. If no IO to the magnetic media, or
slower devices like flash RAM, is involved then the disk should be able
to source data fast enough to saturate the bandwidth of the host
machine. The bottleneck may then be the SCSI bus, the Linux drivers or
the host machine’s hardware (e.g. speed of RAM). Using time(1) in front
of a sg_rbuf command is one way to do such measurements.
Note that maximum bandwidths given by SCSI standards (e.g. UW == 40
MB/sec) take "Mega" to mean 10^6 .
So that is approximately 40 MB/sec at 40 % utilization. Now with the
addition of the "-q" option this throughput improves and the utiliza-
tion drops to 0%.
$ time ./sg_rbuf -q /dev/sg0
READ BUFFER reports: buffer capacity=3434944,
Read 200 MBytes (actual 199 MB, 209531584 bytes),
buffer size=3354 KBytes
real 0m2.784s, user 0m0.000s, sys 0m0.000s
Written by Doug Gilbert
Report bugs to <firstname.lastname@example.org>.
Copyright © 2000, 2001 Douglas Gilbert
This software is distributed under the GPL version 2. There is NO war-
ranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PUR-
sg3_utils-0.96 December 2001 SG_RBUF(8)
Output converted with
what's new |