Kami memiliki cluster Heartbeat / DRBD / Pacemaker / KVM / Qemu / libvirt yang terdiri dari dua node. Setiap node menjalankan Ubuntu 12.04 64 Bit dengan paket / versi berikut:
- Kernel 3.2.0-32-generik # 51-Ubuntu SMP
- DRBD 8.3.11
- qemu-kvm 1.0 + noroms-0ubuntu14.3
- libvirt 0.9.13
- alat pacu jantung 1.1.7
- detak jantung 3.0.5
Para tamu virtual menjalankan Ubuntu 10.04 64 Bit dan Ubuntu 12.04 64 Bit. Kami menggunakan fitur libvirt untuk memberikan kemampuan CPU host kepada tamu virtual untuk mencapai kinerja CPU terbaik.
Sekarang di sini adalah pengaturan umum pada klaster ini:
- VM "monitoring" memiliki 4 vCPU
- VM "monitoring" menggunakan ide sebagai antarmuka disk (kami saat ini beralih ke VirtIO karena alasan yang jelas)
Kami baru-baru ini menjalankan beberapa tes sederhana. Saya tahu mereka tidak profesional dan tidak mencapai standar tinggi, tetapi mereka sudah menunjukkan tren yang kuat:
Node A menjalankan VM "bla" Node B menjalankan VM "monitoring"
Ketika kami rsync file dari VM "bla" ke VM "monitoring" kami hanya mencapai 12 MB / s. Ketika kami melakukan dd sederhana jika = / dev / null dari = / tmp / blubb di dalam "pemantauan" VM, kami mencapai sekitar 30 MB / s.
Kemudian kami menambahkan 4 vCPU lainnya ke VM "monitoring" dan restart itu. VM "monitoring" sekarang memiliki 8 vCPU. Kami menjalankan ulang pengujian dengan hasil berikut: Ketika kami rsync file dari VM "bla" ke VM "monitoring" sekarang kami mencapai 36 MB / s. Ketika kita melakukan dd sederhana jika = / dev / null dari = / tmp / blubb di dalam "pemantauan" VM sekarang kita mencapai sekitar 61 MB / s.
Bagi saya, efek ini cukup mengejutkan. Kenapa itu tampaknya menambahkan lebih banyak CPU virtual untuk tamu virtual ini secara otomatis berarti lebih banyak kinerja disk di dalam VM?
Saya tidak punya penjelasan untuk ini dan akan sangat menghargai masukan Anda. Saya ingin memahami apa yang menyebabkan peningkatan kinerja ini karena saya dapat mereproduksi perilaku ini 100%.
kvm_trace
untuk melihat bagaimana jumlahIO_Exits
perubahan ketika Anda mengubah nomor CPU. Saya kira itu karena Anda menggunakan IDE, yang dijadwalkan dengan CPU tamu. Dengan virtio kinerjanya harus konsisten, dan ketika data-plane dalam qemu, itu akan mendapatkan dorongan drastis. Dugaan lain bisa pada kenyataan bahwa Anda menggunakan distribusi yang dikenal untuk tumpukan virtualisasi kereta.Jawaban:
Saya akan memberikan ide / penjelasan yang sangat kasar.
Dalam situasi OP, selain mengukur dalam VM, tuan rumah juga harus melihat.
Dalam hal ini, kita dapat mengasumsikan yang berikut ini benar
"monitoring"
) I / O meningkat dengan lebih banyak CPU yang dialokasikan untuk itu. Jika host I / O sudah maksimal, tidak boleh ada peningkatan kinerja I / O."bla"
bukan faktor pembatas Karena"monitoring"
kinerja I / O membaik tanpa perubahan ke"bla"
Faktor tambahan
Apa yang terjadi ketika lebih banyak CPU ditugaskan
"monitoring"
?Ketika
"monitoring"
dialokasikan lebih banyak CPU, itu mendapatkan lebih banyak kekuatan pemrosesan, tetapi juga mendapatkan lebih banyak waktu pemrosesan untuk I / O.Ini tidak ada hubungannya dengan
rsync
karena ini adalah program utas tunggal.Ini adalah lapisan I / O yang memanfaatkan daya CPU yang meningkat, atau lebih tepatnya, peningkatan waktu pemrosesan.
Jika program pemantauan cpu (mis. Atas) digunakan
"monitoring"
selama pengujian, itu akan menunjukkan tidak satu, tetapi semua penggunaan cpu naik, dan juga% wa. % wa adalah waktu tunggu yang dihabiskan untuk I / O.Peningkatan kinerja ini hanya akan terjadi ketika host I / O Anda tidak maksimal. di luar.
Saya tidak dapat menemukan penjadwalan cpu di situs KVM, tetapi ada blog yang menyebutkan bahwa KVM menggunakan CFS dan cgroup, berikut ini adalah kutipannya.
Singkatnya, lebih banyak CPU = lebih banyak waktu CPU = lebih banyak slot waktu I / O dalam periode waktu tertentu.
sumber