Saya mencoba menemukan beberapa dokumentasi atau panduan praktik terbaik untuk virtualisasi sehubungan dengan penyediaan vCPU per inti fisik (dari CPU). Jika itu penting, saya melihat vmWare untuk implementasi virtualisasi. Misalnya, CPU Intel Xeon mungkin memiliki 4, 8, dll. Saya tertarik untuk mempelajari lebih lanjut tentang penyediaan lebih dari satu vCPU per satu inti fisik. Vendor yang saya ajak bicara pasti berpikir bahwa satu inti dapat dimasukkan ke dalam beberapa vCPU.
Apa yang biasa saya lihat dalam penelitian saya sejauh ini adalah, "Yah, itu tergantung pada aplikasi Anda." Dan dalam hal itu, aplikasi saya mengedit kode, mengkompilasi / menghubungkan, pengujian, dan manajemen konfigurasi. Tentu saja tidak semua VM perlu dikonfigurasi dengan banyak vCPU per inti, tetapi dalam kasus umum.
Untuk memperluas pada penulisan ewwhite, kecuali Anda memiliki aplikasi yang secara eksplisit dapat memanfaatkan beberapa vCPU, atau beberapa core per vCPU, sama sekali tidak ada manfaat dalam mengalokasikan beberapa vCPU / core ke VM. Bahkan, lebih sering daripada tidak Anda akan benar-benar berakhir dengan kinerja yang lebih rendah dibandingkan dengan berjalan pada vCPU tunggal yang memiliki satu inti ditugaskan untuk itu, sebagian karena biaya penjadwalan yang diperlukan untuk menjalankan beberapa vCPU.
FWIW, dalam pengaturan VDI angka yang sering dikutip adalah 5 vCPU per inti fisik. Tentu saja itu memperhitungkan desktop pekerjaan kantor. Jika VM Anda benar-benar sibuk dengan kompilasi kode sepanjang waktu, Anda mungkin tidak dapat memuat 5 vCPU per inti fisik.
Alasan mengapa begitu banyak orang mengatakan bahwa "itu tergantung" adalah karena memang benar. Lihatlah nilai-nilai Ready CPU Anda dan kemudian putuskan apakah Anda dapat menempatkan lebih banyak CPU load pada sistem tertentu. CPU Ready adalah ukuran dari vCPU yang siap untuk mengeksekusi suatu perintah tetapi harus menunggu waktu fisik CPU tersedia.
Dalam kasus Anda, jika Anda mengompilasi program besar, sangat mungkin bahwa VM Anda akan benar-benar membutuhkan banyak waktu CPU. Seperti yang ewwhite catat, biasanya virtualisasi cenderung disk I / O dan RAM terbatas daripada CPU dibatasi.
sumber
absolutely zero benefit in allocating multiple vCPUs/cores to a VM
- tidak sepenuhnya benar. Kami memiliki aplikasi single-threaded yang digunakan untuk menggantung setiap minggu. Ketika satu vCPU 100% tidak mungkin untuk masuk ke sistem itu dan kami harus melakukan reset level hypervisor dari VM. Kami menambahkan vCPU ke-2 dan ketika aplikasi macet, kami dapat dengan mudah masuk dan membunuh utas yang menyinggung. Ini sedikit kasus tepi benar, tetapi Anda tidak pernah bisa berurusan dengan absolut.Masalah mendasar pada dasarnya sama dengan penjadwalan proses pada sistem fisik. Selama beban sistem di bawah jumlah inti (atau bahkan prosesor logis, dalam kasus HyperThreading) semuanya baik-baik saja dan prosesor dapat menangani beban.
Jadi selama beban bersamaan pada semua vCPU yang digunakan tidak melebihi beban yang dapat ditangani oleh core fisik Anda, semuanya baik-baik saja.
Untuk permintaan Anda, hanya mengkompilasi adalah pekerjaan intensif CPU, yang hanya diperlukan dari waktu ke waktu. Untuk kompiler-VM kami mengalokasikan CPU sebanyak mungkin. Jadi jika ada kebutuhan untuk mengkompilasi, itu akan dilakukan secepat mungkin (jika kompiler Anda mendukung kompilasi paralell).
Ini mungkin tidak berlaku untuk compiler-VM yang berada di bawah beban konstan (misalnya jika Anda menyediakan layanan internet untuk membuat kompilasi dan yang terus-menerus digunakan).
sumber
Satu aturan praktis yang saya lihat (mungkin dalam dokumentasi VMware) adalah tidak mengalokasikan lebih banyak core ke VM daripada yang ada secara fisik di host, karena itu akan menyebabkan beberapa vCores ditiru pada satu core, menambahkan overhead yang tidak perlu.
sumber