coIOMMU: A Virtual IOMMU with Cooperative DMA Buffer Tracking for Efficient Memory
summary
coIOMMU implements a virtual IOMMU in QEMU/KVM with a shared DMA Tracking Table (DTT), a pmanager, and a remap engine, and shows that cooperative tracking cuts host notifications by over 99% and reduces pinned guest pages to about 0.5% versus full static pinning. It uses smart pinning (instant plus speculative) and lazy unpinning, incurs negligible I/O overhead across networking, storage, and GPU workloads, and sustains guest DMA-remapping semantics while enabling fine-grained host memory management.
AI-written summary · about
chapters (21)
- 0:00Intro
- 1:01Static Pinning in Direct I/O
- 1:59The Problem of Static Pinning
- 2:29Virtual IOMMU (VIOMMU)
- 4:09The Reality
- 5:03Motivation
- 7:25Cooperative DMA Buffer Tracking
- 8:42colOMMU Architecture
- 10:18DMA Tracking Table (DTT)
- 10:56Fine-grained Pinning
- 12:02Guest Mapping Operations
- 13:01Lazy Unpinning & Speculative Pinning
- 13:32DMA Tracking vs. DMA Remapping
- 15:19Implementation
- 18:21Evaluation
- 19:50Performance
- 20:02Memory Footprint
- 20:35Memory Overcommitment
- 21:50DMA Temporal Locality
- 22:08Future Work
- 23:18Conclusions
