Короче говоря, единственный способ, которым IOMMU поможет вам, - это если вы начнете назначать ресурсы HW непосредственно виртуальной машине. Просто это не делает вещи быстрее.
Было бы полезно точно знать, какая материнская плата / процессор рекламирует эту функцию. IOMMU является системным механизмом отображения ввода-вывода и может использоваться с большинством устройств.
IOMMU звучит как общее название для Intel VT-d и AMD IOV. В этом случае я не думаю, что вы можете мультиплексировать устройства, это очень похоже на пропуск PCI, прежде чем существовали все эти причудливые инструкции по виртуализации :). SR-IOV отличается, само периферийное устройство должно нести поддержку. HW знает, что он виртуализирован, и может делегировать часть HW себе виртуальной машине. Многие виртуальные машины могут взаимодействовать с устройством SR-IOV одновременно с очень низкими издержками.
Единственное, что быстрее, чем SR-IOV, - это пропуск PCI, хотя в этом случае только одна виртуальная машина может использовать это устройство, даже операционная система хоста не может его использовать. Прохождение PCI было бы полезно, скажем, для виртуальной машины, которая работает с интенсивной базой данных, которая выиграет от подключения к FiberChannel SAN.
Приближение к HW имеет свои ограничения, однако делает виртуальные машины менее переносимыми для развертываний, которые требуют, например, динамической миграции. Это относится как к проходу SR-IOV, так и к PCI.
Виртуализированные развертывания Linux по умолчанию обычно используют VirtIO, что довольно быстро для начала.