[lkml]   [2018]   [Mar]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: aio poll, io_pgetevents and a new in-kernel poll API V5

On Mon, Mar 05, 2018 at 01:27:07PM -0800, Christoph Hellwig wrote:
> Hi all,
> this series adds support for the IOCB_CMD_POLL operation to poll for the
> readyness of file descriptors using the aio subsystem. The API is based
> on patches that existed in RHAS2.1 and RHEL3, which means it already is
> supported by libaio. To implement the poll support efficiently new
> methods to poll are introduced in struct file_operations: get_poll_head
> and poll_mask. The first one returns a wait_queue_head to wait on
> (lifetime is bound by the file), and the second does a non-blocking
> check for the POLL* events. This allows aio poll to work without
> any additional context switches, unlike epoll.
> To make the interface fully useful a new io_pgetevents system call is
> added, which atomically saves and restores the signal mask over the
> io_pgetevents system call. It it the logical equivalent to pselect and
> ppoll for io_pgetevents.
> The corresponding libaio changes for io_pgetevents support and
> documentation, as well as a test case will be posted in a separate
> series.
> The changes were sponsored by Scylladb, and improve performance
> of the seastar framework up to 10%, while also removing the need
> for a privileged SCHED_FIFO epoll listener thread.
> git:// aio-poll.5
> Gitweb:
> Libaio changes:
> io-poll
> Seastar changes (not updated for the new io_pgetevens ABI yet):
> Changes since V4:
> - rebased ontop of Linux 4.16-rc4
> Changes since V3:
> - remove the pre-sleep ->poll_mask call in vfs_poll,
> allow ->get_poll_head to return POLL* values.
> Changes since V2:
> - removed a double initialization
> - new vfs_get_poll_head helper
> - document that ->get_poll_head can return NULL
> - call ->poll_mask before sleeping
> - various ACKs
> - add conversion of random to ->poll_mask
> - add conversion of af_alg to ->poll_mask
> - lacking ->poll_mask support now returns -EINVAL for IOCB_CMD_POLL
> - reshuffled the series so that prep patches and everything not
> requiring the new in-kernel poll API is in the beginning
> Changes since V1:
> - handle the NULL ->poll case in vfs_poll
> - dropped the file argument to the ->poll_mask socket operation
> - replace the ->pre_poll socket operation with ->get_poll_head as
> in the file operations
---end quoted text---

 \ /
  Last update: 2018-03-13 08:47    [W:0.217 / U:0.248 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site