โฮสต์ KVM ของฉันมีซีพียู 4 คอร์ (อ่อนแอเล็กน้อย) และเรียกใช้เคอร์เนลที่กำหนดค่าตามเวลาจริง (ด้วย preempt_rt_full, isolcpus, no_hz เต็ม) แกนที่ 2 และ 3 ถูกแยกออกจากกัน
เคอร์เนลแขกของฉันยังได้รับการกำหนดค่าแบบเรียลไทม์ (ด้วย preempt_rt_full และ no_hz_full)
เมื่อเรียกใช้ผู้เยี่ยมชมสองคนด้วย 1 vcpu (หนึ่งผู้เยี่ยมชมในแต่ละคอร์ที่แยกออกมา) เวลาในการตอบสนองจะไม่สังเกตเห็นได้ นี่คือผลลัพธ์ของ cyclictest:
VM1:/home/debian# cyclictest --default-system
T: 0 ( 737) P: 0 I: 1000 C: 50458 ต่ำสุด: 17 Act: 207 เฉลี่ย: 187 สูงสุด: 1275
VM2:/home/debian# cyclictest --default-system
T: 0 ( 737) P: 0 I:1000 C: 58514 ต่ำสุด: 15 Act: 193 เฉลี่ย: 181 สูงสุด: 1186
เมื่อรันแขกหนึ่งคนด้วย 2 vcpu (บนแกนแยกทั้งสอง) เวลาแฝงจะสูงมาก นี่คือผลลัพธ์ของ cyclictest:
VM1:/home/debian# cyclictest --default-system
T: 0 ( 737) P: 0 I:1000 C: 40795 Min: 11 Act: 207 Avg: 697 Max: 775899
ฉันลองวิธีแก้ปัญหาหลายอย่างไม่สำเร็จ:
- เรียกใช้แขกที่กำหนดค่า 2 vcpu โดยไม่มีความสัมพันธ์ของ cpu (เช่นในคอร์ 0 และ 1)
- เรียกใช้ kvm daemon (libvirtd) บนคอร์เดียวกันกับแขก (ดังนั้นในคอร์ 2 และ 3)
- การถอดคอนโทรลเลอร์ที่ไม่จำเป็นออก (แท็บเล็ต, ...)
- เพิ่ม RAM ที่จัดสรรให้กับแขก
คุณรู้ไหมว่าฉันล้มเหลวตรงไหน?