Hiệu năng (vẫn) của QEMU có làm chậm VirtualBox không và có cách nào để cải thiện nó mà không cần mô-đun hạt nhân + kvm hỗ trợ phần cứng không?


9

Tôi đã nhận thấy một số bài báo đã tuyên bố rằng QEMU chậm hơn VirtualBox (không có hỗ trợ phần cứng) nhưng một số bài đã cũ và có vẻ như mới nhất là từ năm ngoái.

  • Có đúng là QEMU chậm hơn VirtualBox không?
  • Nếu vậy tại sao?
  • Có bất kỳ thủ thuật để thu hẹp khoảng cách hiệu suất?

Một số hệ thống máy chủ của tôi không có hỗ trợ ảo hóa phần cứng, vì vậy tôi đặc biệt quan tâm đến các mẹo hiệu suất hoạt động mà không có mô-đun hạt nhân.

Câu trả lời:


10

Nếu bạn đang nói về ảo hóa x86 trên máy chủ x86, hãy lưu ý rằng kqemu (mô-đun hạt nhân tăng tốc cũ cho qemu) không được dùng nữa. Kernel Virtual Machine (KVM) là "con đường phía trước" nhưng nó chỉ hoạt động trên các máy chủ Linux. Khách có thể là bất cứ hệ điều hành nào bạn muốn miễn là kiến ​​trúc x86.

Kiến trúc chéo, qemu vẫn còn rất chậm; chỉ hôm nay tôi đã thử qemu mới nhất với Debian MIPS64 trong khách .... nó có thể sử dụng được từ một thiết bị đầu cuối nhưng chậm kinh khủng trong Xorg. theo hiểu biết tốt nhất của tôi, bạn không thể sử dụng các hướng dẫn tăng tốc của bộ xử lý như bảng trang mở rộng hoặc VT-x khi bạn đi kiến ​​trúc chéo. Tất cả đều được mô phỏng trong phần mềm.

Vì vậy, đối với ảo hóa x86 đến x86, qemu "thô" chậm, nhưng KVM ( sử dụng qemu) thì nhanh. Khá nhanh. Nhanh đến mức đó là giải pháp ảo hóa được đề nghị của Red Hat cho RHEL.

VirtualBox vẫn thổi bay mọi thứ mà qemu / kvm có thể cung cấp về hiệu năng đồ họa 2d / 3d được tăng tốc phần cứng, bởi vì kvm tập trung vào ảo hóa máy chủ và virtualbox tập trung vào ảo hóa máy tính để bàn. Nhưng tôi chắc chắn khuyên bạn nên kiểm tra kvm nếu bạn giao dịch với máy chủ.

Chỉnh sửa: Đối với máy chủ của bạn không có bất kỳ khả năng tăng tốc phần cứng nào, bạn sẽ phải chịu một chi phí khá lớn cho dù bạn sử dụng giải pháp ưu việt nào. Giả lập những thứ phần cứng trong phần mềm là khó, và tốn kém.


2
ls $(which kvm)hiển thị một liên kết tượng trưng đến qemu-system-x86_64. Tôi đoán đó chính xác là những gì bạn đã nói về KVM khi sử dụng QEMU?
Catskul

Đúng, nhưng KVM, đúng như tên gọi của nó, là một máy ảo dựa trên kernel , có nghĩa là ruột của trình ảo hóa nằm trong mô-đun hạt nhân 'kvm'. Bạn có thể nghĩ nó giống với kqemu cũ nếu bạn muốn, nhưng về mặt kiến ​​trúc thì nó rất khác. qemu là một frontend hơn là một trình ảo hóa thực tế khi kvm đang hoạt động.
allquixotic

Ồ, tôi quên thêm: lý do tại sao qemu (và bất kỳ hệ thống ảo hóa nào khác) quá chậm mà không có "mô-đun hạt nhân" (như bạn nói; điều bạn thực sự muốn nói là "không tăng tốc phần cứng") là do một số hoạt động phần cứng nhất định mà khách biểu diễn rất khó để mô phỏng trong phần mềm. Vâng, không khó về mặt không đáng tin cậy hoặc phức tạp; chỉ slooooooooooooow. Đó là lý do tại sao Intel dành phần tốt hơn của một thập kỷ để cung cấp cho chúng tôi các hướng dẫn tăng tốc phần cứng cho các bit ảo hóa chậm nhất theo cách của VT-x và EPT. Cách khắc phục duy nhất là sử dụng phần cứng hỗ trợ các bộ hướng dẫn này.
allquixotic

Có một cái gì đó làm cho Virtualbox nhanh hơn ngay cả khi không tăng tốc phần cứng?
Catskul

Không. Không có gia tốc phần cứng, hiệu suất sẽ khá bằng nhau. VirtualBox có thể có các tối ưu hóa x86 nâng cao giúp phần mềm chạy nhanh hơn một chút, điều này sẽ phù hợp vì Virtualbox chỉ hỗ trợ x86 ở vị trí đầu tiên, trong khi qemu có sân chơi rộng hơn nhiều (kiến trúc không phải là x86). Nhưng đây là một chi tiết triển khai / thiết kế về cơ bản sẽ đi vào bộ nhớ cache cục bộ, các vòng lặp bên trong được tối ưu hóa, trình biên dịch mã hóa bằng tay, bộ đệm I / O phía máy chủ hoặc các thủ thuật khác. Không chắc chắn ở mức độ nào vbox làm những điều này mà qemu không có nhưng chúng không liên quan lắm ...
allquixotic

1

Giả sử một máy chủ có CPU có khả năng ảo hóa (Intel VT-x, AMD SVM), chạy Qemu trên kernel (Linux với KVM), nó khá nhanh.

Những lý do kỹ thuật khiến Qemu bị chậm với 2D (youtube, bảng tính, trò chơi) và mô phỏng 3D là điều tối nghĩa với tôi. Tuy nhiên, tôi có thể đoán rằng "trình điều khiển video" đơn giản là không đủ tốt - phần cứng đồ họa trong phần cứng không được sử dụng theo cách tối ưu.

Về mặt tươi sáng, một phát triển gần đây đã giới thiệu khuôn khổ SPICE cho qemu. Thật ra nó đã vài tuổi và có vẻ chín chắn một cách hợp lý. Những lợi ích về hiệu suất video khi chạy với trình điều khiển video QXL là rất lớn trong trải nghiệm của tôi (phát triển web 2D). Tôi không biết nó so sánh với Virtualbox tốt như thế nào, nhưng đây chắc chắn là một cải tiến. Tôi nghĩ SPICE là phải có cho bất cứ ai chạy Windows trong Qemu.

Đây chỉ là ý kiến ​​của tôi và cần lưu ý rằng tôi thậm chí chưa bao giờ thử chạy bất kỳ phát lại 3D hoặc video nào trong khách.


1
Nếu theo "mô phỏng hướng đồ họa" mà bạn đề cập đến khả năng tăng tốc 3D, thì đó là do GPU không thể được ảo hóa như CPU. Việc mô phỏng phần mềm rất chậm, vì vậy hiện nay có hai giải pháp: 1. Truyền thông qua API (tức là các cuộc gọi DirectX trong máy khách được thực hiện dưới dạng cuộc gọi DirectX trên máy chủ) 2. VGA passthrough (thỏa thuận thực sự: toàn bộ card đồ họa được cung cấp cho khách). QEMU hỗ trợ # 2.
Marcus

@Marcus Vượt qua là con đường để đi.
Ярослав Рахматуллин
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.