QEMU 5.2 มาพร้อมกับการปรับปรุงสำหรับ RISC-V การเปลี่ยนแปลงคอมไพเลอร์และอื่น ๆ

QEMU

QEMU 5.2 ได้ถูกปล่อยออกมาแล้วและเวอร์ชันใหม่นี้มีการเปลี่ยนแปลงมากกว่า 3200 รายการจากนักพัฒนา 216 คนรวมถึงการรองรับการย้ายระบบแบบเรียลไทม์สำหรับ RISC-V การรองรับไฮเปอร์ไวเซอร์ RISC-V ในเชิงทดลอง การรองรับบอร์ดต่างๆ มากขึ้น และอื่นๆ อีกมากมาย

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

ในโหมดเวอร์ชวลไลเซชันใน QEMU ประสิทธิภาพของการรันโค้ดในสภาพแวดล้อมแบบแยกจะใกล้เคียงกับระบบฮาร์ดแวร์เนื่องจากการดำเนินการคำสั่งโดยตรงบน CPU และการใช้ Xen ไฮเปอร์ไวเซอร์หรือโมดูล KVM

ความแปลกใหม่หลักของ QEMU 5.2

ระบบการสร้างโปรแกรมมีการเปลี่ยนแปลงการคอมไพล์ QEMU ในปัจจุบันจำเป็นต้องติดตั้งชุดเครื่องมือ ninja ก่อน

มีการเพิ่มการสนับสนุนสำหรับไดรเวอร์อุปกรณ์บล็อกเพื่อให้สามารถใช้กระบวนการ qemu-storage-daemon ในพื้นหลังเป็นแบ็กเอนด์สำหรับ vhost-user-blkรวมถึงคำสั่ง QMP ใหม่ 'block-export-add' ซึ่งแทนที่คำสั่ง 'nbd-server-add' และให้การสนับสนุน 'qemu-storage-daemon'

สำหรับอิมเมจ qcow2 นั้น ได้เพิ่มการรองรับรีจิสเตอร์ L2 แบบขยายทำให้สามารถจัดสรรพื้นที่ให้กับกลุ่มที่ไม่สมบูรณ์ (ซับคลัสเตอร์) ได้ หากต้องการเปิดใช้งาน L2 เมื่อสร้างอิมเมจ คุณต้องระบุตัวเลือก "extended_l2 = on"

สิ่งที่น่าสนใจอีกอย่างคือ การปรับปรุงการสนับสนุนการใช้งาน qemu ในฐานะไคลเอ็นต์ NBDซึ่งช่วยลดจำนวนสถานการณ์ที่นำไปสู่การหมดเวลาเมื่อแลกเปลี่ยนข้อมูลผ่านเครือข่าย ซึ่งทำให้ระบบปฏิบัติการแขกถูกบล็อก Qemu-nbd ยังมีคุณสมบัติในการระบุตัวเลือก '-B name' หลายรายการเพื่อระบุบิตแมปที่เปลี่ยนแปลงหลายรายการพร้อมกันได้

การเปลี่ยนแปลงที่สำคัญอีกประการหนึ่งคือโหมดการย้ายข้อมูลประสิทธิภาพสูงแบบใหม่พร้อมการถ่ายโอนข้อมูลที่เข้ารหัสโดยใช้ TLS และ multifd ขีดจำกัดแบนด์วิดท์การย้ายข้อมูลเริ่มต้นได้เพิ่มขึ้นเป็น 1 Gbps

ได้เพิ่ม พารามิเตอร์การย้ายข้อมูล 'block-bitmap-mapping' ซึ่งช่วยให้ควบคุมการถ่ายโอนบิตแมปได้ละเอียดมากขึ้น พารามิเตอร์นี้ใช้งานได้แม้ว่าชื่อโฮสต์จะแตกต่างจากต้นทางที่ปลายทางก็ตาม

นอกจากนี้ ยังมีการเพิ่มฟังก์ชันใหม่ 'calc-dirty-rate' และ 'query-dirty-rate'เพื่อทำนายอัตราการอัปเดตในระหว่างการย้ายข้อมูล โดยคำนึงถึงภาระงานที่เกี่ยวข้องกับการดำเนินการใน RAM ด้วย

นอกจากนี้ เรา ยัง จะ พบการรองรับสำหรับบอร์ด mp2-an386, mp2-an500, raspi3ap (Raspberry Pi 3 รุ่น A+), raspi0 (Raspberry Pi Zero), raspi1ap (Raspberry Pi A+) และ npcm750-evb/quanta-gsj ด้วย

สำหรับสถาปัตยกรรม AArch32 จะมีการใช้งานส่วนขยาย ARMv8.2 FEAT_FP16 (จุด flaoting ที่มีความแม่นยำปานกลาง)

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

และรองรับการย้ายระบบแบบเรียลไทม์ไปยังอีมูเลเตอร์สถาปัตยกรรม RISC-Vรวมถึงการสนับสนุนไฮเปอร์ไวเซอร์แบบทดลองสำหรับ RISC-V ที่ได้รับการอัปเดตเป็นเวอร์ชัน 0.6.1 เพิ่มการสนับสนุนซ็อกเก็ต NUMA บนระบบ virt/Spike

การเปลี่ยนแปลงที่สำคัญอื่นๆในเวอร์ชันใหม่นี้ ได้แก่:

  • คำสั่ง guest-get-devices, guest-get-disks และ guest-ssh- {get, add-remove} -authorized-keys ถูกเพิ่มลงใน QEMU guest agent (qemu-ga)
  • เพิ่มการสนับสนุนสำหรับการทำบัญชีตามเวลา kvm
  • โปรแกรมจำลองสถาปัตยกรรม HPPA รองรับการบูต NetBSD และลีนุกซ์รุ่นเก่ามากเช่น Debian 0.5 และ 0.6.1
  • โปรแกรมจำลองสถาปัตยกรรม PowerPC ได้ปรับปรุงการสนับสนุนสำหรับระยะห่างที่ผู้ใช้กำหนดสำหรับโทโพโลยี NUMA
  • ตัวจำลองสถาปัตยกรรม s390 สำหรับ KVM เพิ่มการรองรับคำแนะนำในการวินิจฉัย 0x318
  • โปรแกรมสร้างโค้ดคลาสสิก TCG (Tiny Code Generator) รองรับคำสั่ง z14 เพิ่มเติม
  • บนอุปกรณ์ vfio-pci ข้อมูลเกี่ยวกับการทำงานของคอมพิวเตอร์จริงจะมีให้แทนคุณสมบัติที่เลียนแบบ
  • โปรแกรมจำลองสถาปัตยกรรม Xtensa เพิ่มการรองรับสำหรับโปรเซสเซอร์ร่วม DFPU ด้วย opcodes จุดลอยตัวที่มีความแม่นยำเดียวและสองเท่า

เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google