LINUX.ORG.RU

QEMU vs. VirtualBox для Linux host, Windows 10 guest

 , ,


3

7

Привет.

Захотел сделать «долгоживущую» виртуалку с Windows 10, чтобы пользоваться ей вместо дуалбута для простых задач. Поскольку лицензии и т. п. привязываются ко всевозможным аппаратным идентификаторам, естественным образом возник вопрос о выборе VMM (потому что потом уже не поменяешь). Последние 10 лет я пользовался VirtualBox (как для Linux host/Windows guest, так и наоборот), но не из каких-то содержательных соображений, а скорее по инерции. Оно вроде бы работает удовлетворительно, но не очень — то начинает люто лагать по I/O, то ломается фуллскрин, то ещё что-нибудь, ну и отсутствие нативной поддержки Wayland тоже не даёт покоя моему технофетишизму.

Отсюда вопрос: насколько хорошо QEMU-KVM справляется с Windows 10 при условии эмуляции GPU (без проброса)? Интересует в первую очередь производительность графики/виртуального GPU для десктопных задач, во вторую очередь — всякая интеграция (проброс USB-устройств, изменение разрешения виртуального экрана, copy-paste, шаринг файлов), в третью очередь — гуй (virt-manager? что-то ещё? упаси б-же, GNOME Boxes?).

И есть ли вообще профит по сравнению с VirtualBox?

★★★★★

И есть ли вообще профит по сравнению с VirtualBox?

Я работаю с qemu из консоли (без libvirt). В сравнении с виртуалбоксом - гораздо большая скорость на линуксе (венду особо не юзал) Это при включенном ускорении kvm и хорошем числе ядер для процессора отданных при cpu=host.
Проброс юсб не понравился (надо ручками устройство до запуска добавлять, если с консоли). Это удобнее сделано во всяких настройках для либвирт того же на него (но я не юзаю, мне не нужен и потому без усложнений и прослоек).
Из этих двух кандидатов лично для меня выбор однозначен в пользу qemu (но я и не сравнивал гпу, юсб). Кроме того, он с совершенно разными архитектурами может работать (я для arm чрута и работы с системой на флешке малины юзал, но есть варианты и для экзотных) и потому для меня - универсальный инструмент другого уровня.
Для шаринга файлов использую общую сетевую папку из обычной на хосте.
Послежу, что напишут другие насчёт венды.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 3)

Интересует в первую очередь производительность графики/виртуального GPU для десктопных задач

Kvmgt оно же igvt-g норм производительность дает

Deleted ()

Отсюда вопрос: насколько хорошо QEMU-KVM справляется с Windows 10 при условии эмуляции GPU (без проброса)?

У меня работает просто отвратительно, натурально слайд-шоу, хотя драйвера виртуальной видеокарты от редхата установлены. Windows 8.1 с теми же драйверами работает гораздо лучше. Бенчмарками не измерял, но по ощущениям близко в VirtualBox 5.x, без аппаратного ускорения. Virtualbox 6, соответственно, тормозит на одиних виртуалках, но почему-то нормально работает других с такой же ОС.

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

Khnazile ★★★★★ ()

Интересует в первую очередь производительность графики/виртуального GPU для десктопных задач

Если сравнивать с QLX+Spice, то virtualbox получше будет. Но никто не мешает работать с виндой по rdp.

проброс USB-устройств

через virt-manager пробрасываются usb-устройства на работающей винде.

King_Carlo ★★★★★ ()

1. Производительность графики одинаково плоха. Правда, в случае Linux guest virtio-gpu спасает дело. 2. С интеграцией прблем нет: все перечисленное вами работает, особенно полезен spice. Доступны даже изощренные варианты проброса, типа проброса мультисессионного CD/DVD в виде LUN passthrough. 3. virt-manager, vinagre... их масса.

Главное преимущество — работает стабильно и надежно, качество ядерного кода сущестенно выше качества кода VB, ничего не ломается при обновлениях. Для меня это ключевой момент.

Сам пользуюсь с 1507 LTSB.

Да, при переходе с VB винду переустанавливать не нуджо, можно прямо сразу загружать образ от VB. После чего довести до ума, удалив ненужные и установив нужные драйверы/службы.

anonymous ()
Ответ на: комментарий от Worron

О еретическом штеуде говорить не хочу, я поклоняюсь Амудею.

Khnazile ★★★★★ ()

Поскольку лицензии и т. п. привязываются ко всевозможным аппаратным идентификаторам, естественным образом возник вопрос о выборе VMM (потому что потом уже не поменяешь).

Да как-то нет проблем. Берёшь коробас, и менять вполне можешь. Наверно, если каждый день, то будут проблемы. Но уж поменять пару раз, если виртуалка не устроит можно.

Тем более что вообще без проблем можно с оф сайта Майкрософт скачать образ Windows 10, там вроде на месяц. И просто пару дней вертеть его этак в трёх решениях, а потом сделать вердикт, и уже ставить по реальному.

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 1)

Десятке нужна nested виртуализация.
У нее ядро бегает в собственном гипервизоре, поэтому без этого будут тупняки.

pekmop1024 ★★★★★ ()
Ответ на: комментарий от pekmop1024

У нее ядро бегает в собственном гипервизоре

Вот прям всегда? Даже если Hyper-V вообще не ставить?

поэтому без этого будут тупняки.

Что за тупняки?

Ну и в любом случае, с вложенной виртуализацией вроде всё ок что у VirtualBox, что у KVM, не?

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx

Ну и в любом случае, с вложенной виртуализацией вроде всё ок что у VirtualBox, что у KVM, не?

Не. Сделано весьма в тестовом и сыром режиме в Virtualbox 6. И пока только для AMD.

Про Windows 10 какой-то бред... По мне даже шустрее в Virtualbox чем 7-ка.

fornlr ★★★★★ ()
Ответ на: комментарий от fehhner

Проброс юсб не понравился (надо ручками устройство до запуска добавлять, если с консоли)

госспади, а вирт-менеджер на шо?

darkenshvein ★★★★★ ()
Ответ на: комментарий от darkenshvein

госспади, а вирт-менеджер на шо?

мне редко бывает нужно, потому я и уточнил, что это если не пользоваться гуём. а с гуём всё в порядке. без его использования можно на горячую менять юсб устройства? я как понял - нет.

fehhner ★★★★★ ()
Ответ на: комментарий от Khnazile

Йеп. Накатил с QXL WDDM-драйвером (который QXL DOD) — действительно слайдшоу, особенно на больших разрешениях. А ещё SPICE-клиент в virt-manager не умеет в HiDPI (т. е. рендерит в 1280x720 и растягивает), и вот это вообще не очень.

Попробую накатить GVT-g и запатчить spice-gtk, конечно, но что-то такое себе.

Хотя по I/O теперь не тупит, уже круто :)

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от King_Carlo

Если сравнивать с QLX+Spice, то virtualbox получше будет.

Так и оказалось.

Но никто не мешает работать с виндой по rdp.

Это как? У меня Linux-хост, напоминаю. Есть вменяемые клиенты? И насколько это будет удобно с т. з. интеграции — всякие фишки SPICE типа копипаста или того же проброса USB идут лесом?

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx

Вот прям всегда? Даже если Hyper-V вообще не ставить?

Конечно, всегда - такова архитектура. Для чего так сделали, вопрос отдельный, официально - для упрощения модели драйверов.

Что за тупняки?

Как на бинарной трансляции.

вроде всё ок что у VirtualBox, что у KVM, не?

it depends.

pekmop1024 ★★★★★ ()
Ответ на: комментарий от intelfx

Возможно есть смысл отключить сжатие в SPICE протоколе, если всё в пределах одного компьютера.

Elyas ★★★★★ ()
Ответ на: комментарий от pekmop1024

Восхитительно.

А QEMU-KVM не умеет миграцию и по транзитивности save/restore, если VMX включен. И как с этим живут?

intelfx ★★★★★ ()

Пользуюсь QEMU-KVM с GVT-g(i7-6820HQ) и dmabuf. Производительности графики хватает для ALtium и поиграть. Хотя иногда бывают странные лаги вроде такого: https://ibb.co/wrZ3N2r Запускаю из скриптика с кучей параметров командной строки через их GTK интерфейс.

Confucij ()
Ответ на: комментарий от intelfx

Но никто не мешает работать с виндой по rdp.
Есть вменяемые клиенты? И насколько это будет удобно с т. з. интеграции — всякие фишки SPICE типа копипаста или того же проброса USB идут лесом?

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

fehhner ★★★★★ ()
Ответ на: комментарий от anonymous

Ну ясен хер. Иначе бы у меня дисплей гостя не подгонялся под размер окна автоматически.

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx

действительно слайдшоу

не умеет в HiDPI (т. е. рендерит в 1280x720 и растягивает)

Что-то не так сделано. УМВР.

anonymous ()
Ответ на: комментарий от anonymous

не умеет в HiDPI (т. е. рендерит в 1280x720 и растягивает)

УМВР

Ну это вряд ли, потому что апстрим про баг знает: https://gitlab.freedesktop.org/spice/spice-gtk/issues/29

действительно слайдшоу

Что-то не так сделано.

¯\_(ツ)_/¯ — всё может быть, но я не вижу места, где можно было бы накосячить. Опиши свою конфигурацию?

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Для virtio-gpu нет или почти нет Windows-драйверов.

Stable отсюда, это копия репов редхата: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/
Надо минимум qemu-ga + virtio; к ним так же лежат qxl + spice-qxl-wddm-dod + virtio-win-prewhql
Под рукой венды, чтобы проверить, нет.

fehhner ★★★★★ ()
Ответ на: комментарий от fehhner

Для virtio-gpu нет или почти нет Windows-драйверов.

Надо минимум qemu-ga + virtio

Ты в курсе, что virtio — это семейство разных виртуализированных устройств?

virtio-gpu (virgl) драйверов для оффтопика нет.

к ним так же лежат qxl + spice-qxl-wddm-dod

Вот именно, что QXL.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

Держи.

#!/bin/sh

# Start QEMU
qemu-system-x86_64 \
    -enable-kvm \
    -m 6G \
    -smp cores=2,threads=2,sockets=1,maxcpus=4 \
    -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time \
    -machine type=pc,accel=kvm,kernel_irqchip=on \
    -global PIIX4_PM.disable_s3=1 \
    -global PIIX4_PM.disable_s4=1 \
    -name windows-gvt-g-guest \
    -usb -device usb-tablet \
    -device vfio-pci,sysfsdev=/sys/devices/pci0000:00/0000:00:02.0/52402d43-022d-4055-b90f-ac67e8867b78,x-igd-opregion=on,rombar=0,display=on \
    -drive file=$(pwd)/Designer_workbench.qcow,format=qcow2,l2-cache-size=8M \
    -net user,smb=/home/confucij/Work \
    -net nic,model=virtio \
    -display gtk,gl=on

ТАк же использую такой юнит systemd - ловлю фейлы если пробовать создавать устройство после старта гнома.

[Unit]
Description=Create Intel GVT-g vGPU

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo '52402d43-022d-4055-b90f-ac67e8867b78' > /sys/devices/pci0000:00/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_4/create"
ExecStop=/bin/sh -c "echo '1' > /sys/devices/pci0000:00/0000:00:02.0/52402d43-022d-4055-b90f-ac67e8867b78/remove"
RemainAfterExit=yes

[Install]
WantedBy=graphical.target
Confucij ()
Ответ на: комментарий от intelfx

Хотел предупредить, но забыл. После установки драйвера запускать виртуальную машину надо с 1 виртуальной картой (точнее только с виртуальными картами, думаю их можно и больше сделать), об этом где-то в факе было написано.

Точнее, после установки драйвера, выключай вирт.машину и добавляй

-vga none \
и запускай

superuser ★★★ ()
Последнее исправление: superuser (всего исправлений: 2)
Ответ на: комментарий от intelfx

Это как? У меня Linux-хост, напоминаю.

я лет 6+ пользуюсь remmina. Претензии есть, но ничего существенного.

targitaj ★★★★★ ()
Ответ на: комментарий от superuser

Это всё понятно. Как бы потому и чёрный экран, что не работает vGPU.

Если оставить QXL, экран как раз чёрным не будет. :) Только это не совсем то, что надо.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

И вообще если в и офтопике драйвер установился, значит офтопик видеокарту увидел и всё «идёт по плану».

superuser ★★★ ()
Последнее исправление: superuser (всего исправлений: 1)
Ответ на: комментарий от intelfx

vGPU работает, читай там FAQ, там толи в винде какойто косяк, не помню уже.

superuser ★★★ ()
Ответ на: комментарий от intelfx

Только это не совсем то, что надо

рептилоиды хитрожопы, да

superuser ★★★ ()
Ответ на: комментарий от intelfx

потому что апстрим про баг

Да, есть такое. Я вас неправильно понял, полагая, что любой экран больше 1280x720 рендерит в 1280x720.

Могу вечером выложить xml. Только что есть «слайдшоу»? Какие конкретно показатели? Это чистая установка винды? Насколько винда нагружает CPU? Остаются ли ресурсы для программного рендеринга?

anonymous ()
Ответ на: комментарий от intelfx

Это как? У меня Linux-хост, напоминаю. Есть вменяемые клиенты?

На хосте поднимаешь сетевой мост, через него подключаешь виртуалку к сети. Хост и ВМ видят друг друга. Клиент remmina+remmina-plugin-rdp. Копипаста работает в обе стороны.

проброса USB

usb пробрасываешь через virt-manager.

King_Carlo ★★★★★ ()
Ответ на: комментарий от Worron

Ага, только я не понял фикс уже смерджили или нет? И если да, то в какое ядро?

Confucij ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.