[PATCHSET v7] Support for polled and buffed aio (and more)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For the grand introduction to this feature, see my original posting
here:

https://lore.kernel.org/linux-block/20181117235317.7366-1-axboe@xxxxxxxxx/

and refer to the previous postings of this patchset for whatever
features were added there. Particularly v4 has some performance results:

https://lore.kernel.org/linux-block/20181130165646.27341-1-axboe@xxxxxxxxx/

See changelog for other changes, but this specifically adds support for
kernel side backing for the SQ/CQ ring interface. There are two modes:

1) IOCTX_FLAG_SQTHREAD. This adds a single thread backing. Right now
   this needs to be woken up through io_ring_enter(2), but I'm also
   planning a polled mode where an application can submit IO without
   ever entering the kernel.

2) IOCTX_FLAG_SQWQ. Like SQTHREAD, this adds a kernel side backing for
   IO submission. This one uses a workqueue, so we can have higher
   levels of concurrency. The main use case here is buffered AIO. With
   this, we can support buffered aio with QD > 1. For cached data, we
   avoid doing a workqueue punt for reads. So those should return
   without any extra context switches.


Find it here for your cgit browsing:

http://git.kernel.dk/cgit/linux-block/log/?h=aio-poll

or clone/pull from this branch:

git://git.kernel.dk/linux-block aio-poll

Since v6:

- Add support for async buffered IO, through kthread/workqueue backing
- Rename aio_kiocb flags
- Comment new syscalls
- Bug fixes

 Documentation/filesystems/vfs.txt      |    3 +
 Documentation/sysctl/fs.txt            |    8 +-
 arch/x86/entry/syscalls/syscall_64.tbl |    2 +
 block/bio.c                            |   33 +-
 fs/aio.c                               | 1914 ++++++++++++++++++++++--
 fs/block_dev.c                         |   34 +-
 fs/file.c                              |   15 +-
 fs/file_table.c                        |   10 +-
 fs/gfs2/file.c                         |    2 +
 fs/iomap.c                             |   57 +-
 fs/xfs/xfs_file.c                      |    1 +
 include/linux/bio.h                    |    1 +
 include/linux/blk_types.h              |    2 +
 include/linux/file.h                   |    2 +
 include/linux/fs.h                     |    5 +-
 include/linux/iomap.h                  |    1 +
 include/linux/syscalls.h               |    5 +
 include/uapi/asm-generic/unistd.h      |    4 +-
 include/uapi/linux/aio_abi.h           |   35 +
 kernel/sys_ni.c                        |    2 +
 20 files changed, 1939 insertions(+), 197 deletions(-)

-- 
Jens Axboe





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux