Keterbatasan Proses Hyper-V


14

Kami baru saja membeli server yang menjalankan bare metal Hyper-V 2008 R2. Server memiliki dua prosesor Intel Xeon quad-core dengan hyperthreading, jadi jika saya mengerti benar ini memberi kita 16 core. Dalam Hyper-V kami telah membuat mesin virtual yang menjalankan Windows Server 2008 R2 dengan 4 prosesor virtual. Layar pengaturan prosesor memberi tahu saya bahwa ini mewakili 25% dari total daya pemrosesan sistem. Apakah ini berarti bahwa 75% sisanya tidak dapat disadap oleh OS virtual? Kami akan menjalankan beberapa mesin virtual lainnya, tetapi yang ini untuk SQL Server dan kami ingin memberikan sebanyak mungkin tenaga kuda.


5
Anda ingin sangat berhati-hati dalam mengalokasikan vCPU ke mesin. Ini berarti bahwa mesin virtual harus menunggu sampai ada 4 prosesor fisik yang tersedia pada saat yang sama sebelum dapat dijalankan. Lihat di sini
Holocryptic

6
Sejauh Hyperthreading berjalan, lihatlah primer yang luar biasa ini: arstechnica.com/old/content/2002/10/hyperthreading.ars
Hyppy

4
Holocryptic, pernyataan Anda benar untuk sistem VMWare yang lebih lama, tetapi tidak pernah benar untuk Hyper-V. Hyper-V tidak "menjadwalkan" prosesor virtual.
Jake Oshins

Jawaban:


15

VCPU hanya dapat dipetakan ke satu CPU fisik. Anda tidak dapat mengambil 4 CPU fisik dan membuat vCPU tunggal yang 4x lebih cepat; hanya saja bukan cara kerjanya.

Hyper-V terbatas untuk menetapkan 4 vCPUs ke VM (terakhir saya periksa). Jika Anda membutuhkan daya CPU yang signifikan, lakukan fisik, tidak ada gunanya menambahkan overhead virtualisasi ke sesuatu yang intensif dan paralel CPU di tempat pertama.

Juga, seperti yang dicatat Holocryptic, jika Anda menetapkan 4 vCPUs ke VM, VM itu tidak dapat berjalan sampai Hyper-V telah memperoleh 4 core CPU fisik untuk menjalankannya. Bergantung pada konfigurasi Anda, ini bisa menjadi batu sandungan utama (mis., Jika Anda memiliki mesin 6-inti dengan banyak VM vCPU, hanya satu yang akan berjalan pada satu waktu, dua core lainnya akan selalu berjalan pada dasarnya tidak digunakan). Menurut Jake Oshins ini tidak benar untuk versi Hyper-V. Dia menyatakan bahwa Hyper-V tidak menggunakan penjadwalan geng untuk CPU; seperti hampir semua hypervisor lainnya. Dengan demikian, jika satu inti CPU fisik tersedia, Hyper-V dapat menggunakannya untuk menjalankan VM multi-CPU. (Disebutkan juga, Hyper-V mungkin tidak menggunakan semua core fisik yang tersedia pada saat itu karena partisi NUMA)

Catatan: SQL tidak harus menggunakan semua core yang bisa Anda lemparkan. Ini benar-benar tergantung pada apa yang Anda gunakan untuk dan seberapa paralel bebannya.


Saya setuju, tetapi overhead pada CPU virtual hampir tidak ada, dan jarang ikut bermain.
Nate

4
Chris, catatan Holocryptic benar-benar salah. Hyper-V tidak menunggu sampai ada 4 CPU virtual gratis sebelum menjadwalkan prosesor virtual dari VM 4 VP. Hyper-V menjadwalkan prosesor virtual setiap kali prosesor fisik bebas menjalankannya, dengan beberapa peringatan. Sebagai contoh, ia mencari prosesor fisik dalam simpul NUMA fisik yang sama dengan sisa VM.
Jake Oshins

3

Ya, apa kata Chris. Jika Anda membutuhkan lebih dari 4 CPU dalam mesin virtual Hyper-V maka buatlah dua server SQL dalam virtual dan sebarkan database Anda atau lakukan fisik. Bergantung pada lisensi server SQL Anda, Anda mungkin dapat menambahkan lebih banyak server SQL dalam virtual (pada host fisik yang sama) tanpa menimbulkan biaya lisensi lebih banyak, tetapi baca kertas putih lisensi virtual SQL untuk info lebih lanjut.

Saya juga setuju bahwa jika Anda memiliki SQL kehabisan daya CPU dengan 4 CPU virtual maka Anda punya beberapa pemanfaatan aplikasi serius atau perintah SQL ditulis dengan buruk.


1
Re: "... atau perintah SQL ditulis dengan buruk." Ini hampir dijamin, setiap kali kode yang disediakan vendor dalam permainan.
Skyhawk

Memang, sebagian besar lalu lintas basis data adalah hal-hal OLTP dari sistem ERP kami. Kami juga memiliki sistem alur kerja dari vendor yang sama. Barang-barang khusus yang ditulis di rumah adalah persentase kecil.
Scott

Basis data lama kami berjalan maksimal pada 4 core logis (dua CPU dual-core), jadi kami berharap akan membutuhkan lebih dari itu.
Scott

0

Tentang 4 batas inti CPU:

Di bagian file konfigurasi VM:

[prosesor] ​​[tipe hitung = ”integer”] 16 [/ hitung]

Sekarang Anda memiliki 16 core CPU.

UPDATE: Tampaknya tangkapan layar diperlukan

masukkan deskripsi gambar di sini


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.