| From 8e318fd65ba5c0f6ce82860984bc8d69a7843f97 Mon Sep 17 00:00:00 2001 |
| From: Ankit Kumar <ankit.kumar@samsung.com> |
| Date: Tue, 16 Aug 2022 11:08:21 +0530 |
| Subject: [PATCH] doc: update fio doc for xnvme engine |
| |
| - Elaborate about the various sync, async and admin |
| interfaces. |
| - add missing io_uring_cmd async backend entry. |
| - xnvme ioengine doesn't support file stat. |
| |
| Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com> |
| Link: https://lore.kernel.org/r/20220816053821.440-3-ankit.kumar@samsung.com |
| Signed-off-by: Jens Axboe <axboe@kernel.dk> |
| --- |
| HOWTO.rst | 37 ++++++++++++++++++++++++++----------- |
| fio.1 | 34 +++++++++++++++++++++------------- |
| 2 files changed, 47 insertions(+), 24 deletions(-) |
| |
| diff --git a/HOWTO.rst b/HOWTO.rst |
| index 05fc117f..b2750b56 100644 |
| --- a/HOWTO.rst |
| +++ b/HOWTO.rst |
| @@ -2780,41 +2780,56 @@ with the caveat that when used on the command line, they must come after the |
| Select the xnvme async command interface. This can take these values. |
| |
| **emu** |
| - This is default and used to emulate asynchronous I/O. |
| + This is default and use to emulate asynchronous I/O by using a |
| + single thread to create a queue pair on top of a synchronous |
| + I/O interface using the NVMe driver IOCTL. |
| **thrpool** |
| - Use thread pool for Asynchronous I/O. |
| + Emulate an asynchronous I/O interface with a pool of userspace |
| + threads on top of a synchronous I/O interface using the NVMe |
| + driver IOCTL. By default four threads are used. |
| **io_uring** |
| - Use Linux io_uring/liburing for Asynchronous I/O. |
| + Linux native asynchronous I/O interface which supports both |
| + direct and buffered I/O. |
| + **io_uring_cmd** |
| + Fast Linux native asynchronous I/O interface for NVMe pass |
| + through commands. This only works with NVMe character device |
| + (/dev/ngXnY). |
| **libaio** |
| Use Linux aio for Asynchronous I/O. |
| **posix** |
| - Use POSIX aio for Asynchronous I/O. |
| + Use the posix asynchronous I/O interface to perform one or |
| + more I/O operations asynchronously. |
| **nil** |
| - Use nil-io; For introspective perf. evaluation |
| + Do not transfer any data; just pretend to. This is mainly used |
| + for introspective performance evaluation. |
| |
| .. option:: xnvme_sync=str : [xnvme] |
| |
| Select the xnvme synchronous command interface. This can take these values. |
| |
| **nvme** |
| - This is default and uses Linux NVMe Driver ioctl() for synchronous I/O. |
| + This is default and uses Linux NVMe Driver ioctl() for |
| + synchronous I/O. |
| **psync** |
| - Use pread()/write() for synchronous I/O. |
| + This supports regular as well as vectored pread() and pwrite() |
| + commands. |
| + **block** |
| + This is the same as psync except that it also supports zone |
| + management commands using Linux block layer IOCTLs. |
| |
| .. option:: xnvme_admin=str : [xnvme] |
| |
| Select the xnvme admin command interface. This can take these values. |
| |
| **nvme** |
| - This is default and uses linux NVMe Driver ioctl() for admin commands. |
| + This is default and uses linux NVMe Driver ioctl() for admin |
| + commands. |
| **block** |
| Use Linux Block Layer ioctl() and sysfs for admin commands. |
| - **file_as_ns** |
| - Use file-stat to construct NVMe idfy responses. |
| |
| .. option:: xnvme_dev_nsid=int : [xnvme] |
| |
| - xnvme namespace identifier, for userspace NVMe driver. |
| + xnvme namespace identifier for userspace NVMe driver, such as SPDK. |
| |
| .. option:: xnvme_iovec=int : [xnvme] |
| |
| diff --git a/fio.1 b/fio.1 |
| index 6630525f..f3f3dc5d 100644 |
| --- a/fio.1 |
| +++ b/fio.1 |
| @@ -2530,22 +2530,29 @@ Select the xnvme async command interface. This can take these values. |
| .RS |
| .TP |
| .B emu |
| -This is default and used to emulate asynchronous I/O |
| +This is default and use to emulate asynchronous I/O by using a single thread to |
| +create a queue pair on top of a synchronous I/O interface using the NVMe driver |
| +IOCTL. |
| .TP |
| .BI thrpool |
| -Use thread pool for Asynchronous I/O |
| +Emulate an asynchronous I/O interface with a pool of userspace threads on top |
| +of a synchronous I/O interface using the NVMe driver IOCTL. By default four |
| +threads are used. |
| .TP |
| .BI io_uring |
| -Use Linux io_uring/liburing for Asynchronous I/O |
| +Linux native asynchronous I/O interface which supports both direct and buffered |
| +I/O. |
| .TP |
| .BI libaio |
| Use Linux aio for Asynchronous I/O |
| .TP |
| .BI posix |
| -Use POSIX aio for Asynchronous I/O |
| +Use the posix asynchronous I/O interface to perform one or more I/O operations |
| +asynchronously. |
| .TP |
| .BI nil |
| -Use nil-io; For introspective perf. evaluation |
| +Do not transfer any data; just pretend to. This is mainly used for |
| +introspective performance evaluation. |
| .RE |
| .RE |
| .TP |
| @@ -2555,10 +2562,14 @@ Select the xnvme synchronous command interface. This can take these values. |
| .RS |
| .TP |
| .B nvme |
| -This is default and uses Linux NVMe Driver ioctl() for synchronous I/O |
| +This is default and uses Linux NVMe Driver ioctl() for synchronous I/O. |
| .TP |
| .BI psync |
| -Use pread()/write() for synchronous I/O |
| +This supports regular as well as vectored pread() and pwrite() commands. |
| +.TP |
| +.BI block |
| +This is the same as psync except that it also supports zone management |
| +commands using Linux block layer IOCTLs. |
| .RE |
| .RE |
| .TP |
| @@ -2568,18 +2579,15 @@ Select the xnvme admin command interface. This can take these values. |
| .RS |
| .TP |
| .B nvme |
| -This is default and uses Linux NVMe Driver ioctl() for admin commands |
| +This is default and uses Linux NVMe Driver ioctl() for admin commands. |
| .TP |
| .BI block |
| -Use Linux Block Layer ioctl() and sysfs for admin commands |
| -.TP |
| -.BI file_as_ns |
| -Use file-stat as to construct NVMe idfy responses |
| +Use Linux Block Layer ioctl() and sysfs for admin commands. |
| .RE |
| .RE |
| .TP |
| .BI (xnvme)xnvme_dev_nsid\fR=\fPint |
| -xnvme namespace identifier, for userspace NVMe driver. |
| +xnvme namespace identifier for userspace NVMe driver such as SPDK. |
| .TP |
| .BI (xnvme)xnvme_iovec |
| If this option is set, xnvme will use vectored read/write commands. |