Details
-
Bug
-
Resolution: Fixed
-
Minor
-
None
-
None
-
3
-
9223372036854775807
Description
There is a large degree of inefficiency/wasted time in the DIO/AIO path. This does not show up for DIO normally because of the waiting model. but it shows up easily in AIO.
This ticket is to cover a set of improvements to DIO/AIO performance, which will also improve DIO performance once the waiting model is adjusted. (More on this in LU-13798.)
There is a grab bag of patches to be submitted here, and some further proposals that will probably end up in other tickets.
The essence of the improvements is that all pages in a DIO submission are the same, and therefore much of the work done on a per-page basis is irrelevant and can be skipped for DIO. Note this statement is still compatible with unaligned DIO if it can be implemented in the future - In the case of unaligned DIO, only the first and last pages are different, and that can still be handled.
Patches and benchmarks on each patch forthcoming.
The total effect of the initial set of patches on my testbed is to raise AIO/DIO performance from around 5 GiB/s to around 9 GiB/s. I'll get more in to what else can be done shortly.
Attachments
Issue Links
- is related to
-
LU-13798 Improve direct i/o performance with multiple stripes: Submit all stripes of a DIO and then wait
- Resolved
- is related to
-
LU-13802 New i/o path: Buffered i/o as DIO
- Open
-
LU-13805 i/o path: Unaligned direct i/o
- Open
-
LU-13814 DIO performance: cl_page struct removal for DIO path
- Open
-
LU-15483 Minor DIO test improvements
- Open
-
LU-13801 Enable io_uring interface for Lustre client
- Resolved