Praktik Terbaik: vCPU per inti fisik

27

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.

Watson
sumber

Jawaban:

24

CPU fisik tunggal dapat digunakan sebagai vCPUs sebanyak mungkin. Anda jarang kehabisan sumber daya CPU dalam solusi virtualisasi. RAM dan penyimpanan selalu menjadi faktor pembatas ...

Ingat, di VMware, utilisasi CPU direpresentasikan dalam MHz yang digunakan, bukan core ... Kecuali jika Anda mengelompokkan semua CPU virtual Anda pada 100% SEMUA WAKTU , saya tidak berpikir vendor Anda benar.

Mari kita lihat kumpulan sistem berikut ...

  • 9 host ESXi.
  • 160 mesin virtual
  • 104 core CPU fisik melintasi cluster.
  • Profil mesin virtual rata-rata adalah: 4 vCPU dan 4GB hingga 18GB RAM.
  • CPU dapat oversubscribed dengan aman ... tetapi ingat, CPU juga dapat dibatasi, dicadangkan, dan diprioritaskan pada tingkat VM.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

dari cluster aktif lain - 3 host 42 mesin virtual masukkan deskripsi gambar di sini

putih
sumber
4
Setelah melihat 3936 migrasi vMotion saya tidak merasa terlalu buruk tentang 1.200 kami
Mark Henderson
2
Saya melihat statistik pada VM cluster kami kemarin yang menunjukkan angka-angka yang diberikan oleh @ewwhite. Kami memiliki 3 host, total 24 prosesor dan 55 GHz. Kami memiliki 59 VM dengan total 79 vCPU yang dialokasikan. Menurut statistik vSphere, selama 6 bulan terakhir, kami telah menggunakan rata-rata sedikit lebih dari 14 GHz (min 9 GHz, maks 25 GHz), dan selama waktu itu ada 0 CPU Core Count Contention.
Paul Gear
7

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.

Extractor Realitas
sumber
13
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.
Mark Henderson
4
Apa yang ditulis Mark adalah alasan mengapa kami menggunakan dua core sebagai batas bawah untuk setiap VM - tidak peduli apakah mereka membutuhkannya, atau tidak.
Nils
2
Nilai siap adalah cara terbaik untuk mengetahui apakah Anda melebihi penyediaan host Anda, nilai siap Anda harus serendah mungkin. Ini adalah% waktu VM "siap" untuk menggunakan siklus CPU, tetapi harus menunggu karena CPU sibuk dengan tugas lain. Untuk menjelaskan mengapa memberikan vm banyak core Anda dapat memiliki dampak kinerja saya akan menggunakan contoh sederhana: jika saya memiliki 4 core fisik, dan 4vms, jika Anda memiliki 3 VM dengan 2cores dan satu vm dengan 4 core, VM kecil Anda akan secara otomatis mendapatkan lebih banyak siklus, karena mereka dapat "cocok" lebih baik dalam beberapa. Pergi konservatif mungkin dengan Anda vcpus!
Rqomey
@MarkHenderson Saya bisa melihat bagaimana itu bisa bermanfaat, dan hal seperti itu berpotensi terjadi pada orang yang mengajukan pertanyaan sejak dia bekerja dengan kompiler.
Reality Extractor
@Nils Saya percaya bahwa memberikan setiap core VM 2 apakah ada kebutuhan bisnis untuk itu atau tidak adalah ide yang sangat buruk. Ini dapat dengan mudah mempengaruhi Anda secara negatif dalam banyak hal, ukuran slot, core yang tidak cukup tersedia untuk restart / failover, kehilangan kinerja karena apa yang ditulis Rqomey, hanya banyak hal lainnya. Anda hampir selalu bisa masuk ke VM Anda melalui vCenter dan DCUI.
Reality Extractor
3

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).

Nils
sumber
2

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.

Paul Gear
sumber
1
Bagaimana dengan yang sebaliknya? Bagaimana jika saya memiliki Xeon 6-core dan saya hanya mengalokasikan 4 core di VM? Lalu bagaimana kinerjanya? Apakah sistem VM dapat memanen kekuatan dari semua 6 core fisik atau akan terbatas pada 4?
Overmind
Jika Anda hanya memberikannya 4 core, itu hanya akan memiliki akses ke 4 core sekaligus. Tetapi pengertian saya (tidak dikonfirmasi) adalah bahwa 4 core virtual tersebut dapat dialokasikan pada 4 dari 6 core fisik, kecuali Anda telah mengkonfigurasi pinning.
Paul Gear