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

15

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

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

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

Спасибо.

aarelovich
источник

Ответы:

15

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

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

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

Просто установите, virt-managerчтобы попробовать.

Джонатон Рейнхарт
источник
Хорошо. Я сделаю это. Спасибо за ответ.
аарелович
Как, с точки зрения производительности, KVM сравнивается с VirtualBox (скажем, работает Windows 10 в системе Linux)?
Рой
Они должны быть почти идентичными, если VirtualBox использует расширения виртуализации ЦП (как это делает KVM), а рабочая нагрузка в основном связана с ЦП. Если задачи ввода-вывода тяжелые, производительность будет зависеть от выбранного оборудования. KVM имеет паравиртуализированные драйверы (virtio), которые могут значительно превосходить драйверы эмулируемых устройств (например, E1000 NIC и дисковый контроллер LSI SCSI). Как правило, хотя они должны быть достаточно близко.
Джонатон Рейнхарт
6

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

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

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

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


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

Hennes
источник
Большинство из этих программ существенно трансформируют язык в C-код и компилируют его. Когда мы запускаем симуляцию, запускается эта компиляция. По твоему, тогда все должно быть нормально?
аарелович
Я подозреваю, что производительность будет в порядке. Мой опыт работы с виртуальными ящиками ограничен (я в основном использовал рабочую станцию ​​VMware), но я не вижу технических причин, по которым он должен работать медленно.
Хенн
Как, с точки зрения производительности, KVM сравнивается с VirtualBox (скажем, работает Windows 10 в системе Linux)?
Рой
5

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

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

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

Джонатон Рейнхарт
источник
Дайте мне знать, если вы хотите попробовать это и вам нужна помощь, чтобы начать.
Джонатон Рейнхарт
Спасибо, но это было давно, и было принято решение сделать этот шаг. Но я приму это во внимание при запуске программы, которая имеет проблемы с запуском con CentOS.
аарелович