[PATCHSET v7] io_uring IO interface

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

 



Here's v7 of the io_uring interface. Not a lot of changes this time
around, mostly corner cases and error handling that hadn't been
exercised yet.

Only new "feature" is an improvement in sequential buffered IO
performance. This is done by piggy backing on to existing async work if
we're sequential to the previous work item, and it hasn't finished yet.
This greatly reduces the overhead, context switches, and increases the
performance a lot. Using io_uring-cp, as test program that does cp with
io_uring, I saw a 5x improvement in speed when copying a large file.
It's now faster than plan 'cp.

The x86/x86-64 system calls were renumbered, so if you are testing,
be sure to pull apply the renumbering. The fio and liburing repos have
been updated.

The liburing git repo now has a man page for io_uring_register(2),
thanks to Jeff Moyer. Outside of that, not much activity there since
last time. Clone the liburing repo here:

git://git.kernel.dk/liburing

Patches are against 5.0-rc3, and can also be found in my io_uring branch
here:

git://git.kernel.dk/linux-block io_uring

Changes since v6:
- Fix leak of iovec in write path for larger writes
- Fix CQ event filling for error handling of workqueue buffered items
- Improve sequential buffered IO performance
- Fix leak of accounted mem in error path for io_uring_create() (Roman)
- Rebase on v5.0-rc3
- Check for entries == 0 in io_uring_create (Jeff)
- Renumber system calls so they are ready for Arnds unification

 Documentation/filesystems/vfs.txt      |    3 +
 arch/x86/entry/syscalls/syscall_32.tbl |    3 +
 arch/x86/entry/syscalls/syscall_64.tbl |    3 +
 block/bio.c                            |   59 +-
 fs/Makefile                            |    1 +
 fs/block_dev.c                         |   19 +-
 fs/file.c                              |   15 +-
 fs/file_table.c                        |    9 +-
 fs/gfs2/file.c                         |    2 +
 fs/io_uring.c                          | 2540 ++++++++++++++++++++++++
 fs/iomap.c                             |   48 +-
 fs/xfs/xfs_file.c                      |    1 +
 include/linux/bio.h                    |   14 +
 include/linux/blk_types.h              |    1 +
 include/linux/file.h                   |    2 +
 include/linux/fs.h                     |    6 +-
 include/linux/iomap.h                  |    1 +
 include/linux/sched/user.h             |    2 +-
 include/linux/syscalls.h               |    7 +
 include/uapi/asm-generic/unistd.h      |    8 +-
 include/uapi/linux/io_uring.h          |  141 ++
 init/Kconfig                           |    9 +
 kernel/sys_ni.c                        |    4 +
 23 files changed, 2857 insertions(+), 41 deletions(-)

-- 
Jens Axboe





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux