sg_read man page on YellowDog

Man page or keyword search:  
man Server   18644 pages
apropos Keyword Search (all sections)
Output format
YellowDog 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
       BYTES  and  BLOCKS  may be followed by one of these multiplicative suf‐
       fixes: c C *1; w W *2; b B *512; k K KiB *1,024; KB  *1,000;  m	M  MiB
       *1,048,576; MB *1,000,000; g G Gib *(2**30); GB *(10**9). Also a suffix
       of the form "x<n>" multiplies the leading number by <n>.	 These	multi‐
       plicative  suffixes  are	 compatible with GNU's dd command (since 2002)
       which claims compliance with SI and with IEC 60027-2.

       Alternatively numerical values can be given in hexadecimal preceded  by
       either  "0x"  or "0X" (or with a trailing "h" or "H"). When hex numbers
       are given, multipliers cannot be used.

       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-2007 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.23			 January 2007			    SG_READ(8)
[top]

List of man pages available for YellowDog

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