aboutsummaryrefslogtreecommitdiff
path: root/sg_read.8
diff options
context:
space:
mode:
Diffstat (limited to 'sg_read.8')
-rw-r--r--sg_read.8108
1 files changed, 108 insertions, 0 deletions
diff --git a/sg_read.8 b/sg_read.8
new file mode 100644
index 00000000..0d226389
--- /dev/null
+++ b/sg_read.8
@@ -0,0 +1,108 @@
+.TH SG_READ "8" "February 2002" "sg3_utils-0.98" SG3_UTILS
+.SH NAME
+sg_read \- read blocks of data continually from same offset
+.SH SYNOPSIS
+.B sg_read
+[\fIOPTION\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Read data from a Linux SCSI generic (sg) device, a raw devices or
+a normal file with each read command issued to the same offset. This
+will test (or time) disk caching and/or SCSI (or some other) bus
+throughput.
+.TP
+bpt=BLOCKS
+each read operation will be made using this number of blocks (or less if
+near the end of count). Default is 128. Note also that each read operation
+starts at the same offset (as given by skip or 0).
+.TP
+bs=BYTES
+this
+.B must
+be the block size of the physical device (defaults to 512)
+.TP
+cdbsz=6 | 10 | 12 | 16
+size of SCSI READ commands issued on sg device names.
+Default is 10 byte SCSI READ command blocks
+.TP
+count=BLOCKS
+read this number of blocks. This argument must be given
+.TP
+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. 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)
+.TP
+if=FILE
+read from this FILE. This argument must be given
+.TP
+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
+.TP
+skip=BLOCKS
+all read operations will start offset by BLOCKS bs-sized blocks
+from the start of input (file or device)
+.TP
+time=0 | 1 | 2
+When 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
+.PP
+The input file must be either a sg device, a raw device or a normal file.
+A raw device must be bound to a block device prior to using sg_raw.
+See
+.B raw(8)
+for more information about binding raw devices.
+.PP
+BYTES and BLOCKS may be followed by the following multiplicative suffixes:
+c C *1; b B *512; k *1,024; K *1,000; m *1,048,576; M *1,000,000;
+g *1,073,741,824; and G *1,000,000,000
+.PP
+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.
+.SH EXAMPLES
+.PP
+Let us assume that /dev/sg0 is a disk and we wish to time the disk's
+cache performance.
+.PP
+ sg_read if=/dev/sg0 bs=512 count=1M mmap=1 time=2
+.PP
+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 KB read operation will involve reading the magnetic media
+while the remaining read operations will "hit" the disk's cache. The
+output of thid command will look like this:
+.PP
+ time from second command to end was 8.51 secs, 60.19 MB/sec
+.br
+ 1000000+0 records in, SCSI commands issued: 7813
+.SH AUTHORS
+Written by Doug Gilbert.
+.SH "REPORTING BUGS"
+Report bugs to <dgilbert@interlog.com>.
+.SH COPYRIGHT
+Copyright \(co 2000-2002 Douglas Gilbert
+.br
+This software is distributed under the GPL version 2. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+To time streaming media read or write time see
+.B sg_dd
+is in the sg3_utils package. The lmbench package contains
+.B lmdd
+which is also interesting.
+.B raw(8), dd(1)