• Mike Christie's avatar
    vhost_scsi: add support for worker ioctls · d74b55e6
    Mike Christie authored
    This has vhost-scsi support the worker ioctls by calling the
    vhost_worker_ioctl helper.
    
    With a single worker, the single thread becomes a bottlneck when trying
    to use 3 or more virtqueues like:
    
    fio --filename=/dev/sdb  --direct=1 --rw=randrw --bs=4k \
    --ioengine=libaio --iodepth=128  --numjobs=3
    
    With the patches and doing a worker per vq, we can scale to at least
    16 vCPUs/vqs (that's my system limit) with the same command fio command
    above with numjobs=16:
    
    fio --filename=/dev/sdb  --direct=1 --rw=randrw --bs=4k \
    --ioengine=libaio --iodepth=64  --numjobs=16
    
    which gives around 2002K IOPs.
    
    Note that for testing I dropped depth to 64 above because the vhost/virt
    layer supports only 1024 total commands per device. And the only tuning I
    did was set LIO's emulate_pr to 0 to avoid LIO's PR lock in the main IO
    path which becomes an issue at around 12 jobs/virtqueues.
    Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
    Message-Id: <20230626232307.97930-17-michael.christie@oracle.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    d74b55e6
scsi.c 64.3 KB