Чим відрізняється продуктивність віртуальної машини від фізичного хоста?


15

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

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

Отже, моє запитання полягає в тому, якщо хтось може точно сказати мені, що таке ефективність від виконання завдань, що інтенсивно виконуються процесором, у віртуальній коробці проти запуску на рідному ПК?

Дякую.

Відповіді:


15

У програмах для стискання чисел (дуже пов'язаних з процесором) має бути майже нульовий показник продуктивності для VM. Інструкції виконуються безпосередньо на процесорі, що однаково і для хоста, і для VM.

Навіть для серйозних завдань щодо компіляції різниця в продуктивності майже не помітна. Ми запускаємо CentOS VM в VMware під Windows.

Оскільки на хості працює Linux, ви можете також розглянути KVM (Virtual Machine Kernel) замість VirtualBox. Це серія модулів ядра, що надає послуги з віртуалізації в Linux, використовуючи розширення для віртуалізації Intel VT-x, доступні для більшості всіх сучасних процесорів. QEMU використовує KVM як акселератор для запуску коду x86 безпосередньо на хост-процесорі.

Просто встановіть, virt-managerщоб спробувати.


Добре. Я дам це постріл. Дякую за відповідь.
аарелович

Яким чином, KVM по продуктивності порівняно з VirtualBox (скажімо, запуск Windows 10 в системі Linux)?
Рой

Вони повинні бути майже однаковими, якщо VirtualBox використовує розширення для віртуалізації процесора (як KVM), а навантаження здебільшого пов'язана з процесором. Якщо завдання важкі для вводу / виводу, продуктивність буде відрізнятися залежно від обраного обладнання. KVM має паравіртуалізовані драйвери (virtio), які можуть значно перевершити роботу емуляційних пристроїв (наприклад, дисковий контролер E1000 NIC та LSI SCSI). Як правило, хоча вони повинні бути досить близькими.
Джонатан Райнхарт

6

На це немає жодної доброї відповіді. Це багато що залежить від того, як ви використовуєте VM і від яких програм.

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

І все також змінюється, коли ви використовуєте гіпервізор типу 1 (без гостя) ОС. І навіть між тими варіантами у вас багато. Наприклад, Xen з 5 (IIRC з останніх вихідних FOSDEM розмов на Xen) режимами, які він підтримує. Від використання HW до пара віртуалізованого.

Резюме: За запитом, він може змінюватись від майже без уповільнення до серйозно повільніше.


Тепер, якщо я зосередився на VirtualBox, це гіпервізор типу 2. Програми, пов'язані з процесором, мають бути добре.


Більшість цих програм дуже важливо перетворити мову в C-код і скласти її. Коли ми запускаємо моделювання, ця компіляція - це те, що виконується. Згідно з вами, тоді це повинно бути добре?
аарелович

Підозрюю, що продуктивність буде добре. Мій досвід віртуального вікна обмежений (я в основному використовував робочу станцію VMware), але я не бачу технічних причин, чому це повинно бути повільним.
Геннес

Яким чином, KVM по продуктивності порівняно з VirtualBox (скажімо, запуск Windows 10 в системі Linux)?
Рой

5

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

Оскільки ви вже працюєте з Linux, Docker буде чудовим способом забезпечити середовище CentOS, не потребуючи перевстановлення всіх ваших машин.

Крім того, перегляньте мою утиліту, Scuba, яка дозволяє легко запускати такі речі, як збірки всередині контейнера Docker. Замість бігу makeви бігли б scuba make. Це все!


Дайте мені знати, якщо ви хочете спробувати це і вам потрібна допомога для початку.
Джонатан Райнхарт

Дякую, але це було давно, і було прийнято рішення зробити крок. Але я це врахую, коли доведеться запускати програму, яка має проблеми із запуском con CentOS.
aarelovich
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.