DMA API Performance and Contention on IOMMU Enabled Environments
summary
Shows that the DMA API plus IOMMU allocations create real contention: a synthetic driver issues 1,000 mappings at once and repeats that to reach a million dma_map calls, and a naïve per-window bitmap with one global lock collapses under concurrency. Mapping whole pages in the driver raises NIC throughput from about 3 Gbps to 9.5 Gbps after page-map optimization. Tests on PowerPC show ~1M IOMMU inserts in ~6.7s per core up to core count, while Intel’s red‑black allocator and a single-lock bitmap balloon to minutes; per‑pool bitmaps and avoiding holding the lock during MMU insert give ~30% gains.
AI-written summary · about
