Add intel hardware assisted crc32c support
[fio.git] / HOWTO
diff --git a/HOWTO b/HOWTO
index 15ee367b57ea1ea4a907d33a7fab77c01c5905b2..7a65aa1540338c32bc2d43ef5b862b6c68b5b7ab 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -171,18 +171,18 @@ a string. The following types are used:
 
 str    String. This is a sequence of alpha characters.
 int    Integer. A whole number value, can be negative. If prefixed with
-       0x, the integer is assumed to be of base 16 (hexidecimal).
+       0x, the integer is assumed to be of base 16 (hexadecimal).
 siint  SI integer. A whole number value, which may contain a postfix
        describing the base of the number. Accepted postfixes are k/m/g,
        meaning kilo, mega, and giga. So if you want to specify 4096,
        you could either write out '4096' or just give 4k. The postfixes
        signify base 2 values, so 1024 is 1k and 1024k is 1m and so on.
        If the option accepts an upper and lower range, use a colon ':'
-       or minus '-' to seperate such values. See irange.
+       or minus '-' to separate such values. See irange.
 bool   Boolean. Usually parsed as an integer, however only defined for
        true and false (1 and 0).
 irange Integer range with postfix. Allows value range to be given, such
-       as 1024-4096. A colon may also be used as the seperator, eg
+       as 1024-4096. A colon may also be used as the separator, eg
        1k:4k. If the option allows two sets of ranges, they can be
        specified with a ',' or '/' delimiter: 1k-4k/8k-32k. Also see
        siint.
@@ -210,7 +210,7 @@ filename=str        Fio normally makes up a filename based on the job name,
                the ioengine used is 'net', the filename is the host and
                port to connect to in the format of =host/port. If the
                ioengine is file based, you can specify a number of files
-               by seperating the names with a ':' colon. So if you wanted
+               by separating the names with a ':' colon. So if you wanted
                a job to open /dev/sda and /dev/sdb as the two working files,
                you would use filename=/dev/sda:/dev/sdb. '-' is a reserved
                name, meaning stdin or stdout. Which of the two depends
@@ -235,7 +235,7 @@ lockfile=str        Fio defaults to not doing any locking files before it does
 
                The option may be post-fixed with a lock batch number. If
                set, then each thread/process may do that amount of IOs to
-               the file before giving up the lock. Since lock acqusition is
+               the file before giving up the lock. Since lock acquisition is
                expensive, batching the lock/unlocks will speed up IO.
 
 readwrite=str
@@ -375,6 +375,8 @@ ioengine=str        Defines how the job issues io to the file. The following
 
                        posixaio glibc posix asynchronous io.
 
+                       solarisaio Solaris native asynchronous io.
+
                        mmap    File is memory mapped and data copied
                                to/from using memcpy(3).
 
@@ -431,11 +433,21 @@ iodepth=int       This defines how many io units to keep in flight against
                job, can be overridden with a larger value for higher
                concurrency.
 
+iodepth_batch_submit=int
 iodepth_batch=int This defines how many pieces of IO to submit at once.
                It defaults to 1 which means that we submit each IO
                as soon as it is available, but can be raised to submit
                bigger batches of IO at the time.
 
+iodepth_batch_complete=int This defines how many pieces of IO to retrieve
+               at once. It defaults to 1 which means that we'll ask
+               for a minimum of 1 IO in the retrieval process from
+               the kernel. The IO retrieval will go on until we
+               hit the limit set by iodepth_low. If this variable is
+               set to 0, then fio will always check for completed
+               events before queuing more IO. This helps reduce
+               IO latency, at the cost of more retrieval system calls.
+
 iodepth_low=int        The low water mark indicating when to start filling
                the queue again. Defaults to the same as iodepth, meaning
                that fio will attempt to keep the queue full at all times.
@@ -558,7 +570,7 @@ runtime=int Tell fio to terminate processing after the specified number
                cap the total runtime to a given time.
 
 time_based     If set, fio will run for the duration of the runtime
-               specified even if the file(s) are completey read or
+               specified even if the file(s) are completely read or
                written. It will simply loop over the same workload
                as many times as the runtime allows.
 
@@ -629,8 +641,8 @@ create_fsync=bool   fsync the data file after creation. This is the
                        default.
 
 unlink=bool    Unlink the job files when done. Not the default, as repeated
-               runs of that job would then waste time recreating the fileset
-               again and again.
+               runs of that job would then waste time recreating the file
+               set again and again.
 
 loops=int      Run the specified number of iterations of this job. Used
                to repeat the same workload a given number of times. Defaults
@@ -649,6 +661,12 @@ verify=str If writing to a file, fio can verify the file contents
                                area and store it in the header of each
                                block.
 
+                       crc32c  Use a crc32c sum of the data area and store
+                               it in the header of each block.
+
+                       crc32c-intel Use hardware assisted crc32c calcuation
+                               provided on SSE4.2 enabled processors.
+
                        crc32   Use a crc32 sum of the data area and store
                                it in the header of each block.
 
@@ -711,7 +729,7 @@ stonewall   Wait for preceeding jobs in the job file to exit, before
 
 new_group      Start a new reporting group. If this option isn't given,
                jobs in a file will be part of the same reporting group
-               unless seperated by a stone wall (or if it's a group
+               unless separated by a stone wall (or if it's a group
                by itself, with the numjobs option).
 
 numjobs=int    Create the specified number of clones of this job. May be
@@ -841,9 +859,9 @@ runt=               The runtime of that thread
                standard deviation). This is the time it took to submit
                the io. For sync io, the slat is really the completion
                latency, since queue/complete is one operation there. This
-               value can be in miliseconds or microseconds, fio will choose
+               value can be in milliseconds or microseconds, fio will choose
                the most appropriate base and print that. In the example
-               above, miliseconds is the best scale.
+               above, milliseconds is the best scale.
        clat=   Completion latency. Same names as slat, this denotes the
                time from submission to completion of the io pieces. For
                sync io, clat will usually be equal (or very close) to 0,