[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 3/4] virtio: use defer_call() in virtio_irqfd_notify()
On Thu, Aug 17, 2023 at 11:58:46AM -0400, Stefan Hajnoczi wrote: > virtio-blk and virtio-scsi invoke virtio_irqfd_notify() to send Used > Buffer Notifications from an IOThread. This involves an eventfd > write(2) syscall. Calling this repeatedly when completing multiple I/O > requests in a row is wasteful. > > Use the defer_call() API to batch together virtio_irqfd_notify() calls > made during thread pool (aio=threads), Linux AIO (aio=native), and > io_uring (aio=io_uring) completion processing. > > Behavior is unchanged for emulated devices that do not use > defer_call_begin()/defer_call_end() since defer_call() immediately > invokes the callback when called outside a > defer_call_begin()/defer_call_end() region. > > fio rw=randread bs=4k iodepth=64 numjobs=8 IOPS increases by ~9% with a > single IOThread and 8 vCPUs. iodepth=1 decreases by ~1% but this could > be noise. Detailed performance data and configuration specifics are > available here: > https://gitlab.com/stefanha/virt-playbooks/-/tree/blk_io_plug-irqfd > > This duplicates the BH that virtio-blk uses for batching. The next > commit will remove it. > > Signed-off-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx> > --- > block/io_uring.c | 6 ++++++ > block/linux-aio.c | 4 ++++ > hw/virtio/virtio.c | 11 ++++++++++- > util/thread-pool.c | 5 +++++ > 4 files changed, 25 insertions(+), 1 deletion(-) Reviewed-by: Eric Blake <eblake@xxxxxxxxxx> -- Eric Blake, Principal Software Engineer Red Hat, Inc. Virtualization: qemu.org | libguestfs.org
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |