sg_read man page on Scientific

Man page or keyword search:  
man Server   26626 pages
apropos Keyword Search (all sections)
Output format
Scientific logo
[printable version]

SG_READ(8)			   SG3_UTILS			    SG_READ(8)

NAME
       sg_read - read blocks of data continually from same offset

SYNOPSIS
       sg_read [blk_sgio=0|1] [bpt=BPT] [bs=BS] [cdbsz=6|10|12|16] count=COUNT
       [dio=0|1]  [dpo=0|1]  [fua=0|1]	if=IFILE   [mmap=0|1]	[no_dxfer=0|1]
       [odir=0|1] [skip=SKIP] [time=TI] [verbose=VERB] [--help] [--version]

DESCRIPTION
       Read  data  from	 a Linux SCSI generic (sg) device, a block device or a
       normal file with each read command issued to the same offset or logical
       block  address  (lba). This can be used to test (or time) disk caching,
       SCSI (or some other) transport throughput, and/or  SCSI	command	 over‐
       head.

       When  the  COUNT value is positive, then up to BPT blocks are read at a
       time, until the COUNT is exhausted. Each read operation starts  at  the
       same  lba  which, if SKIP is not given, is the beginning of the file or
       device.

       The COUNT value may be negative when IFILE is a sg device or is a block
       device  with  'blk_sgio=1'  set. Alternatively 'bpt=0' may be given. In
       these cases |COUNT| "zero block" SCSI READ commands are	issued.	 "Zero
       block"  means  "do  nothing"  for SCSI READ 10, 12 and 16 byte commands
       (but not for the 6 byte variant). In practice "zero  block"  SCSI  READ
       commands	 have  low  latency and so are one way to measure SCSI command
       overhead.

OPTIONS
       blk_sgio=0 | 1
	      The default action of this utility is to	use  the  Unix	read()
	      command  when  the IFILE is a block device. In lk 2.6 many block
	      devices can handle SCSI commands issued via the SG_IO ioctl.  So
	      when this option is set the SG_IO ioctl sends SCSI READ commands
	      to IFILE if it is a block device.

       bpt=BPT
	      where BPT is the maximum number of blocks	 each  read  operation
	      fetches.	 Fewer blocks will be fetched when the remaining COUNT
	      is less than BPT. The default value for BPT is  128.  Note  that
	      each  read  operation  starts  at	 the  same  lba	 (as  given by
	      skip=SKIP or 0).	If 'bpt=0' then the COUNT  is  interpreted  as
	      the number of zero block SCSI READ commands to issue.

       bs=BS  where BS is the size (in bytes) of each block read. This must be
	      the block size of the physical device (defaults to 512) if  SCSI
	      commands are being issued to IFILE.

       cdbsz=6 | 10 | 12 | 16
	      size  of	SCSI READ commands issued on sg device names, or block
	      devices if 'blk_sgio=1' is given. Default is 10 byte  SCSI  READ
	      cdbs.

       count=COUNT
	      when  COUNT  is  a  positive number, read that number of blocks,
	      typically with multiple read operations. When COUNT is  negative
	      then  |COUNT|  SCSI  READ commands are performed requesting zero
	      blocks to be transferred. This option is mandatory.

       dio=0 | 1
	      default is 0 which selects indirect  IO.	Value  of  1  attempts
	      direct IO which, if not available, falls back to indirect IO and
	      notes this at completion. This option is only active if IFILE is
	      an    sg	  device.     If    direct    IO   is	selected   and
	      /proc/scsi/sg/allow_dio has the value of 0  then	a  warning  is
	      issued (and indirect IO is performed)

       dpo=0 | 1
	      when set the disable page out (DPO) bit in SCSI READ commands is
	      set.  Otherwise the DPO bit is cleared (default).

       fua=0 | 1
	      when set the force unit access (FUA) bit in SCSI	READ  commands
	      is set.  Otherwise the FUA bit is cleared (default).

       if=IFILE
	      read  from this IFILE. This argument must be given. If the IFILE
	      is a normal file then it must be seekable (if (COUNT >  BPT)  or
	      skip=SKIP	 is  given). Hence stdin is not acceptable (and giving
	      "-" as the IFILE argument is reported as an error).

       mmap=0 | 1
	      default is 0 which selects indirect IO. Value of 1 causes memory
	      mapped  IO  to  be  performed. Selecting both dio and mmap is an
	      error. This option is only active if IFILE is an sg device.

       no_dxfer=0 | 1
	      when set then DMA transfers from the device are made into kernel
	      buffers  but  no	further (i.e. there is no second copy into the
	      user space). The default value is 0 in which case transfers  are
	      made into the user space.	 When neither mmap nor dio is set then
	      data transfer are copied	via  kernel  buffers  (i.e.  a	double
	      copy). Mainly for testing.

       odir=0 | 1
	      when  set	 opens	an IFILE which is a block device with an addi‐
	      tional O_DIRECT flag. The default value is 0  (i.e.  don't  open
	      block devices O_DIRECT).

       skip=SKIP
	      all  read	 operations  will start offset by SKIP bs-sized blocks
	      from the start of the input file (or device).

       time=TI
	      When TI is 0 (default) doesn't perform timing.   When  1,	 times
	      transfer	and does throughput calculation, starting at the first
	      issued command until completion. When 2, times transfer and does
	      throughput  calculation,	starting  at the second issued command
	      until completion. When 3 times from third command, etc. An aver‐
	      age number of commands (SCSI READs or Unix read()s) executed per
	      second is also output.

       verbose=VERB
	      as VERB increases so does the amount of  debug  output  sent  to
	      stderr.	Default	 value is zero which yields the minimum amount
	      of debug output.	A value of 1 reports extra information that is
	      not repetitive.

       --help Output the usage message then exit.

       --version
	      Output the version string then exit.

NOTES
       Various	numeric	 arguments (e.g. SKIP) may include multiplicative suf‐
       fixes or be given in hexadecimal. See the "NUMERIC  ARGUMENTS"  section
       in the sg3_utils(8) man page.

       Data  usually  gets  to	the user space in a 2 stage process: first the
       SCSI adapter DMAs into kernel buffers and then  the  sg	driver	copies
       this  data into user memory.  This is called "indirect IO" and there is
       a "dio" option to select "direct IO" which will DMA directly into  user
       memory. Due to some issues "direct IO" is disabled in the sg driver and
       needs a configuration change to activate it.  This  is  typically  done
       with  "echo 1 > /proc/scsi/sg/allow_dio". An alternate way to avoid the
       2 stage copy is to select memory mapped IO with 'mmap=1'.

SIGNALS
       The signal handling has been borrowed from dd: SIGINT, SIGQUIT and SIG‐
       PIPE output the number of remaining blocks to be transferred; then they
       have their default action.  SIGUSR1 causes the same information	to  be
       output yet the copy continues.  All output caused by signals is sent to
       stderr.

EXAMPLES
       Let us assume that /dev/sg0 is a disk and we wish to  time  the	disk's
       cache performance.

	  sg_read if=/dev/sg0 bs=512 count=1MB mmap=1 time=2

       This  command  will continually read 128	 512 byte blocks from block 0.
       The "128" is the default value for 'bpt'	 while	"block	0"  is	chosen
       because	the  'skip'  argument  was not given. This will continue until
       1,000,000 blocks are read. The idea behind using 'time=2' is  that  the
       first  64  KiB  read  operation will involve reading the magnetic media
       while the remaining read operations will "hit" the  disk's  cache.  The
       output of third command will look like this:

	 time from second command to end was 4.50 secs, 113.70 MB/sec
	 Average number of READ commands per second was 1735.27
	 1000000+0 records in, SCSI commands issued: 7813

EXIT STATUS
       The  exit  status  of sg_read is 0 when it is successful. Otherwise see
       the sg3_utils(8) man page.

AUTHORS
       Written by Doug Gilbert.

REPORTING BUGS
       Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT
       Copyright © 2000-2009 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
       To time streaming media	read  or  write	 time  see  sg_dd  is  in  the
       sg3_utils  package.  The	 lmbench  package  contains lmdd which is also
       interesting.  raw(8), dd(1)

sg3_utils-1.27			  March 2009			    SG_READ(8)
[top]

List of man pages available for Scientific

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net