Что такое IOMMU и улучшит ли это производительность моей виртуальной машины?

28

Чипсет моей материнской платы поддерживает эту функцию IOMMU , я прочитал (но не совсем понял), что она повышает производительность виртуальной машины, позволяя виртуальной машине использовать реальное физическое оборудование вместо виртуального.

Действительно ли это приносит улучшение производительности виртуальной машины? и если это произойдет, как я могу извлечь выгоду из Virtualbox?

Ури Эррера
источник

Ответы:

21

Короче говоря, единственный способ, которым 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, что довольно быстро для начала.

ppetraki
источник
Я прочитал это из Руководства пользователя моей материнской платы, где сказано, что, если набор микросхем поддерживает его, он может обеспечить некоторый физический доступ к оборудованию хоста.
Ури Эррера
Я только что прочитал Xen Wiki, кажется, IOMMU делает то же, что и SR-IOV, но я не использую Xen, и, видимо, Virtualbox не очень хорошо использует это.
Ури Эррера
Нет, большинство компьютеров не имеют IOMMU. Может быть, вы думаете, IO-APIC?
Псуси
1
На самом деле эта статья в Википедии объясняет это довольно хорошо: en.wikipedia.org/wiki/X86_virtualization . Большой выигрыш для поддержки IOMMU заключается в том, что мы можем изменять, через какие устройства мы проходим во время выполнения. Раньше нам приходилось указывать диапазон устройств в списке аргументов ядра, и только те периферийные устройства могли проходить. IOMMU позволяет переназначать устройства по своему усмотрению. Опять же, это эксклюзивный доступ, либо ваш хост использует его, либо одна из виртуальных машин. Это действительно функция, ориентированная на сервер.
ппетраки
1
@UriHerrera Я рекомендую вам использовать KVM, который также поддерживает расширения виртуализации Intel и AMD. Он более гибкий и имеет больше возможностей, в том числе и в VirtualBox.
Oxwivi