Add option to the xnvme fio engine for picking a
memory backend. Update the fio document.
Signed-off-by: Mads Ynddal <m.ynddal@samsung.com>
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
Sets the subsystem NQN for fabrics. This is for xNVMe to utilize a
fabrics target with multiple systems.
Sets the subsystem NQN for fabrics. This is for xNVMe to utilize a
fabrics target with multiple systems.
+.. option:: xnvme_mem=str : [xnvme]
+
+ Select the xnvme memory backend. This can take these values.
+
+ **posix**
+ This is the default posix memory backend for linux NVMe driver.
+ **hugepage**
+ Use hugepages, instead of existing posix memory backend. The
+ memory backend uses hugetlbfs. This require users to allocate
+ hugepages, mount hugetlbfs and set an enviornment variable for
+ XNVME_HUGETLB_PATH.
+ **spdk**
+ Uses SPDK's memory allocator.
+ **vfio**
+ Uses libvfn's memory allocator. This also specifies the use
+ of libvfn backend instead of SPDK.
+
.. option:: xnvme_iovec=int : [xnvme]
If this option is set. xnvme will use vectored read/write commands.
.. option:: xnvme_iovec=int : [xnvme]
If this option is set. xnvme will use vectored read/write commands.
unsigned int xnvme_dev_nsid;
unsigned int xnvme_iovec;
char *xnvme_be;
unsigned int xnvme_dev_nsid;
unsigned int xnvme_iovec;
char *xnvme_be;
char *xnvme_async;
char *xnvme_sync;
char *xnvme_admin;
char *xnvme_async;
char *xnvme_sync;
char *xnvme_admin;
.category = FIO_OPT_C_ENGINE,
.group = FIO_OPT_G_XNVME,
},
.category = FIO_OPT_C_ENGINE,
.group = FIO_OPT_G_XNVME,
},
+ {
+ .name = "xnvme_mem",
+ .lname = "xNVMe Memory Backend",
+ .type = FIO_OPT_STR_STORE,
+ .off1 = offsetof(struct xnvme_fioe_options, xnvme_mem),
+ .help = "Select xNVMe memory backend",
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_XNVME,
+ },
{
.name = "xnvme_async",
.lname = "xNVMe Asynchronous command-interface",
{
.name = "xnvme_async",
.lname = "xNVMe Asynchronous command-interface",
opts.nsid = o->xnvme_dev_nsid;
opts.subnqn = o->xnvme_dev_subnqn;
opts.be = o->xnvme_be;
opts.nsid = o->xnvme_dev_nsid;
opts.subnqn = o->xnvme_dev_subnqn;
opts.be = o->xnvme_be;
+ opts.mem = o->xnvme_mem;
opts.async = o->xnvme_async;
opts.sync = o->xnvme_sync;
opts.admin = o->xnvme_admin;
opts.async = o->xnvme_async;
opts.sync = o->xnvme_sync;
opts.admin = o->xnvme_admin;
Sets the subsystem NQN for fabrics. This is for xNVMe to utilize a fabrics
target with multiple systems.
.TP
Sets the subsystem NQN for fabrics. This is for xNVMe to utilize a fabrics
target with multiple systems.
.TP
+.BI (xnvme)xnvme_mem\fR=\fPstr
+Select the xnvme memory backend. This can take these values.
+.RS
+.RS
+.TP
+.B posix
+This is the default posix memory backend for linux NVMe driver.
+.TP
+.BI hugepage
+Use hugepages, instead of existing posix memory backend. The memory backend
+uses hugetlbfs. This require users to allocate hugepages, mount hugetlbfs and
+set an enviornment variable for XNVME_HUGETLB_PATH.
+.TP
+.BI spdk
+Uses SPDK's memory allocator.
+.TP
+.BI vfio
+Uses libvfn's memory allocator. This also specifies the use of libvfn backend
+instead of SPDK.
+.RE
+.RE
+.TP
.BI (xnvme)xnvme_iovec
If this option is set, xnvme will use vectored read/write commands.
.TP
.BI (xnvme)xnvme_iovec
If this option is set, xnvme will use vectored read/write commands.
.TP