Linux is a registered trademark of Linus Torvalds.
DMA API Performance and Contention
- n IOMMU Enabled Environments
- Thadeu Cascardo
<cascardo@linux.vnet.ibm.com>
DMA API Performance and Contention on IOMMU Enabled Environments - - PowerPoint PPT Presentation
DMA API Performance and Contention on IOMMU Enabled Environments Thadeu Cascardo <cascardo@linux.vnet.ibm.com> Linux is a registered trademark of Linus Torvalds. Disclaimer There is some bias towards PPC64. Please, help me
Linux is a registered trademark of Linus Torvalds.
<cascardo@linux.vnet.ibm.com>
I/O Virtualization in the form of PCI passthrough Provides:
– Isolation between guests – Performance – Stability – Debug
DMA API:
– virtual address -> IO/DMA address
IOMMU:
– translates addresses coming from the bus
into memory addresses
Pseries use paravirtualized IOMMU KVM PVDMA didn't make into mainline (5-ish years old) Advantage: don't have to pin whole guest memory
Direct PVDMA Map Adds offset Allocate IOVA, insert mapping Unmap Nothing Remove mapping, free IOVA
10Gbps NIC device driver mapped for every packet
After allocation chunks from mapped pages
1 2 4 8 16 32 64 128 256 512 1024 50 100 150 200 250 300 350 400 450 IOMMU only Direct DMA Direct DMA IOMMU Bitmap IOMMU Bitmap Pool IOMMU RBTree IOMMU
Threads Time (s)
1 2 4 8 16 32 64 128 256 0.1 1 10 100 1M IOMMU Ops Threads Time (s)
1 2 4 8 16 32 64 128 256 512 1024 0.01 0.1 1 10 1M Direct DMA map Threads Time (s)
1 2 4 8 16 32 64 128 256 0.1 1 10 100 1M Direct DMA IOMMU Ops Threads Time (s)
1 2 4 8 16 32 64 0.1 1 10 100 1000 1M Bitmap DMA IOMMU Ops Threads Time (s)
1 2 4 8 16 32 64 128 256 0.1 1 10 100 1000 1M Bitmap Pool DMA IOMMU Ops Threads Time (s)
1 2 4 8 1 10 100 1000 1M RBTree DMA IOMMU Ops Threads Time (s)
1 2 4 8 1 10 100 1000 1M RBTree DMA IOMMU Ops on X86 Threads Time (s)
performance