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