[PATCH] Warning on hugepage-size setting in HOWTO
[fio.git] / HOWTO
diff --git a/HOWTO b/HOWTO
index 6ac744cd3d436124f8474ff135c7a842fb92136b..6a7f58ed92d8fcc9e7a041e22b8a393c5786c425 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -362,8 +362,34 @@ mem=str            Fio can use various types of memory as the io unit buffer.
                        mmap    Use anonymous memory maps as the buffers.
                                Allocated through mmap(2).
 
+                       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