SGI Techpubs Library

Linux  »  Man Pages
find in page

sg_rbuf


SYNOPSIS

       sg_rbuf   [[-q]   |  [-d]  |  [-m]]  [-t]  [-s=<num_MB>]  [-b=<num_KB>]
       <sg_device>


DESCRIPTION

       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
              space.

       -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.

       -s=<num_MB>
              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
              zero).

       -b=<num_KB>
              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,
           offset boundary=6
       Read 200 MBytes (actual 199 MB, 209531584 bytes),
           buffer size=3354 KBytes
       real 0m2.784s, user 0m0.000s, sys 0m0.000s


AUTHOR

       Written by Doug Gilbert


REPORTING BUGS

       Report bugs to <dgilbert@interlog.com>.


COPYRIGHT

       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-
       POSE.


SEE ALSO

       time(1)

sg3_utils-0.96                   December 2001                      SG_RBUF(8)

Output converted with man2html


home/search | what's new | help