All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2 0/4]IOMMU: avoid lock contention in iova allocation
@ 2016-01-09  0:44 Shaohua Li
       [not found] ` <cover.1452297604.git.shli-b10kYP2dOMg@public.gmane.org>
  0 siblings, 1 reply; 14+ messages in thread
From: Shaohua Li @ 2016-01-09  0:44 UTC (permalink / raw)
  To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA; +Cc: Kernel-team-b10kYP2dOMg

Hi,

iova alloc/free causes big lock contention, which could be easily demonstrated
with iperf workload. Previously I posted a patchset:
http://lists.linuxfoundation.org/pipermail/iommu/2015-November/014984.html

the concern is it's not generic. This is another try for the issue. This
version implements a per-cpu iova cache for small size DMA allocation (<= 64k),
which should be generic enough and so we can do batch allocation. iova free
could be easily batched too. With batch alloc/free, iova lock contention
disappears. Performance result with this patchset is nearly the same as the
previous one in the same test.

After this patchset, async_umap_flush_lock becomes the hotest lock in
intel-iommu, but not very bad. That will be something we need work on in the
future.

Thanks,
Shaohua

Shaohua Li (4):
  IOMMU: add a percpu cache for iova allocation
  iommu: free_iova doesn't need lock twice
  intel-iommu: remove find_iova in unmap path
  intel-iommu: do batch iova free

 drivers/iommu/intel-iommu.c |  77 +++++++++++++------
 drivers/iommu/iova.c        | 177 +++++++++++++++++++++++++++++++++++---------
 include/linux/iova.h        |  10 +++
 3 files changed, 208 insertions(+), 56 deletions(-)

-- 
2.4.6

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2016-01-22 11:35 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-09  0:44 [PATCH V2 0/4]IOMMU: avoid lock contention in iova allocation Shaohua Li
     [not found] ` <cover.1452297604.git.shli-b10kYP2dOMg@public.gmane.org>
2016-01-09  0:44   ` [PATCH V2 1/4] IOMMU: add a percpu cache for " Shaohua Li
2016-01-09  0:44   ` [PATCH V2 2/4] iommu: free_iova doesn't need lock twice Shaohua Li
2016-01-09  0:44   ` [PATCH V2 3/4] intel-iommu: remove find_iova in unmap path Shaohua Li
2016-01-09  0:44   ` [PATCH V2 4/4] intel-iommu: do batch iova free Shaohua Li
2016-01-10 22:56   ` [PATCH V2 0/4]IOMMU: avoid lock contention in iova allocation Adam Morrison
     [not found]     ` <20160110225610.GA16778-FrESSTt7Abv7r6psnUbsSmZHpeb/A1Y/@public.gmane.org>
2016-01-11  3:37       ` Shaohua Li
     [not found]         ` <20160111033749.GA1811285-tb7CFzD8y5b7E6g3fPdp/g2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2016-01-20 12:21           ` Joerg Roedel
     [not found]             ` <20160120122103.GE18805-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2016-01-20 18:10               ` Shaohua Li
     [not found]                 ` <20160120180956.GA230160-tb7CFzD8y5b7E6g3fPdp/g2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2016-01-20 20:47                   ` Adam Morrison
     [not found]                     ` <CAHMfzJmAUWT8X4492_84smUgQMW9pW1yNfOxC6e7ur9TitA2cA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-01-20 21:14                       ` Shaohua Li
     [not found]                         ` <20160120211421.GA684235-tb7CFzD8y5b7E6g3fPdp/g2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2016-01-21 23:14                           ` Adam Morrison
     [not found]                             ` <20160121231326.GA16905-FrESSTt7Abv7r6psnUbsSmZHpeb/A1Y/@public.gmane.org>
2016-01-22  0:18                               ` Shaohua Li
     [not found]                                 ` <20160122001801.GA4114061-tb7CFzD8y5b7E6g3fPdp/g2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2016-01-22 11:35                                   ` Adam Morrison

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.