ประสิทธิภาพของ QEMU (ยังคง) ชะลอ VirtualBox หรือไม่และมีวิธีการปรับปรุงโดยไม่ต้องใช้ฮาร์ดแวร์ + เคอร์เนลโมดูล kvm หรือไม่?


9

ฉันสังเกตเห็นหลายบทความที่อ้างว่า QEMU นั้นช้ากว่า VirtualBox (โดยไม่ได้รับความช่วยเหลือด้านฮาร์ดแวร์) แต่มีหลายปีที่ผ่านมาและดูเหมือนว่าล่าสุดจะมาจากปีที่แล้ว

  • จริงหรือที่ QEMU ช้ากว่า VirtualBox
  • ถ้าเป็นเช่นนั้นทำไม
  • มีเทคนิคใด ๆ ในการปิดช่องว่างของประสิทธิภาพหรือไม่

ระบบโฮสต์ของฉันบางระบบไม่มีการสนับสนุนการจำลองเสมือนสำหรับฮาร์ดแวร์ดังนั้นฉันจึงสนใจเป็นพิเศษในเคล็ดลับประสิทธิภาพที่ทำงานโดยไม่มีโมดูลเคอร์เนล

คำตอบ:


10

หากคุณกำลังพูดถึง virtualization x86 ในโฮสต์ x86 ขอแนะนำว่า kqemu (โมดูลเคอร์เนลเร่งความเร็วเก่าสำหรับ qemu) เลิกใช้แล้ว Kernel Virtual Machine (KVM) คือ "หนทางข้างหน้า" แต่ใช้งานได้กับโฮสต์ Linux เท่านั้น แขกสามารถเป็นอะไรก็ได้ที่คุณต้องการตราบเท่าที่มันเป็นสถาปัตยกรรม x86

ข้ามสถาปัตยกรรม qemu ยังช้าจริง ๆ แค่วันนี้ฉันลอง qemu ล่าสุดกับ Debian MIPS64 ในแขกรับเชิญ .... มันใช้งานได้จากเครื่องปลายทาง แต่ช้ามากใน Xorg เพื่อความรู้ของฉันที่ดีที่สุดคุณไม่สามารถใช้คำแนะนำการเร่งความเร็วโปรเซสเซอร์เช่นตารางหน้าขยายหรือ VT-x เมื่อคุณกำลังข้ามสถาปัตยกรรม มันจำลองทั้งหมดในซอฟต์แวร์

ดังนั้นสำหรับ virtualization x86 ถึง x86 "qemu" raw "จะช้า แต่ KVM (ซึ่งใช้ qemu) นั้นรวดเร็ว ค่อนข้างเร็ว เร็วจนเป็นโซลูชันเวอร์ช่วลไลเซชั่นเสมือนจริงที่ Red Hat แนะนำสำหรับ RHEL

VirtualBox ยังคงระเบิดสิ่งที่ qemu / kvm สามารถนำเสนอในแง่ของประสิทธิภาพกราฟิก 2d / 3d กราฟิกเร่งฮาร์ดแวร์เนื่องจาก kvm มุ่งเน้นไปที่การจำลองเสมือนของเซิร์ฟเวอร์และ VirtualBox มุ่งเน้นไปที่การจำลองเสมือนบนเดสก์ท็อป แต่ฉันขอแนะนำให้คุณตรวจสอบ kvm หากคุณจัดการกับเซิร์ฟเวอร์

แก้ไข: สำหรับโฮสต์ของคุณที่ไม่มีการเร่งความเร็วด้วยฮาร์ดแวร์คุณจะประสบกับค่าใช้จ่ายที่ค่อนข้างใหญ่โดยไม่คำนึงถึงวิธีการแก้ปัญหาที่คุณใช้ การเลียนแบบฮาร์ดแวร์ในซอฟต์แวร์นั้นยากและมีราคาแพง


2
ls $(which kvm)การแสดง symlink qemu-system-x86_64ไป ฉันเดาว่านั่นคือสิ่งที่คุณกำลังพูดถึงด้วย KVM โดยใช้ QEMU?
Catskul

ใช่ แต่ KVM เป็นชื่อที่แสดงถึงเครื่องเสมือนที่ใช้เคอร์เนลซึ่งหมายความว่าเครื่องในระบบไฮเปอร์ไวเซอร์อยู่ในโมดูลเคอร์เนล 'kvm' คุณสามารถคิดว่ามันคล้ายกับ kqemu รุ่นเก่าถ้าคุณต้องการ แต่ในทางสถาปัตยกรรมมันแตกต่างกันมาก qemu เป็นส่วนหน้ามากกว่าไฮเปอร์ไวเซอร์จริงเมื่อ kvm ทำงาน
allquixotic

โอ้ฉันลืมเพิ่ม: สาเหตุที่ qemu (และระบบเวอร์ชวลไลเซชันอื่น ๆ ) นั้นช้ามากโดยไม่มี "เคอร์เนลโมดูล" (ตามที่คุณพูดสิ่งที่คุณหมายถึงจริงๆคือ "ไม่มีการเร่งความเร็วฮาร์ดแวร์") คือการทำงานของฮาร์ดแวร์บางอย่าง แขกรับเชิญเป็นการยากมากที่จะเลียนแบบในซอฟต์แวร์ ไม่ยากในแง่ของความน่าเชื่อถือหรือซับซ้อน แค่ sloooooooooooooooow นั่นเป็นเหตุผลที่ Intel ใช้เวลาส่วนที่ดีกว่าหนึ่งทศวรรษในการให้คำแนะนำเร่งด้วยฮาร์ดแวร์สำหรับการจำลองเสมือนบิตที่ช้าที่สุดในทางของ VT-x และ EPT การแก้ไขเพียงอย่างเดียวคือการใช้ฮาร์ดแวร์ที่รองรับชุดคำสั่งเหล่านี้
allquixotic

มีบางสิ่งที่ทำให้ virtualbox เร็วขึ้นแม้ว่าจะไม่มีการเร่งฮาร์ดแวร์
Catskul

ไม่หากไม่มีการเร่งความเร็วฮาร์ดแวร์ประสิทธิภาพควรเท่ากัน VirtualBox อาจมีการเพิ่มประสิทธิภาพ x86 ขั้นสูงที่ทำให้มันทำงานได้เร็วขึ้นเล็กน้อยในซอฟต์แวร์ซึ่งจะเหมาะสมเนื่องจาก VirtualBox รองรับเฉพาะ x86 ในตอนแรกในขณะที่ qemu มีสนามเด็กเล่นที่กว้างกว่า (ไม่ใช่ x86 สถาปัตยกรรม) แต่นี่เป็นรายละเอียดการนำไปใช้งาน / การออกแบบซึ่งโดยทั่วไปจะลงไปที่แคชภายใน, ลูปภายในที่ดีที่สุด, แอสเซมเบลอร์ที่เข้ารหัสด้วยมือ, การแคช I / O ของดิสก์โฮสต์หรือเทคนิคอื่น ๆ ไม่แน่ใจว่า vbox ทำสิ่งเหล่านี้ในระดับใดที่ qemu ทำไม่ได้ แต่มันไม่เกี่ยวข้องมาก ...
allquixotic

1

สมมติว่าโฮสต์กับซีพียูที่มีความสามารถในการจำลองเสมือน (Intel VT-x, AMD SVM) ซึ่งใช้ Qemu บนเคอร์เนล (Linux พร้อม KVM) จะเร็วพอสมควร

เหตุผลทางเทคนิคสำหรับ Qemu นั้นช้าด้วย 2D (youtube, สเปรดชีต, เกม) และการจำลอง 3 มิตินั้นไม่ชัดเจนสำหรับฉัน อย่างไรก็ตามฉันสามารถคาดเดาได้ว่า "ไดรเวอร์วิดีโอ" ไม่ดีพอ - ฮาร์ดแวร์กราฟิกในฮาร์ดแวร์ไม่ได้ใช้อย่างเหมาะสมที่สุด

ในด้านที่สดใสการพัฒนาเมื่อเร็ว ๆ นี้ได้นำเสนอกรอบการทำงานของ SPICE สำหรับ qemu จริงๆแล้วมันมีอายุไม่กี่ปีและดูเป็นผู้ใหญ่พอสมควร ข้อดีของประสิทธิภาพวิดีโอในการทำงานกับไดรเวอร์วิดีโอ QXL นั้นใหญ่หลวงมากในประสบการณ์ของฉัน (การพัฒนาเว็บ 2D) ฉันไม่รู้ว่ามันเปรียบเทียบกับ Virtualbox ได้ดีแค่ไหน แต่เป็นการปรับปรุงอย่างแน่นอน ฉันคิดว่า SPICE เป็นสิ่งที่ต้องมีสำหรับทุกคนที่ใช้ Windows ใน Qemu

นี่เป็นความเห็นของฉัน แต่เพียงผู้เดียวและควรสังเกตว่าฉันไม่เคยลองเล่น 3D หรือวิดีโอใด ๆ ในแขก


1
หากตาม "การจำลองเชิงกราฟิก" คุณอ้างถึงการเร่งความเร็วแบบ 3 มิตินั่นเป็นเพราะ GPU ไม่สามารถจำลองเสมือนเช่น CPU ได้ การเลียนแบบซอฟต์แวร์เป็นไปไม่ได้ช้าดังนั้นในปัจจุบันจึงมีสองวิธีแก้ปัญหา: 1. API passthrough (เช่น. การเรียกใช้ DirectX ในแขกจะถูกดำเนินการเป็นการเรียกใช้ DirectX บนโฮสต์) 2. VGA passthrough (ข้อตกลงจริง: กราฟิกการ์ดทั้งหมดมีให้บริการ ให้กับแขก) QEMU รองรับ # 2
มาร์คัส

@Marcus Passthrough เป็นวิธีที่จะไป
ЯрославРахматуллин
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.