Apakah kinerja QEMU (masih) tertinggal dari VirtualBox dan apakah ada cara untuk memperbaikinya tanpa dukungan perangkat keras + modul kernel kvm?

9

Saya telah memperhatikan beberapa artikel yang mengklaim bahwa QEMU lebih lambat dari VirtualBox (tanpa bantuan perangkat keras) tetapi beberapa sudah berumur, dan yang terbaru sepertinya berasal dari tahun lalu.

  • Benarkah QEMU lebih lambat dari VirtualBox?
  • Jika demikian mengapa?
  • Apakah ada trik untuk menutup kesenjangan kinerja?

Beberapa sistem host saya tidak memiliki dukungan virtualisasi perangkat keras jadi saya sangat tertarik dengan kiat-kiat kinerja yang berfungsi tanpa modul kernel.

Catskul
sumber

Jawaban:

10

Jika Anda berbicara tentang virtualisasi x86 pada host x86, maklum bahwa kqemu (modul kernel akselerasi lama untuk qemu) sudah usang. Kernel Virtual Machine (KVM) adalah "jalan ke depan" tetapi hanya bekerja pada host Linux. Tamu dapat berupa OS apa pun yang Anda inginkan asalkan arsitektur x86.

Lintas arsitektur, qemu masih sangat lambat; baru hari ini saya mencoba qemu terbaru dengan Debian MIPS64 di guest .... itu bisa digunakan dari terminal tapi sangat lambat di Xorg. sepengetahuan saya, Anda tidak dapat menggunakan instruksi akselerasi prosesor seperti tabel halaman diperpanjang atau VT-x ketika Anda akan lintas arsitektur. Semuanya ditiru dalam perangkat lunak.

Jadi untuk virtualisasi x86 hingga x86, qemu "mentah" lambat, tetapi KVM (yang menggunakan qemu) cepat. Cukup cepat. Begitu cepat sehingga solusi virtualisasi yang direkomendasikan Red Hat untuk RHEL.

VirtualBox masih menerbangkan apa pun yang dapat ditawarkan qemu / kvm dalam hal kinerja grafis 2d / 3d yang dipercepat perangkat keras, karena kvm berfokus pada virtualisasi server dan virtualbox berfokus pada virtualisasi desktop. Tapi saya pasti akan merekomendasikan Anda memeriksa kvm jika Anda berurusan dengan server.

Sunting: Untuk host Anda yang tidak memiliki akselerasi perangkat keras, Anda akan menderita overhead yang cukup besar terlepas dari solusi apa yang Anda gunakan. Meniru hal-hal perangkat keras dalam perangkat lunak itu sulit, dan mahal.

allquixotic
sumber
2
ls $(which kvm)menunjukkan symlink ke qemu-system-x86_64. Saya menduga itulah yang Anda bicarakan dengan KVM menggunakan QEMU?
Catskul
Ya, tapi KVM adalah, seperti namanya, mesin virtual berbasis kernel , yang berarti bahwa nyali hypervisor ada di modul kernel 'kvm'. Anda bisa menganggapnya mirip dengan kqemu lama jika Anda mau, tetapi secara arsitektur sangat berbeda. qemu lebih merupakan sebuah frontend daripada hypervisor aktual ketika kvm beroperasi.
allquixotic
Oh, saya lupa menambahkan: alasan mengapa qemu (dan sistem virtualisasi lainnya) sangat lambat tanpa "modul kernel" (seperti yang Anda katakan; apa yang Anda maksudkan adalah "tanpa akselerasi perangkat keras") adalah operasi perangkat keras tertentu yang menyebabkan Performa tamu sangat sulit untuk ditiru dalam perangkat lunak. Ya, tidak sulit dalam hal tidak dapat diandalkan atau rumit; hanya sloooooooooooooow. Itu sebabnya Intel menghabiskan sebagian dari dekade ini dengan memberi kami instruksi yang dipercepat perangkat keras untuk bit virtualisasi paling lambat di jalan VT-x dan EPT. Satu-satunya perbaikan adalah menggunakan perangkat keras yang mendukung set instruksi ini.
allquixotic
Apakah ada sesuatu yang membuat virtualbox lebih cepat bahkan tanpa akselerasi perangkat keras?
Catskul
Tidak. Tanpa akselerasi perangkat keras, kinerjanya harus sama. VirtualBox mungkin memiliki optimasi x86 canggih yang membuatnya berjalan sedikit lebih cepat dalam perangkat lunak, yang akan tepat karena virtualbox hanya mendukung x86 di tempat pertama, sementara qemu memiliki lapangan bermain yang lebih luas (arsitektur non-x86). Tapi ini adalah implementasi / desain detail yang pada dasarnya akan turun ke lokasi cache, dioptimalkan loop batin, assembler kode tangan, caching I / O disk sisi host atau trik lainnya. Tidak yakin sampai sejauh mana vbox melakukan hal-hal yang tidak dilakukan qemu tetapi tidak terlalu relevan ...
allquixotic
1

Dengan asumsi host dengan CPU yang mampu virtualisasi (Intel VT-x, AMD SVM), menjalankan Qemu pada kernel (Linux dengan KVM), itu cukup cepat.

Alasan teknis mengapa Qemu lambat dengan 2D (youtube, spreadsheet, game) dan emulasi 3D tidak jelas bagi saya. Namun, saya dapat menebak bahwa "driver video" tidak cukup baik - perangkat keras grafis dalam perangkat keras tidak digunakan secara optimal.

Sisi baiknya, perkembangan terbaru memperkenalkan kerangka SPICE untuk qemu. Sebenarnya umurnya beberapa tahun dan tampaknya cukup matang. Manfaat kinerja video dari menjalankan dengan driver video QXL sangat besar dalam pengalaman saya (pengembangan web 2D). Saya tidak tahu seberapa baik ini dibandingkan dengan Virtualbox, tapi ini jelas merupakan peningkatan. Saya pikir SPICE harus dimiliki oleh siapa saja yang menjalankan Windows di Qemu.

Ini semata-mata pendapat saya dan harus dicatat bahwa saya belum pernah mencoba menjalankan pemutaran 3D atau video di tamu.

Ярослав Рахматуллин
sumber
1
Jika dengan "emulasi berorientasi grafis" Anda merujuk pada akselerasi 3D, itu karena GPU tidak dapat divirtualisasikan seperti CPU. Emulasi perangkat lunak sangat lambat, sehingga saat ini ada dua solusi: 1. Passthrough API (mis. Panggilan DirectX pada tamu dieksekusi sebagai panggilan DirectX pada host) 2. VGA passthrough (kesepakatan sebenarnya: seluruh kartu grafis tersedia untuk tamu). QEMU mendukung # 2.
Marcus
@Marcus Passthrough adalah cara untuk pergi.
Ярослав Рахматуллин