O que é o IOMMU e ele melhorará o desempenho da minha VM?

28

O chipset da minha placa-mãe suporta esse recurso IOMMU , eu li (mas realmente não entendo) que melhora o desempenho da VM, permitindo que a VM faça uso do hardware físico real em vez do hardware virtual.

Isso realmente traz uma melhoria de desempenho na VM? e se isso acontecer, como posso fazer o Virtualbox se beneficiar disso?

Uri Herrera
fonte

Respostas:

21

Resumindo, a única maneira de um IOMMU ajudá-lo é se você começar a atribuir recursos de HW diretamente à VM. Apenas tê-lo não torna as coisas mais rápidas.

Seria útil saber exatamente o que a placa-mãe / CPU está anunciando esse recurso. O IOMMU é um mecanismo de mapeamento de E / S específico do sistema e pode ser usado com a maioria dos dispositivos.

IOMMU soa como um nome genérico para Intel VT-d e AMD IOV. Nesse caso, acho que você não pode multiplexar dispositivos, é muito parecido com a passagem do PCI antes de todas essas instruções sofisticadas de virtualização existirem :). SR-IOV é diferente, o próprio periférico deve carregar o suporte. O HW sabe que está sendo virtualizado e pode delegar uma fatia de HW à VM. Muitas VMs podem conversar com um dispositivo SR-IOV simultaneamente com sobrecarga muito baixa.

A única coisa mais rápida que o SR-IOV é a passagem do PCI, embora nesse caso apenas uma VM possa fazer uso desse dispositivo, nem mesmo o sistema operacional do host. A passagem do PCI seria útil para, digamos, uma VM que execute um banco de dados intenso que se beneficiaria da conexão com uma SAN FiberChannel.

Aproximar-se do HW tem limitações, no entanto, torna suas VMs menos portáteis para implantações que requerem migração ao vivo, por exemplo. Isso se aplica à passagem SR-IOV e PCI.

As implantações Linux virtualizadas padrão geralmente usam o VirtIO, o que é bastante rápido para começar.

ppetraki
fonte
Li isso no Guia do usuário da minha placa-mãe, dizendo que, se o chipset suportar, ele poderá fornecer algum tipo de acesso físico ao hardware do host.
Uri Herrera
Acabei de ler o Xen Wiki, o IOMMU parece fazer o que o SR-IOV também faz, mas eu não uso o Xen e, aparentemente, o Virtualbox não faz bom uso disso.
Uri Herrera
Não, a maioria dos computadores não possui um IOMMU. Talvez você esteja pensando em IO-APIC?
Psusi
1
Na verdade, este artigo da Wikipedia explica isso muito bem: en.wikipedia.org/wiki/X86_virtualization . A grande vitória para o suporte da IOMMU é que podemos alterar os dispositivos pelos quais passamos em tempo de execução. Antes, tínhamos que especificar uma variedade de dispositivos na lista arg do kernel e apenas esses periféricos eram elegíveis para transmissão. O IOMMU permite remapear os dispositivos como achar melhor. Novamente, esse é um acesso exclusivo, ou seu host está usando, ou uma das VMs está. Este é realmente um recurso centralizado no servidor.
Pptraki
1
@UriHerrera Eu recomendo que você use o KVM, que também suporta as extensões de virtualização da Intel e da AMD. É mais flexível e possui mais recursos, incluindo os encontrados no VirtualBox.
Oxwivi