Qu'est-ce que l'IOMMU et améliorera-t-il les performances de ma VM?

28

Le chipset de ma carte mère prend en charge cette fonctionnalité IOMMU , j'ai lu (mais je ne comprends pas vraiment) qu'il améliore les performances de la machine virtuelle en permettant à la machine virtuelle d'utiliser le matériel physique réel au lieu du matériel virtuel.

Est-ce que cela apporte vraiment une amélioration des performances dans la machine virtuelle? et si c'est le cas, comment puis-je faire profiter Virtualbox de cela?.

Uri Herrera
la source

Réponses:

21

Pour faire court, la seule façon pour une IOMMU de vous aider est de commencer à affecter des ressources matérielles directement à la machine virtuelle. Le simple fait de ne pas accélérer les choses.

Il serait utile de savoir exactement quelle carte mère / CPU annonce cette fonctionnalité. IOMMU est un mécanisme de mappage d'E / S spécifique au système et peut être utilisé avec la plupart des appareils.

IOMMU ressemble à un nom générique pour Intel VT-d et AMD IOV. Dans ce cas, je ne pense pas que vous puissiez multiplexer des périphériques, c'est un peu comme le passthrough PCI avant que toutes ces instructions de virtualisation sophistiquées n'existent :). SR-IOV est différent, le périphérique lui-même doit porter le support. Le HW sait qu'il est virtualisé et peut déléguer une tranche HW de lui-même à la VM. De nombreuses machines virtuelles peuvent communiquer avec un périphérique SR-IOV en même temps que les frais généraux sont très faibles.

La seule chose plus rapide que SR-IOV est le relais PCI bien que dans ce cas, une seule machine virtuelle puisse utiliser ce périphérique, même le système d'exploitation hôte ne peut pas l'utiliser. Le passthrough PCI serait utile pour, disons, une machine virtuelle qui exécute une base de données intense qui gagnerait à être attachée à un SAN FibreChannel.

Se rapprocher du matériel HW a cependant des limites, il rend vos machines virtuelles moins portables pour les déploiements qui nécessitent une migration en direct par exemple. Cela s'applique à la fois au SR-IOV et au passthrough PCI.

Les déploiements Linux virtualisés par défaut utilisent généralement VirtIO qui est assez rapide pour commencer.

ppetraki
la source
J'ai lu cela dans le guide de l'utilisateur de ma carte mère, disant que si le chipset le prend en charge, il pourrait fournir une sorte d'accès physique au matériel hôte.
Uri Herrera
Je viens de lire le wiki Xen, IOMMU semble faire ce que fait SR-IOV aussi, mais je n'utilise pas Xen, et apparemment Virtualbox n'en fait pas bon usage.
Uri Herrera
Non, la plupart des ordinateurs n'ont pas d'IOMMU. Vous pensez peut-être à IO-APIC?
psusi
1
En fait, cet article Wikipedia explique assez bien cela: en.wikipedia.org/wiki/X86_virtualization . La grande victoire pour le support IOMMU est que nous pouvons changer les appareils que nous traversons au moment de l'exécution. Avant, nous devions spécifier une gamme de périphériques dans la liste d'arguments du noyau et seuls ces périphériques étaient éligibles pour le passthrough. IOMMU vous permet de remapper les appareils comme bon vous semble. Encore une fois, il s'agit d'un accès exclusif, que votre hôte l'utilise ou que l'une des machines virtuelles le soit. C'est vraiment une fonctionnalité centrée sur le serveur.
ppetraki
1
@UriHerrera Je vous recommande d'utiliser KVM, qui prend également en charge les extensions de virtualisation d'Intel et d'AMD. Il est plus flexible et possède plus de fonctionnalités, y compris celles trouvées dans VirtualBox.
Oxwivi