Am 11.03.2025 um 14:26 hat Stefan Hajnoczi geschrieben:
> v4:
> - Squash fixup commit properly this time >_< [Peter]
> v3:
> - Use vq_aio_context[VIRTIO_SCSI_VQ_NUM_FIXED] as the AioContext for the Block
>   Backend [Kevin]
> v2:
> - Only expose cmd vqs via iothread-vq-mapping [Kevin, Peter]
> 
> Implement --device virtio-scsi-pci,iothread-vq-mapping= support so that
> virtqueues can be assigned to different IOThreads. This improves SMP guest
> scalability where I/O-intensive applications can become bottlenecked on a
> single IOThread.
> 
> The following benchmark results show the effect of iothread-vq-mapping. fio
> randread 4k iodepth=64 results from a 4 vCPU guest with an Intel P4800X SSD:
> iothreads IOPS
> ------------------------------
> 1         189576
> 2         312698
> 4         346744
> 
> The virtio-scsi device model and core SCSI emulation currently assume that
> requests are processed in a single AioContext. This patch series goes about
> modifying this as follows:
> 
> scsi-disk: drop unused SCSIDiskState->bh field
> dma: use current AioContext for dma_blk_io()
> 
> Make dma-helpers.c support the QEMU multi-queue block layer by using
> qemu_get_current_aio_context().
> 
> scsi: track per-SCSIRequest AioContext
> scsi: introduce requests_lock
> 
> Make the core SCSI emulation code support processing requests in multiple
> AioContexts by protecting the per-SCSIDevice requests list.
> 
> virtio-scsi: introduce event and ctrl virtqueue locks
> virtio-scsi: protect events_dropped field
> virtio-scsi: perform TMFs in appropriate AioContexts
> 
> Make the virtio-scsi emulation code support processing requests in multiple
> AioContexts. The event and ctrl virtqueues can interact with multiple
> AioContexts. Especially the SCSI Task Management Functions (TMFs) handled by
> the ctrl virtqueue need to be made thread-safe.
> 
> virtio-blk: extract cleanup_iothread_vq_mapping() function
> virtio-blk: tidy up iothread_vq_mapping functions
> virtio: extract iothread-vq-mapping.h API
> virtio-scsi: add iothread-vq-mapping parameter
> 
> Port over the iothread-vq-mapping qdev property from virtio-blk to 
> virtio-scsi.
> 
> virtio-scsi: handle ctrl virtqueue in main loop
> 
> Simplify TMF handling now that there is no longer a single AioContext where 
> all
> requests are processed.
> 
> virtio-scsi: only expose cmd vqs via iothread-vq-mapping
> 
> Make the user interface more intuitive.
> 
> Stefan Hajnoczi (13):
>   scsi-disk: drop unused SCSIDiskState->bh field
>   dma: use current AioContext for dma_blk_io()
>   scsi: track per-SCSIRequest AioContext
>   scsi: introduce requests_lock
>   virtio-scsi: introduce event and ctrl virtqueue locks
>   virtio-scsi: protect events_dropped field
>   virtio-scsi: perform TMFs in appropriate AioContexts
>   virtio-blk: extract cleanup_iothread_vq_mapping() function
>   virtio-blk: tidy up iothread_vq_mapping functions
>   virtio: extract iothread-vq-mapping.h API
>   virtio-scsi: add iothread-vq-mapping parameter
>   virtio-scsi: handle ctrl virtqueue in main loop
>   virtio-scsi: only expose cmd vqs via iothread-vq-mapping
> 
>  include/hw/scsi/scsi.h                  |   8 +-
>  include/hw/virtio/iothread-vq-mapping.h |  45 ++
>  include/hw/virtio/virtio-scsi.h         |  15 +-
>  include/system/dma.h                    |   3 +-
>  hw/block/virtio-blk.c                   | 132 +-----
>  hw/ide/core.c                           |   3 +-
>  hw/ide/macio.c                          |   3 +-
>  hw/scsi/scsi-bus.c                      | 121 ++++--
>  hw/scsi/scsi-disk.c                     |  24 +-
>  hw/scsi/virtio-scsi-dataplane.c         | 103 +++--
>  hw/scsi/virtio-scsi.c                   | 542 ++++++++++++++----------
>  hw/virtio/iothread-vq-mapping.c         | 131 ++++++
>  system/dma-helpers.c                    |   8 +-
>  hw/virtio/meson.build                   |   1 +
>  14 files changed, 683 insertions(+), 456 deletions(-)
>  create mode 100644 include/hw/virtio/iothread-vq-mapping.h
>  create mode 100644 hw/virtio/iothread-vq-mapping.c

Thanks, applied to the block branch.

Kevin


Reply via email to