Host Quad Core dengan hyper-threading, berapa banyak prosesor yang perlu dikonfigurasi di VirtualBox?

10

Saya memiliki prosesor quad-core i7 dengan hyperthreading (8 core logis), ketika saya mengkonfigurasi mesin virtual untuk menggunakan 8 prosesor, VirtualBox memberi saya peringatan yang mengatakan bahwa saya hanya memiliki empat core (yang benar) dan ini dapat menyebabkan masalah kinerja. Tapi hyper-threading adalah fitur perangkat keras, sehingga OS melihat 8 core dan mengirimkan instruksi ke semua 8. Bagaimana jika pengaturannya ke 4 menyebabkan VM menggunakan 2 core (4 thread) alih-alih 4 thread simultan (pada semua 4 core) )? Apakah saya mendapat peringatan bahwa mesin saya mengalami hyper-threading?

Anthony
sumber

Jawaban:

9

Berdasarkan tolok ukur yang dilakukan oleh Kristian Wedberg saya akan mengatakan Anda harus menggunakan semua core logis yang Anda miliki.
Saya juga melakukan benchmark sendiri menggunakan CPU yang sama (i7, 4 CPU dengan HT) yang mengkonfirmasi peningkatan kinerja untuk aplikasi multi-threaded. Jika guest PC (Win. 8.1 x64) menggunakan semua 8 core, maka host PC (Ubuntu x64) juga menggunakan semua 8 core.

masukkan deskripsi gambar di sini

Saya membandingkan juga kinerja dalam aplikasi single-threaded. Dalam kedua kasus saya mengukur nilai yang sama sehingga tidak ada penalti menggunakan lebih dari jumlah fisik (tetapi hingga logis) CPU.
Di sini Anda dapat melihat bahwa 1 CPU beban penuh di PC tamu akan menghasilkan 1 beban CPU di PC host.

masukkan deskripsi gambar di sini

icl7126
sumber
Sepakat. Saya menggunakan 4 core dan ternyata hanya membutuhkan sekitar 50% waktu CPU ketika membangun proyek saya. Kemudian terlepas dari peringatan itu, saya berubah menjadi 8 yang merupakan jumlah core logis, build membutuhkan waktu CPU 100% dan saya percaya itu berjalan lebih cepat dari sebelumnya.
Deqing
Ini cukup menarik, saya ingat pernah membaca bahwa Linux secara khusus mencoba memfokuskan beban pada 1 inti logis dari setiap inti HT fisik untuk meningkatkan efisiensi. Saya bertanya-tanya apakah kernel Linux tamu dapat melihat bahwa CPU hyper-threaded dan mengoptimalkan penjadwalan untuk jenis konfigurasi tersebut.
Anthony
8

Saya menemukan bahwa meskipun dimungkinkan (dan bisa dibilang lebih cepat) di VirtualBox (pengalaman saya adalah dengan versi 5.1.0) untuk mengalokasikan vCPUs ke VM berdasarkan pada prosesor logis, seseorang dapat mengalami masalah di dalam OS tamu ketika berjalan pada beban tinggi . Dalam kasus saya, Windows 2012 R2 VM dengan 12 vCPU pada 8 inti Ubuntu 16.04 host (yang melaporkan 16 prosesor logis) akan BSOD selama beban CPU yang tinggi dengan pesan kesalahan DPC_WATCHDOG_VIOLATION. Analisis minidump menggunakan osronline.com menunjukkan e1g6032e.sys (pengandar jaringan Intel 100/1000 yang berasal dari Windows) menjadi penyebab pelanggaran.

Ini membuat saya percaya bahwa waktu di dalam OS tamu dipengaruhi secara negatif ketika mengalokasikan vCPU berdasarkan kapasitas prosesor logis dan menjalankan VM pada beban tinggi untuk periode yang lama. Dalam kasus saya, 100% beban CPU di dalam Windows VM selama beberapa menit akan menghasilkan BSOD. Setelah mengurangi jumlah vCPU menjadi 8 (yang sesuai dengan jumlah inti fisik host), Windows VM tidak BSOD lagi di bawah situasi beban tinggi serupa. The dokumentasi online dari VirtualBox mengatakan kita harus melakukan ini, tetapi tidak menawarkan alasan apapun.

Di lingkungan saya ada juga dua VM Ubuntu lain yang berjalan, masing-masing dengan 8 vCPU mereka sendiri. Namun beban pada mereka sangat minim pada saat masalah BSOD Windows VM.

Albert Gazendam
sumber
Jawaban yang luar biasa (dengan sumber), terima kasih! Beberapa tahun terlambat, tetapi sekarang saya tahu :)
Anthony
2

Apakah saya mendapat peringatan bahwa mesin saya mengalami hyper-threading?

Iya. Jika Anda mengatur jumlah core dalam VM menjadi lebih besar dari jumlah yang Anda miliki secara fisik, proses penjadwalan tugas di Virtual Box melebihi komit sumber daya CPU, yang mengarah ke masalah kinerja utama.

Adapun mendistribusikan beban melintasi core, itu adalah tugas OS host, dan harus berperilaku di manor yang benar.

pengguna195560
sumber
4
Apakah Anda memiliki data untuk mendukung pernyataan Anda? Seseorang melakukan riset envobi.com/post/virtualbox-hyper-threading-benchmark-surprise dan mereka merekomendasikan pengaturan jumlah CPU Kotak Virtual ke jumlah CPU logis .
Maxim Egorushkin
0

Apakah ini VM asli untuk mesin Anda? Terkadang Anda akan mendapatkan kesalahan khusus jika Anda mengkloning VM dan memindahkannya ke komputer lain dan / atau mengubah pengaturan.
Saya sarankan mengunduh dan menginstal versi terbaru dari Virtual Box dengan ekstensi terbaru.

Saya telah melakukan semua delapan core dan saya tidak menerima kesalahan itu dengan i7 saya menjalankan VM dengan Ubuntu 13.10.

ClaireW
sumber