Чи відстає продуктивність QEMU (все ще) від VirtualBox і чи є спосіб її покращити без апаратної підтримки + модуля ядра kvm?


9

Я помітив декілька статей, які стверджують, що QEMU повільніше, ніж VirtualBox (без апаратної допомоги), але декільком - років, а найновіші, здавалося, минулого року.

  • Чи правда, що QEMU повільніше, ніж VirtualBox?
  • Якщо так, чому?
  • Чи є якісь хитрощі, щоб усунути розрив у ефективності?

Деякі мої хост-системи не підтримують апаратну віртуалізацію, тому мене особливо цікавлять поради щодо продуктивності, які працюють без модуля ядра.

Відповіді:


10

Якщо ви говорите про віртуалізацію x86 на хості x86, майте на увазі, що kqemu (старий модуль ядра прискорення для qemu) застарілий. Віртуальна машина Kernel (KVM) - це "шлях вперед", але вона працює лише на хостах Linux. Гість може бути будь-якою ОС, яку ви хочете, якщо це архітектура x86.

Перехресна архітектура, qemu все ще дуже повільна; просто сьогодні я намагався останнього qemu з Debian MIPS64 в гостях .... це було можливо з терміналу, але жахливо повільно в Xorg. Наскільки мені відомо, ви не можете використовувати інструкції з прискорення процесора, такі як розширені таблиці сторінок або VT-x, коли ви переходите до архітектури. Все це імітується в програмному забезпеченні.

Отже, для віртуалізації від x86 до x86 «сировинне» qemu повільне, але KVM (який використовує qemu) швидкий. Досить швидко. Настільки швидко, що це рекомендоване Red Hat рішення для віртуалізації RHEL.

VirtualBox все ще знімає все, що може запропонувати qemu / kvm з точки зору апаратної прискореної графіки 2d / 3d, оскільки kvm зосереджується на віртуалізації сервера, а virtualbox - на віртуалізації робочого столу. Але я напевно рекомендую вам перевірити kvm, якщо ви маєте справу з сервером.

Редагувати: Для ваших хостів, які не мають апаратного прискорення, ви будете страждати від досить великих накладних витрат, незалежно від того, яке рішення virt ви використовуєте. Емуляція апаратних речей у програмному забезпеченні є важкою і дорогою.


2
ls $(which kvm)показує символьне посилання на qemu-system-x86_64. Я здогадуюсь, що саме про це ви говорили з KVM за допомогою QEMU?
Catskul

Так, але KVM, як випливає з назви, є віртуальною машиною на основі ядра , що означає, що кишки гіпервізора знаходяться в модулі ядра 'kvm'. Якщо ви хочете, ви можете подумати про те, що він схожий на старий kqemu, але в архітектурному відношенні він дуже інший. qemu - це більше інтерфейс, ніж власне гіпервізор, коли kvm працює.
allquixotic

О, я забув додати: причина, чому qemu (і будь-яка інша система віртуалізації) настільки повільна без "модуля ядра" (як ви говорите; те, що ви насправді маєте на увазі "без апаратного прискорення"), полягає в тому, що певні апаратні операції, які Виступи гостя дуже важко наслідувати в програмному забезпеченні. Ну, не важко з точки зору ненадійного чи складного; просто sloooooooooooooow. Ось чому Intel провела більшу частину десятиліття, даючи нам інструкції з прискореним обладнанням щодо найповільніших біт віртуалізації на шляху VT-x та EPT. Єдине виправлення - використання обладнання, яке підтримує ці набори інструкцій.
allquixotic

Чи є щось, що робить virtualbox швидшим навіть без апаратного прискорення?
Catskul

Ні. Без апаратного прискорення продуктивність повинна бути досить рівною. VirtualBox, можливо, має вдосконалені оптимізації x86, які змушують його працювати трохи швидше в програмному забезпеченні, що було б доречно, оскільки virtualbox підтримує лише x86 в першу чергу, тоді як qemu має набагато більш широке ігрове поле (не x86 архітектури). Але це деталізація щодо впровадження / дизайну, яка в основному зводиться до кеш-локації, оптимізованих внутрішніх циклів, ручного кодування асемблера, кешування керованого вводу / виводу диска на стороні хоста або інших хитрощів. Не впевнений, в якій мірі vbox робить ці речі, які не мають qemu, але вони не дуже актуальні ...
allquixotic

1

Якщо припустити хост з процесором, здатним на віртуалізацію (Intel VT-x, AMD SVM), який працює Qemu на ядрі (Linux з KVM), це досить швидко.

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

З іншого боку, нещодавня розробка ввела рамку SPICE в qemu. Насправді їй кілька років і здається досить зрілим. Переваги для відео-продуктивності роботи із відеодрайвером QXL величезний, на мій досвід (2D веб-розробка). Я не знаю, наскільки це порівняно з Virtualbox, але це, безумовно, поліпшення. Я думаю, що SPICE є обов'язковим для всіх, хто працює з Windows в Qemu.

Це виключно моя думка, і слід зазначити, що я ніколи навіть не намагався запустити будь-яке відтворення 3D чи відео у гостях.


1
Якщо за допомогою "орієнтованої на графіку емуляції" ви посилаєтесь на прискорення 3D, це тому, що графічні процесори не можуть бути віртуалізовані, як процесори. Емуляція програмного забезпечення неможлива повільна, тому в даний час існує два рішення: 1. Проходження API (тобто виклики DirectX у гостях виконуються як виклики DirectX на хості) до гостя). QEMU підтримує №2.
Маркус

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