Ключевую роль в виртуализации играют технологии аппаратной поддержки - Intel VT-x, AMD-V и SR-IOV. Рассмотрим их особенности и влияние на производительность виртуальных машин (ВМ) и контейнеров.
Аппаратная виртуализация
VT-x и AMD-V
VT-x (Intel) и AMD-V - технологии аппаратной виртуализации, встроенные в CPU. Они добавили новый уровень привилегий - "-1", где работает гипервизор, и позволили напрямую выполнять команды гостевых ОС на 0 кольце безопасности. Это дало значительный прирост производительности по сравнению с программной виртуализацией, позволяя выполнять гостевой код непосредственно на аппаратном уровне, а не на программном.
По данным Intel, VT-x ускоряет работу ВМ на 40-60% в сравнении с pure software виртуализацией. AMD заявляет о 25-40% приросте с AMD-V. На практике выигрыш зависит от конкретных задач. Например, в тестах VMmark разница между VM на базе VT-x и "железным" сервером составляет 7-12%.
SR-IOV
Single Root I/O Virtualization (SR-IOV) - технология виртуализации устройств ввода-вывода, например сетевых карт. Она позволяет ВМ напрямую работать с физическим устройством в обход гипервизора. Каждая ВМ получает выделенную виртуальную функцию (VF) устройства и работает с ней как с отдельным физическим девайсом.
SR-IOV дает значительный прирост производительности и снижает нагрузку на гипервизор. По данным Intel, пропускная способность 10 Гбит/с SR-IOV NIC может достигать 9.8 Гбит/с, в то время как эмулируемые адаптеры дают 1-3 Гбит/с. Задержки сокращаются в 5-10 раз.
Минус SR-IOV - необходимость специального оборудования и драйверов. Поддерживаются не все гипервизоры и ОС. Нужно учитывать ограничения на количество виртуальных функций.
Виртуальные машины
Производительность ВМ
Производительность ВМ с аппаратной виртуализацией близка к "железу". В тестах VMmark она отстает от физических серверов на 5-15%. Накладные расходы на виртуализацию компенсируются повышением утилизации оборудования.
Максимальная производительность ВМ достигается при прямом доступе к оборудованию через PCI passthrough или SR-IOV. Такая ВМ почти неотличима от физической машины. Это актуально для высоконагруженных систем - баз данных, почтовых серверов и т.д.
Плотность размещения ВМ
Аппаратная виртуализация позволяет размещать больше ВМ на одном узле без существенной потери производительности. В типичных случаях на сервере можно запустить 10-30 ВМ. При высокой плотности (50+ ВМ) возможности аппаратной виртуализации исчерпываются, начинает сказываться нехватка ОЗУ и ввода-вывода.
Для размещения большого количества легковесных ВМ лучше подойдут контейнеры. Они дают выигрыш за счет меньших накладных расходов.
Контейнеры
Производительность контейнеров
Контейнеры работают поверх ядра хостовой ОС и разделяют его ресурсы через механизмы пространств имен и контрольных групп. Это позволяет объединять в иерархические группы процессы с заданными свойствами, без необходимости составления таблицы правил для каждого отдельного процесса. Поэтому накладные расходы минимальны - контейнер практически неотличим от нативного процесса по производительности.
В тестах контейнеры Docker показывают результаты, близкие к хостовым, отставая на 5-7%. Для сравнения, у ВМ этот показатель может снижаться до 3%.
Влияние виртуализации на контейнеры
Виртуализация также применяется для изоляции контейнеров. Распространен подход, когда кластер контейнеров работает поверх виртуальных машин. Например, узел Kubernetes - это ВМ, а поды и сервисы разворачиваются внутри нее как контейнеры.
В таком случае на производительность контейнеров косвенно влияют технологии виртуализации ВМ - VT-x, AMD-V, SR-IOV. Чем эффективнее работает ВМ, тем меньше накладных расходов на инфраструктурном уровне. Но внутри гостевой ОС контейнеры по-прежнему работают с производительностью, близкой к нативной.
Прямое влияние на контейнеры оказывают технологии виртуализации ввода-вывода, например virtio. Они позволяют эффективно работать с устройствами из контейнеров так же, как в случае с ВМ. Хотя производительность несколько ниже, чем при прямом доступе.
Гибридные подходы
Существуют гибридные подходы, объединяющие ВМ и контейнеры:
- Легковесные ВМ на базе контейнеров, например LXC или Kata Containers. Они дают лучшую изоляцию, чем обычные контейнеры, и меньше накладные расходы, чем полновесные ВМ.
- ВМ с интегрированной поддержкой контейнеров. Такие системы, как VMware vSphere Integrated Containers и Microsoft Hyper-V Containers, позволяют запускать контейнеры прямо в гипервизоре без полноценной гостевой ОС.
Эти решения совмещают плюсы ВМ и контейнеров. Например, Kata Containers дают почти нативную производительность (накладные расходы менее 5%) и плотность размещения на уровне обычных контейнеров (50-150 на узел).
Заключение
Аппаратная виртуализация значительно повышает производительность ВМ и является основой для большинства современных облачных и корпоративных сред. VT-x и AMD-V дают прирост производительности 40-60% в сравнении с программной виртуализацией, а SR-IOV ускоряет ввод-вывод в 3-10 раз.
Контейнеры выигрывают у ВМ по производительности и накладным расходам, но проигрывают по изоляции. Они широко используются для микросервисов и cloud native приложений.
Оптимальным подходом в большинстве случаев будет комбинация ВМ и контейнеров, когда первые обеспечивают инфраструктурный уровень, а вторые служат средой выполнения приложений. Использование аппаратной виртуализации как для ВМ, так и для контейнеров, позволяет добиться максимальной производительности и эффективности современных инфраструктур.