[PATCH] Allow mem=mmap to also use a file backing
[fio.git] / HOWTO
diff --git a/HOWTO b/HOWTO
index f5e2449c22d64956015d983c04c1f93aa8dc9840..19182019f7020389e6e5e48391e8f2b6f58b5871 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -359,15 +359,39 @@ mem=str           Fio can use various types of memory as the io unit buffer.
 
                        shmhuge Same as shm, but use huge pages as backing.
 
-                       mmap    Use anonymous memory maps as the buffers.
-                               Allocated through mmap(2).
+                       mmap    Use mmap to allocate buffers. May either be
+                               anonymous memory, or can be file backed if
+                               a filename is given after the option. The
+                               format is mem=mmap:/path/to/file.
 
                        mmaphuge Use a memory mapped huge file as the buffer
                                backing. Append filename after mmaphuge, ala
                                mem=mmaphuge:/hugetlbfs/file
 
                The area allocated is a function of the maximum allowed
-               bs size for the job, multiplied by the io depth given.
+               bs size for the job, multiplied by the io depth given. Note
+               that for shmhuge and mmaphuge to work, the system must have
+               free huge pages allocated. This can normally be checked
+               and set by reading/writing /proc/sys/vm/nr_hugepages on a
+               Linux system. Fio assumes a huge page is 4MiB in size. So
+               to calculate the number of huge pages you need for a given
+               job file, add up the io depth of all jobs (normally one unless
+               iodepth= is used) and multiply by the maximum bs set. Then
+               divide that number by the huge page size. You can see the
+               size of the huge pages in /proc/meminfo. If no huge pages
+               are allocated by having a non-zero number in nr_hugepages,
+               using mmaphuge or shmhuge will fail. Also see hugepage-size.
+
+               mmaphuge also needs to have hugetlbfs mounted and the file
+               location should point there. So if it's mounted in /huge,
+               you would use mem=mmaphuge:/huge/somefile.
+
+hugepage-size=siint
+               Defines the size of a huge page. Must at least be equal
+               to the system setting, see /proc/meminfo. Defaults to 4MiB.
+               Should probably always be a multiple of megabytes, so using
+               hugepage-size=Xm is the preferred way to set this to avoid
+               setting a non-pow-2 bad value.
 
 exitall                When one job finishes, terminate the rest. The default is
                to wait for each job to finish, sometimes that is not the