В чем разница в производительности виртуальной машины и физического хоста?

В чем разница в производительности виртуальной машины и физического хоста?

Там, где я работаю, мы используем относительно мощные ПК с дистрибутивом Debian Linux. Однако для некоторых программ, которые нам нужно установить, лучше иметь CentOS, и это будут наши основные рабочие инструменты. Смена ОС на всех компьютерах на нашем рабочем месте возможна, но мы пытаемся решить, будет ли использование VirtualBox лучшим выбором для простоты.

Все это зависит от следующего пункта. Программы, которые нам нужно запустить, являются симуляторами, которые являются очень ресурсоемкими задачами, которые могут легко выполняться до часа или больше каждый раз при запуске симуляции. Нам нужно решить, достаточно ли велико падение производительности при использовании Virtual Box, чтобы оправдать смену ОС.

Итак, мой вопрос: может ли кто-нибудь достоверно сказать, каково падение производительности при запуске ресурсоемкой задачи в VirtualBox по сравнению с ее запуском на обычном ПК?

Спасибо.

решение1

Для программ, обрабатывающих числа (очень привязанных к CPU), производительность VM должна быть практически нулевой. Инструкции выполняются непосредственно на CPU, что одинаково для хоста и VM.

Даже для серьезных задач компиляции разница в производительности едва заметна. Мы запускаем CentOS VM в VMware на Windows.

Поскольку на хосте вы используете Linux, вы также можете рассмотретьКВМ(Kernel Virtual Machine) вместо VirtualBox. Это серия модулей ядра, которая предоставляет службы виртуализации в Linux, используя расширения виртуализации Intel VT-x, доступные на большинстве современных ЦП. QEMU использует KVM в качестве ускорителя для запуска кода x86 непосредственно на хост-ЦП.

Просто установите и virt-managerпопробуйте.

решение2

На самом деле, похоже, что Docker может быть даже лучшим вариантом для того, что вы делаете. Docker предоставляет контейнеры, которые являются изолированными песочницами, работающими поверх того же ядра. Накладные расходы на системные вызовы/IO равны нулю, поскольку ваши процессы в контейнере ничем не отличаются от процессов на хосте.

Поскольку вы уже используете Linux, Docker станет отличным способом предоставить среду CentOS без необходимости переустановки всех ваших машин.

Также, ознакомьтесь с моей утилитой,Подводное плаваниечто позволяет легко запускать такие вещи, как сборки внутри контейнера Docker. Вместо запуска makeвы бы запустили scuba make. Вот и все!

решение3

На этот вопрос нет единого хорошего ответа. Это во многом зависит от того, как вы используете виртуальную машину и какие программы.

Например, использование VMWare (гипервизора типа 2) и программы, ориентированной исключительно на CPU, дало почти полную скорость CPU. Если бы я использовал тот же гипервизор и программу с большим количеством системных вызовов, я бы получил серьезное замедление.

И все также меняется, когда вы используете гипервизор типа 1 (без гостевой ОС). И даже между ними у вас есть много вариаций. Например, Xen с 5 (IIRC из последних выходных FOSDEM talk о Xen) режимами, которые он поддерживает. От использования HW до паравиртуализации.

Подведем итог: в зависимости от вопроса замедление может варьироваться от практически нулевого до значительно более медленного.


Теперь, если я сосредоточусь на VirtualBox, то это гипервизор типа 2. Программы, ориентированные исключительно на процессор, должны быть в порядке.

Связанный контент