Kelola jumlah vCPU dan inti dalam mesin virtual

Saat membuat mesin virtual pada berbagai hypervisor (VMWare, KVM, Hyper-V, dll.), Anda mungkin memperhatikan bahwa kadang-kadang mesin virtual mungkin tidak melihat semua core virtual yang dialokasikan untuk itu (vCPU). Dalam kasus kami, 8 vCPU dialokasikan ke mesin virtual KVM, Windows 10 diinstal di atasnya.Namun, Windows mendefinisikan kernel ini sebagai prosesor terpisah, yang hanya dapat digunakan 2 vCPU.

Konten:

  • Mesin virtual Windows 10 tidak melihat semua kernel
  • Jumlah prosesor yang didukung di Windows 10
  • Mengelola Kernel Virtual dan vCPU di KVM
  • Mengkonfigurasi prosesor virtual dan jumlah core di VMWare
  • Arsitektur NUMA dan vCPU virtual

Mesin virtual Windows 10 tidak melihat semua kernel

Jika Anda membuka manajer perangkat Windows, Anda dapat memastikan bahwa semua kernel yang dipilih terlihat sebagai 8 prosesor virtual terpisah dari jenis tersebut. QEMU Virtual CPU versi 2.5.

Pada saat yang sama, di properti Windows 10 (Komputer -> Properti) dan di Tugas Kelola dapat dilihat bahwa hanya 2 QEMU Virtual CPU yang tersedia di komputer.

Artinya, tidak peduli berapa banyak inti virtual yang Anda tambahkan, Windows 10 masih dapat menggunakan hanya dua. Pada saat yang sama, server virtual tetangga dengan Window Server 2016 pada hypervisor yang sama melihat semua 16 vCPU dialokasikan untuk itu.

Jumlah prosesor yang didukung di Windows 10

Masalahnya adalah bahwa dalam edisi desktop Windows (Windows 10 / 8.1 / 7) ada batasan jumlah maksimum prosesor fisik (soket), komputer mana yang dapat digunakan:

  • Windows 10 Home - 1 CPU
  • Windows 10 Professional - 2 CPU
  • Windows 10 Workstation - hingga 4 CPU
  • Windows Server 2016 - hingga 64 CPU

Namun, pembatasan ini tidak berlaku untuk kernel. Yaitu untuk kinerja yang lebih baik Anda dapat menggunakan prosesor dengan banyak core. Kebanyakan hypervisor dapat memberikan vCPU dalam bentuk prosesor, inti prosesor, atau bahkan utas. Yaitu alih-alih 8 CPU virtual, Anda dapat memberikan vCPU dalam bentuk 2 soket dengan 4 core di masing-masing. Mari kita pertimbangkan bagaimana membedakan prosesor virtual dalam bentuk core di berbagai sistem virtualisasi dan bagaimana menghubungkannya dengan arsitektur NUMA yang digunakan dalam prosesor modern.

Mengelola Kernel Virtual dan vCPU di KVM

Di mesin virtual saya Kvm c Windows 10, semua core virtual yang ditugaskan dianggap sebagai prosesor terpisah.

Untuk menggunakan semua sumber daya CPU yang dialokasikan untuk mesin virtual, mesin virtual perlu melihat bukan 8 prosesor, tetapi satu prosesor 8-inti, 2 prosesor dengan 4 core atau 1 prosesor dengan 4 core dengan 2 utas. Mari kita coba mengubah cara VM ditugaskan untuk VM di KVM.

Matikan mesin virtual:

# virsh shutdown server.vpn.ru - di mana server.vpn.ru adalah nama dari mesin virtual.

Fitur mengelola VM di KVM dari konsol server menggunakan virsh.

Cetak konfigurasi XML saat ini dari mesin virtual KVM:

# virsh dumpxml server.vpn.ru

Kami tertarik pada blok dengan deskripsi prosesor:

8 1000 / mesin hvm        

Seperti yang Anda lihat, kami baru saja menetapkan 8 vCPU. Ubah konfigurasi:

# virsh edit server.vpn.ru

Dan sesudahnya tambahkan:

   

Dimana:

  • tuan rumah-passthrough - mode emulasi di mana prosesor virtual dari node cluster (node) akan ditampilkan pada mesin virtual.
  • soket = '1' - menunjukkan prosesor itu 1
  • core = '4' - menunjukkan bahwa prosesor memiliki 4 core
  • utas = '2' - menunjukkan bahwa kami memiliki 2 utas

Simpan file konfigurasi dan mulai VM. Masuk ke VM tamu dengan Windows 10 dan di Task Manager atau Resource Monitor periksa apakah OS melihat semua kernel virtual yang dipilih.

Juga, sifat-sifat sistem sekarang mulai menampilkan prosesor fisik host Intel (R) Xeon (R) Silver 4114 CPU, bukan virtual.

Jadi kami berhasil menyelesaikan masalah dengan beban pada VM, karena dua core tidak cukup untuk aplikasi lengkap.

Mengkonfigurasi prosesor virtual dan jumlah core di VMWare

Anda dapat mengubah cara vCPU disajikan untuk mesin virtual VMWare dari antarmuka vSphere Client.

  1. Matikan VM dan buka pengaturannya;
  2. Perluas Bagian CPU;
  3. Ubah konfigurasi VM sehingga OS tamu dapat melihat 2 prosesor dengan 4 core. Ubah nilai Core per socket oleh 4. Ini berarti bahwa OS tamu akan melihat dua prosesor empat-inti (2 soket dengan 4 core);
  4. Simpan perubahan dan mulai VM.

Arsitektur NUMA dan vCPU virtual

Ada beberapa aspek lain dari penugasan vCPU dan kernel untuk mesin virtual yang perlu Anda pahami..

Saat menetapkan inti pada soket, pertimbangkan Arsitektur NUMA (digunakan di sebagian besar CPU modern). Tidak disarankan untuk menetapkan pada VM Anda jumlah core per socket (dan jumlah total vCPU) lebih besar dari core yang tersedia pada socket / prosesor fisik Anda (NUMA node). Ketika ditempatkan pada satu simpul fisik NUMA, mesin virtual akan dapat menggunakan RAM lokal cepat yang tersedia pada simpul NUMA tertentu. Jika tidak, untuk menyelesaikan operasi, proses harus menunggu respons dari simpul NUMA lain (yang agak lebih panjang).

Jika Anda menetapkan dua soket virtual terpisah untuk VM, maka hypervisor dapat menjalankannya di berbagai NUMA node. Yang bukan cara terbaik untuk mempengaruhi kinerja VM.

Jika jumlah vCPU yang diperlukan melebihi jumlah inti pada 1 soket fisik (NUMA node), Anda perlu membuat beberapa soket virtual (prosesor) dengan jumlah inti yang diperlukan. Juga tidak disarankan untuk menggunakan jumlah prosesor yang ganjil (lebih baik menambahkan 1 vCPU)

Ini akan menghemat kinerja mesin virtual..

Misalnya, untuk 2 host prosesor dengan 10 core (total 40 vCPU tersedia dengan mempertimbangkan Hiper-Threading), ketika mengkonfigurasi vCPU untuk VM, optimal untuk menggunakan konfigurasi berikut:

Jumlah vCPU yang dibutuhkanJumlah soket virtual dalam pengaturan VMJumlah core pada prosesor virtual dalam pengaturan VM
111
...
10110
11Tidak optimal
1226
...
20210
Dalam versi gratis ESXi, Anda tidak dapat membuat VM dengan lebih dari 8 vCPU.

Sebagai contoh, VM dengan Microsoft SQL Server 2016 Enterprise Edition 16 vCPU dalam konfigurasi 8 soket dengan 2 core akan bekerja lebih buruk daripada di konfigurasi 2 soket dengan 8 core.

Juga, ingat bahwa beberapa aplikasi dilisensikan pada soket fisik (seperti halnya dengan versi SQL Server yang lebih lama). Kadang-kadang itu hanya lebih menguntungkan bagi Anda untuk melisensikan satu prosesor multi-core daripada beberapa prosesor dengan core lebih sedikit.

Versi Windows Server modern dilisensikan dalam lingkungan virtualisasi dengan cara khusus. Ada juga fitur untuk prosesor lisensi di VMWare vSphere.