Re: [PATCH V2] vhost: introduce O(1) vq metadata cache

From: Michael S. Tsirkin
Date: Mon Feb 27 2017 - 14:02:41 EST


On Wed, Feb 15, 2017 at 01:37:17PM +0800, Jason Wang wrote:
>
>
> On 2016å12æ14æ 17:53, Jason Wang wrote:
> > When device IOTLB is enabled, all address translations were stored in
> > interval tree. O(lgN) searching time could be slow for virtqueue
> > metadata (avail, used and descriptors) since they were accessed much
> > often than other addresses. So this patch introduces an O(1) array
> > which points to the interval tree nodes that store the translations of
> > vq metadata. Those array were update during vq IOTLB prefetching and
> > were reset during each invalidation and tlb update. Each time we want
> > to access vq metadata, this small array were queried before interval
> > tree. This would be sufficient for static mappings but not dynamic
> > mappings, we could do optimizations on top.
> >
> > Test were done with l2fwd in guest (2M hugepage):
> >
> > noiommu | before | after
> > tx 1.32Mpps | 1.06Mpps(82%) | 1.30Mpps(98%)
> > rx 2.33Mpps | 1.46Mpps(63%) | 2.29Mpps(98%)
> >
> > We can almost reach the same performance as noiommu mode.
> >
> > Signed-off-by: Jason Wang<jasowang@xxxxxxxxxx>
> > ---
> > Changes from V1:
> > - silent 32bit build warning
>
> ping

Could you rebase pls?
I pushed my tree into linux next.

--
MST