net engine: don't pass in flags
[fio.git] / HOWTO
diff --git a/HOWTO b/HOWTO
index 5a55c1a21b574a3adba1aa52f4f0fee6f42458c7..f256f24fde3a28cd20e7a25786ec6481f766b305 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -237,14 +237,15 @@ filename=str      Fio normally makes up a filename based on the job name,
                thread number, and file number. If you want to share
                files between threads in a job or several jobs, specify
                a filename for each of them to override the default. If
-               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 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
-               on the read/write direction set.
+               the ioengine used is 'net', the filename is the host, port,
+               and protocol to use in the format of =host/port/protocol.
+               See ioengine=net for more. If the ioengine is file based, you
+               can specify a number of files 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 on the read/write
+               direction set.
 
 opendir=str    Tell fio to recursively add any file it can find in this
                directory and down the file system tree.
@@ -401,7 +402,9 @@ ioengine=str        Defines how the job issues io to the file. The following
 
                        vsync   Basic readv(2) or writev(2) IO.
 
-                       libaio  Linux native asynchronous io.
+                       libaio  Linux native asynchronous io. Note that Linux
+                               may only support queued behaviour with
+                               non-buffered IO (set direct=1 or buffered=0).
 
                        posixaio glibc posix asynchronous io.
 
@@ -429,9 +432,12 @@ ioengine=str       Defines how the job issues io to the file. The following
 
                        net     Transfer over the network to given host:port.
                                'filename' must be set appropriately to
-                               filename=host/port regardless of send
+                               filename=host/port/protocol regardless of send
                                or receive, if the latter only the port
-                               argument is used.
+                               argument is used. 'host' may be an IP address
+                               or hostname, port is the port number to be used,
+                               and protocol may be 'udp' or 'tcp'. If no
+                               protocol is given, TCP is used.
 
                        netsplice Like net, but uses splice/vmsplice to
                                map data and send/receive.
@@ -590,7 +596,9 @@ cpumask=int Set the CPU affinity of this job. The parameter given is a
 
 cpus_allowed=str Controls the same options as cpumask, but it allows a text
                setting of the permitted CPUs instead. So to use CPUs 1 and
-               5, you would specify cpus_allowed=1,5.
+               5, you would specify cpus_allowed=1,5. This options also
+               allows a range of CPUs. Say you wanted a binding to CPUs
+               1, 5, and 8-15, you would set cpus_allowed=1,5,8-15.
 
 startdelay=time        Start this job the specified number of seconds after fio
                has started. Only useful if the job file contains several
@@ -867,6 +875,18 @@ gtod_reduce=bool Enable all of the gettimeofday() reducing options
                we only do about 0.4% of the gtod() calls we would have
                done if all time keeping was enabled.
 
+gtod_cpu=int   Sometimes it's cheaper to dedicate a single thread of
+               execution to just getting the current time. Fio (and
+               databases, for instance) are very intensive on gettimeofday()
+               calls. With this option, you can set one CPU aside for
+               doing nothing but logging current time to a shared memory
+               location. Then the other threads/processes that run IO
+               workloads need only copy that segment, instead of entering
+               the kernel with a gettimeofday() call. The CPU set aside
+               for doing these time calls will be excluded from other
+               uses. Fio will manually clear it from the CPU mask of other
+               jobs.
+
 
 6.0 Interpreting the output
 ---------------------------