¿Qué es IOMMU y mejorará el rendimiento de mi VM?

28

El chipset de mi placa base admite esta función IOMMU , he leído (pero no entiendo realmente) que mejora el rendimiento de la VM al permitir que la VM haga uso del hardware físico real en lugar del hardware virtual.

¿Esto realmente trae una mejora de rendimiento en la VM? y si es así, ¿cómo puedo hacer que Virtualbox se beneficie de eso?

Uri Herrera
fuente

Respuestas:

21

En resumen, la única forma en que un IOMMU lo ayudará es si comienza a asignar recursos HW directamente a la VM. Solo tenerlo no hace las cosas más rápido.

Sería útil saber exactamente qué Motherboard / CPU anuncia esta característica. IOMMU es un mecanismo de mapeo de E / S específico del sistema y se puede usar con la mayoría de los dispositivos.

IOMMU suena como un nombre genérico para Intel VT-d y AMD IOV. En cuyo caso no creo que pueda multiplexar dispositivos, es muy parecido a la transferencia PCI antes de que existieran todas estas elegantes instrucciones de virtualización :). SR-IOV es diferente, el periférico debe llevar el soporte. El HW sabe que se está virtualizando y puede delegar una porción de HW de sí mismo a la VM. Muchas máquinas virtuales pueden comunicarse con un dispositivo SR-IOV simultáneamente con una sobrecarga muy baja.

Lo único más rápido que SR-IOV es el paso a través de PCI, aunque en ese caso solo una VM puede hacer uso de ese dispositivo, ni siquiera el sistema operativo host puede usarlo. El paso a través de PCI sería útil para, por ejemplo, una VM que ejecuta una base de datos intensa que se beneficiaría de estar conectada a una SAN de FiberChannel.

Sin embargo, acercarse al HW tiene limitaciones, hace que sus máquinas virtuales sean menos portátiles para implementaciones que requieren migración en vivo, por ejemplo. Esto se aplica tanto a la transferencia de SR-IOV como de PCI.

Las implementaciones de Linux virtualizadas predeterminadas generalmente usan VirtIO, que es bastante rápido para comenzar.

ppetraki
fuente
Lo leí en la Guía del usuario de mi placa base, diciendo que si el Chipset lo admite, podría proporcionar algún tipo de acceso físico al hardware del Host.
Uri Herrera
Acabo de leer el Wiki de Xen, IOMMU parece hacer lo mismo que SR-IOV también, pero no uso Xen, y aparentemente Virtualbox no hace un buen uso de esto.
Uri Herrera
No, la mayoría de las computadoras no tienen una IOMMU. ¿Quizás estás pensando en IO-APIC?
psusi
1
En realidad, este artículo de Wikipedia explica esto bastante bien: en.wikipedia.org/wiki/X86_virtualization . La gran victoria para el soporte de IOMMU es que podemos cambiar los dispositivos por los que pasamos en tiempo de ejecución. Antes teníamos que especificar un rango de dispositivos en la lista de argumentos del kernel y solo esos periféricos eran elegibles para el paso a través. IOMMU le permite reasignar dispositivos como mejor le parezca. Nuevamente, este es acceso exclusivo, ya sea que su host lo esté utilizando o una de las máquinas virtuales lo esté. Esta es realmente una característica centrada en el servidor.
ppetraki
1
@UriHerrera Le recomiendo que use KVM, que también es compatible con las extensiones de virtualización de Intel y AMD. Es más flexible y tiene más funciones, incluidas las que se encuentran en VirtualBox.
Oxwivi