Скільки накладних витрат має віртуалізація x86 / x64?


24

Скільки накладних витрат на віртуалізацію x86 / x64 (я, мабуть, буду використовувати VirtualBox, можливо VMWare, безумовно, не паравіртуалізація) для кожної з наступних операцій хост Win64 та гість Linux64 з використанням віртуалізації апаратних засобів Intel?

  • Чисто пов'язаний з процесором 64-бітний код режиму користувача

  • Суто обмежений процесором 32-бітний код режиму користувача

  • Файл вводу / виводу на жорсткий диск (я дбаю в основному про пропускну здатність, а не затримку)

  • Мережевий введення / виведення

  • Примітиви синхронізації ниток (мутекси, семафори, змінні стану)

  • Контекстні комутатори нитки

  • Атомні операції (з використанням lockпрефікса, такі речі, як порівняння та заміна)

Мене в першу чергу цікавлять апаратно підтримувані випадки x64 (як Intel, так і AMD), але я б не проти слухати про непідтримуваний бінарний переклад і x86 (тобто 32-бітовий хост і гість). Мене не цікавить паравіртуалізація.


(1) "x86" означає 32-розрядний. Ви не зможете запустити 64-бітний код. У віртуалізації AMD64 (також відомої як x64) віртуалізація має різні обмеження, оскільки вона вимагає розширення обладнання. (2) Ви маєте на увазі віртуалізацію x86 за допомогою бінарного перекладу (лише x86) або віртуалізації за допомогою апаратних засобів (VT)?
Skyhawk

@Miles: Я уточнив питання.
dimimcha

Відповіді:


26

Я виявив, що не існує простої та абсолютної відповіді на такі питання, як ваше. Кожне рішення щодо віртуалізації поводиться по-різному на конкретних тестах на ефективність. Крім того, такі тести, як пропускна здатність вводу / виводу диска, можна розділити на багато різних тестів (читати, записувати, переписувати, ...), і результати будуть відрізнятися від рішення до рішення та від сценарію до сценарію. Ось чому не тривіально вказати одне рішення як найшвидше для дискових вводу-виводу, і саме тому немає абсолютної відповіді на мітки, як накладні витрати на введення / виведення диска.

Він стає складнішим при спробі знайти співвідношення між різними тестами. Жодне з перевірених нами рішень не мало хороших показників на тестах мікро операцій. Наприклад: Всередині VM один-єдиний дзвінок на "gettimeofday ()" в середньому зайняв в 11,5 разів більше циклів годин, ніж на апаратному забезпеченні. Гіпервізори оптимізовані для реальних програм і не дуже добре працюють на мікроопераціях. Це може не бути проблемою для вашої програми, яка може краще відповідати додатку в реальному світі. Я маю на увазі під мікро-операцією будь-яку програму, яка витрачає менше 1000 тактових циклів, щоб закінчити (для процесора 2,6 ГГц, 1000 тактових циклів витрачається за 385 наносекунд, або 3,85е-7 секунд).

Я провів широке тестування на чотирьох основних рішеннях для консолідації центрів обробки даних для архітектури x86. Я зробив майже 3000 тестів, порівнюючи продуктивність всередині віртуальних машин із продуктивністю обладнання. Я назвав "накладні витрати" різницею максимальної продуктивності, виміряної всередині ВМ, а максимальної продуктивності, виміряної на апаратному забезпеченні.

Рішення:

  • VMWare ESXi 5
  • Microsoft Hyper-V Windows 2008 R2 SP1
  • Citrix XenServer 6
  • Віртуалізація Red Hat Enterprise 2.2

Гості ОС:

  • 64-бітний Microsoft Windows 2008 R2
  • Red Hat Enterprise Linux 6.1 64 біт

Інформація про тест:

  • Сервери: 2X Sun Fire X4150 кожен з 8 ГБ оперативної пам’яті, 2X процесор Intel Xeon E5440 та чотири гігабітні порти Ethernet
  • Диски: 6X 136 Гб SAS диски через iSCSI через гігабітний Ethernet

Програмне забезпечення для порівняння:

  • Процесор і пам’ять: орієнтир Linpack для 32 і 64 біт. Це процесор і об'єм пам'яті.

  • Дисковий ввод / вивід та затримка: Bonnie ++

  • Мережевий ввод / вивід: Netperf: TCP_STREAM, TCP_RR, TCP_CRR, UDP_RR та UDP_STREAM

  • Мікрооперації : rdtscbench : системні виклики, міжпроцесовий зв'язок

Середні показники розраховуються за параметрами:

  • Процесор і пам'ять: СЕРЕДНЕ (HPL32, HPL64)

  • Введення / виведення диска: AVERAGE (put_block, переписати, get_block)

  • Мережевий введення / виведення: СРЕДНИЙ (tcp_crr, tcp_rr, tcp_stream, udp_rr, udp_stream)

  • Мікрооперації AVERAGE (getpid (), sysconf (), gettimeofday (), malloc [1M], malloc [1G], 2pipes [], simplemath [])

Для мого тестового сценарію, використовуючи мої метрики, середні результати результатів чотирьох рішень для віртуалізації:

Накладні шари VM, гість Linux:

  • Процесор і пам'ять: 14,36%

  • Мережевий введення / виведення: 24,46%

  • Введення / виведення диска: 8,84%

  • Затримка диска для читання: у 2,41 рази повільніше

  • Час виконання мікрооперацій: у 10,84 рази повільніше

Накладний шар VM, гість Windows:

  • Середній процесор і пам'ять для 32 та 64 біт: 13,06%

  • Мережевий введення / вивід: 35,27%

  • Введення / виведення диска: 15,20%

Зауважте, що ці значення є загальними та не відображають конкретний сценарій випадків.

Перегляньте повну статтю: http://petersenna.com/en/projects/81-performance-overhead-and-comparative-performance-of-4-virtualization-solutions


2
Ця стаття застаріла
діасний

1
For a 2.6 GHz CPU, 1,000 clock cycles are spent in 23 milliseconds, чи не повинно це бути простим поділом 1000 на 2600000, щоб отримати кількість секунд, щоб зайняти 1000 тактових годин? (що не 23 мілісекунди)
dvdvorle

2
@Містер. Щасливий, ти маєш рацію. Я отримав 385 наносекунд за: 1000/2600000000 = 0,000000385 = 385 наносекунд. Чи згодні ви з цим? Дякуємо, що вказали на це.
Пітер Сенна

@dyasny, я шукаю обладнання для повторення тестів з оновленими версіями. Будь-яка ідея, де я можу його знайти?
Пітер Сенна

обладнання можна легко знайти в магазині
діасний

4

У вашому запитанні занадто багато змінних, проте я можу спробувати його звузити. Припустимо, що ви переходите з VMware ESX, ви все робите правильно - найновіший процесор з підтримкою віртуалізації, інструменти VMware з паравіртуалізованими драйверами для зберігання та мережею, багато пам’яті. Тепер припустимо, що ви запускаєте одну віртуальну машину для цієї установки. З мого досвіду, ви повинні мати ~ 90% швидкості процесора для навантаження на процесор. Я не можу сказати вам багато про швидкість мережі, оскільки ми використовуємо посилання 1Gbps, і я можу наситити її без проблем, можливо, посилання на 10Gbps може бути різним, однак у нас немає жодної з них. Пропускна здатність сховища залежить від типу накопичувача, я можу отримати близько 80% пропускної здатності з локальним сховищем, але для 1 Гбіт / с NFS це близько 100%, оскільки мережа є вузьким місцем. Неможливо розповісти про інші показники,

Ці цифри дуже приблизні, і вони сильно залежать від вашого типу навантаження, обладнання, вашої мережі. Це стає ще більш нечітким, коли ви запускаєте кілька робочих навантажень на сервері. Але я хочу тут сказати, що в ідеальних умовах ви повинні мати можливість наблизитись до 90% натур.

Крім того, з мого досвіду, набагато більшою проблемою для високопродуктивних додатків є затримка, і це особливо стосується клієнтських серверних додатків. У нас є обчислювальна машина, яка отримує запит від 30+ клієнтів, виконує короткі обчислення та повертає результати. На голому металі він зазвичай підштовхує процесор до 100%, але той же сервер на VMware може завантажувати CPU лише до 60-80%, і це в першу чергу через затримку в обробці запитів / відповідей.


Я можу сказати з досвіду, що наситити 10GbE-зв'язок з однією ВМ дуже важко. Ми використовували VMWare FT, який може легко наситити 1Gbps посилання самостійно, понад 10Gbe, і він не наблизився до його насичення.
Марк Хендерсон

0

Я не дотягнувся до виконання таких основних примітивів, як переключення контексту та атомні операції, але ось мої результати тесту грубої сили, який я нещодавно провів з різними гіпервізорами. Це має вказувати на те, що ви можете очікувати, якщо ви здебільшого обмежені пропускною здатністю процесора та оперативної пам’яті.

http://www.altechnative.net/2012/08/04/virtual-performance-part-1-vmware/


2
Це чудово, що ти маєш трохи інформації про Xen та KVM ... А як щодо найпопулярніших двох гіпервізорів ?! Вони повністю відсутні. І ви включаєте кілька гіпервізорів типу 2, жоден здоровий SysAdmin не використовує це для виробництва.
Кріс С

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