Пытаюсь выбрать виртуальную машину, и не могу понять как их сравнивать. Когда читаю описание любой ВМ - вижу много слов про используемые технологии, и почему они делают эту ВМ самой быстрой. Но ведь не могут все они быть самыми быстрыми, какие-то из них же должны быть быстрее других?
Как сравнивать разные виртуальные машины?
Ответ
1. Наиболее быстрыми являются виртуальные машины контейнерного типа - все контейнеры используют общее ядро и общие модули уровня ядра, но служебные структуры каждого процесса инициализированы особым образом, что создает иллюзию совершенно разных серверов.
Примеры контейнеров - OpenVZ, Docker. Работают только на линуксе, потому что над другими ОС невозможно надругаться настолько же сильно.
2. Следом за контейнерами в порядке уменьшения производительности идет паравиртуализация. Паравиртуализация - это запуск гостевой ОС полностью на уровне пользователя, для этого для нужной ОС готовят специальные драйвера, которые подменяют все те модули ядра, которым ранее требовался доступ к привилегиям уровня ядра (ring 0 на архитектуре x86/64).
Пример паравиртуальных машин - XEN, User mode linux.
Ограничение - гостевая ОС для работы в паравиртуальном режиме должна быть совместима с используемым гипервизором. Зачастую это ограничение можно читать как "гостевая ОС должна быть линуксом", хотя есть и некоторые исключения.
3. Следующие по тяжести реализации - гипервизоры, использующие аппаратную виртуализацию. Это опять XEN, KVM, VirtualBox, WMWare, Hyper-V и QEMU (в режиме KQEMU)...
Здесь уже нет никаких ограничений на гостевую ОС, кроме наличия под нее драйверов для виртуальных устройств. Но многие реализации эмулируют в качестве "виртуальных" реально существующие устройства, что упрощает проблему с драйверами.
Но тут надо понимать, что несмотря на возможность полной виртуализации на каждой из этих ВМ, все они могут использовать частичную паравиртуализацию для ускорения работы. Поэтому если поставить на ВМ специальный набор "гостевых" драйверов - ее работа ускорится и могут появиться новые возможности. Поэтому при выборе ВМ надо учитывать предполагаемую гостевую ОС и смотреть, какие гостевые драйвера для нее есть.
Обычно считается, что XEN, KVM и VirtualBox быстрее работают когда гостевая ОС - linux, а WMWare и Hyper-V - когда гостевая ОС - Windows.
4. Последний класс, самый медленный - эмуляторы. Снимают ограничение по архитектуре процессора (можно эмулировать ARM на x64 или наоборот) - но работают еще медленнее прошлых классов. Пример - QEMU, BOCHS.
У эмуляторов тоже есть приемы для ускорения выполнения. Но сравнение эмуляторов выходит уже за рамки этого вопроса.
Комментариев нет:
Отправить комментарий