Messages in this thread | | | Date | Wed, 20 Mar 2013 10:53:59 +0100 | From | Paolo Bonzini <> | Subject | Re: [PATCH V5 4/5] virtio-scsi: introduce multiqueue support |
| |
Il 20/03/2013 02:46, Venkatesh Srinivas ha scritto: > This looks pretty good! > > I rather like the (lack of) locking in I/O completion (around the req > count vs. target/queue binding). It is unfortunate that you need to hold > the per-target lock in virtscsi_pick_vq() though; have any idea > how much that lock hurts?
It doesn't hurt, the lock is mostly uncontended.
- if you have lots of I/O, it's held for a very small period of time; if you have little I/O, it's uncontended anyway.
- the SCSI layer will serialize on the host lock anyway before calling into the LLD. Locks are "pipelined" so that in the end the host lock will be a bigger bottleneck than the others.
Most of the time it only costs 2 extra atomic operations, which should be galf a microsecond or less.
Paolo
> Just two minor comments: > > (in struct virtio_scsi_target_data): > + /* This spinlock never help at the same time as vq_lock. */ > ^^^^ held? > > (in struct virtio_scsi): > + /* Does the affinity hint is set for virtqueues? */ > Could you rephrase that, please? > > Tested on qemu and w/ Google Compute Engine's virtio-scsi device. > > Reviewed-and-tested-by: Venkatesh Srinivas <venkateshs@google.com> > > Thanks, > -- vs;
| |