Revamp file locking
[fio.git] / HOWTO
diff --git a/HOWTO b/HOWTO
index ca095a322895be3065081db5bd600fb12609f3e7..3d9229338a11c9628f18d61a2a13e6cdc8b1c263 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -219,6 +219,25 @@ filename=str       Fio normally makes up a filename based on the job name,
 opendir=str    Tell fio to recursively add any file it can find in this
                directory and down the file system tree.
 
+lockfile=str   Fio defaults to not doing any locking files before it does
+               IO to them. If a file or file descriptor is shared, fio
+               can serialize IO to that file to make the end result
+               consistent. This is usual for emulating real workloads that
+               share files. The lock modes are:
+
+                       none            No locking. The default.
+                       exclusive       Only one thread/process may do IO,
+                                       excluding all others.
+                       readwrite       Read-write locking on the file. Many
+                                       readers may access the file at the
+                                       same time, but writes get exclusive
+                                       access.
+
+               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
+               expensive, batching the lock/unlocks will speed up IO.
+
 readwrite=str
 rw=str         Type of io pattern. Accepted values are:
 
@@ -344,6 +363,8 @@ ioengine=str        Defines how the job issues io to the file. The following
 
                        psync   Basic pread(2) or pwrite(2) io.
 
+                       vsync   Basic readv(2) or writev(2) IO.
+
                        libaio  Linux native asynchronous io.
 
                        posixaio glibc posix asynchronous io.
@@ -381,7 +402,10 @@ ioengine=str       Defines how the job issues io to the file. The following
                                cycles according to the cpuload= and
                                cpucycle= options. Setting cpuload=85
                                will cause that job to do nothing but burn
-                               85% of the CPU.
+                               85% of the CPU. In case of SMP machines,
+                               use numjobs=<no_of_cpu> to get desired CPU
+                               usage, as the cpuload only loads a single
+                               CPU at the desired rate.
 
                        guasi   The GUASI IO engine is the Generic Userspace
                                Asyncronous Syscall Interface approach
@@ -402,8 +426,9 @@ iodepth=int This defines how many io units to keep in flight against
                concurrency.
 
 iodepth_batch=int This defines how many pieces of IO to submit at once.
-               It defaults to the same as iodepth, but can be set lower
-               if one so desires.
+               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_low=int        The low water mark indicating when to start filling
                the queue again. Defaults to the same as iodepth, meaning