เรามีคลัสเตอร์ Heartbeat / DRBD / Pacemaker / KVM / Qemu / libvirt ซึ่งประกอบด้วยสองโหนด แต่ละโหนดใช้งาน Ubuntu 12.04 64 Bit พร้อมแพ็คเกจ / เวอร์ชั่นต่อไปนี้:
- เคอร์เนล 3.2.0-32-generic # 51-Ubuntu SMP
- DRBD 8.3.11
- qemu-kvm 1.0 + noroms-0ubuntu14.3
- libvirt 0.9.13
- เครื่องกระตุ้นหัวใจ 1.1.7
- การเต้นของหัวใจ 3.0.5
แขกเสมือนกำลังใช้งาน Ubuntu 10.04 64 บิตและ Ubuntu 12.04 64 บิต เราใช้ฟีเจอร์ libvirt เพื่อส่งผ่านความสามารถของโฮสต์ CPU ไปยังผู้เยี่ยมชมเสมือนเพื่อให้ได้ประสิทธิภาพของ CPU ที่ดีที่สุด
ตอนนี้ที่นี่คือการตั้งค่าทั่วไปในคลัสเตอร์นี้:
- VM "การตรวจสอบ" มี 4 vCPU
- VM "การตรวจสอบ" ใช้ IDE เป็นดิสก์อินเตอร์เฟส (ขณะนี้เรากำลังเปลี่ยนเป็น VirtIO ด้วยเหตุผลที่ชัดเจน)
เราเพิ่งทำการทดสอบแบบง่าย ๆ ฉันรู้ว่าพวกเขาไม่ใช่มืออาชีพและไม่ถึงมาตรฐานระดับสูง แต่พวกเขาแสดงแนวโน้มที่แข็งแกร่งแล้ว:
โหนด A กำลังเรียกใช้ VM "bla" โหนด B กำลังเรียกใช้ VM "การตรวจสอบ"
เมื่อเราทำการซิงค์ไฟล์จาก VM "bla" ถึง VM "การตรวจสอบ" เราจะได้รับเพียง 12 MB / s เมื่อเราทำ dd อย่างง่าย ๆ ถ้า = / dev / null ของ = / tmp / blubb ภายใน VM "การตรวจสอบ" เราจะได้รับประมาณ 30 MB / s
จากนั้นเราเพิ่ม vCPU อีก 4 ตัวใน VM "การตรวจสอบ" และรีสตาร์ทมัน VM "การตรวจสอบ" ตอนนี้มี 8 vCPU เราทำการทดสอบซ้ำด้วยผลลัพธ์ต่อไปนี้: เมื่อเราทำการซิงค์ไฟล์จาก VM "bla" ถึง VM "การตรวจสอบ" เราจะได้รับ 36 MB / s เมื่อเราทำ dd อย่างง่าย ๆ ถ้า = / dev / null ของ = / tmp / blubb ภายใน VM "การตรวจสอบ" ตอนนี้เราบรรลุถึง 61 MB / s
สำหรับฉันเอฟเฟกต์นี้ค่อนข้างน่าแปลกใจ ทำไมการเพิ่มซีพียูเสมือนจริงมากขึ้นสำหรับแขกเสมือนนี้จึงทำให้ดิสก์มีประสิทธิภาพมากขึ้นใน VM?
ฉันไม่มีคำอธิบายเกี่ยวกับเรื่องนี้และจะขอบคุณความคิดเห็นของคุณ ฉันต้องการที่จะเข้าใจสิ่งที่ทำให้ประสิทธิภาพการทำงานนี้เพิ่มขึ้นเนื่องจากฉันสามารถทำซ้ำพฤติกรรมนี้ได้ 100%
kvm_trace
เพื่อดูจำนวนIO_Exits
การเปลี่ยนแปลงเมื่อคุณเปลี่ยนหมายเลข CPU ฉันเดาว่าเป็นเพราะคุณใช้ IDE ซึ่งได้รับการจัดกำหนดการกับซีพียูแขก ด้วย virtio ประสิทธิภาพควรจะสอดคล้องกันและเมื่อ data-plane เป็น qemu มันจะได้รับการเพิ่มขึ้นอย่างมาก การเดาอื่นอาจเป็นข้อเท็จจริงที่ว่าคุณกำลังใช้การแจกจ่ายที่เป็นที่รู้จักสำหรับกองการจำลองเสมือนของ buggy