VirtualBox: Apakah ide yang buruk untuk menetapkan lebih banyak core CPU virtual daripada jumlah core CPU fisik

41

Karena saya memiliki CPU yang mampu Hyper-Threading , saya bertanya-tanya, apakah itu ide yang buruk untuk menetapkan lebih banyak core CPU virtual daripada jumlah core CPU fisik seperti yang diperingatkan oleh peringatan berikut:

Peringatan VirtualBox

Transkrip:

Lebih banyak CPU virtual ditugaskan ke mesin virtual daripada jumlah CPU fisik pada sistem host. Ini kemungkinan menurunkan kinerja mesin virtual Anda. Harap pertimbangkan untuk mengurangi jumlah CPU virtual.

Bisakah seseorang memberi alasan pada topik ini?

EDIT1:

CPU yang dimaksud adalah Intel Core i7-4700HQ, Ark Intel , Benchmark CPU

EDIT2:

Seandainya, tidak ada HW usang, seperti HDD (bukan SSD), dan / atau RAM Rendah (16GB di sini, minimum vm.swappiness, 4GB untuk VM ini), dan sebagainya.

LinuxSecurityFreak
sumber
2
Peringatan itu cukup akurat, dan tidak boleh diabaikan kecuali kinerja waktu-nyata tidak penting, atau jika hanya sedikit (perangkat lunak) beban yang diletakkan di mesin virtual. Lihat Jadi, apa itu core cpu logis (berbeda dengan cpu core fisik)?
agc
Seperti kata waring. Segalanya mungkin lebih cepat dengan lebih sedikit CPU di VM.
Rui F Ribeiro
Anda seharusnya tidak pernah masuk ke garis merah. Tidak apa-apa untuk menggunakan 4 "core" pada 4 core yang diaktifkan dengan HT. Untuk RAM, 50% dari RAM Anda harus melakukannya, bahkan jika bagian hijau di luar itu.
cylgalad
Di Virtualbox, "core" adalah semua utasnya, jadi jika Anda memiliki CPU dengan 4 core dan Hyperthreading, itu seperti 8 "core", jadi Anda sebenarnya dapat mengatur hingga 4 core virtual dalam satu VM jika Anda menjalankannya sendiri; itulah yang saya lakukan sepanjang waktu dan itu bekerja dengan baik.
cylgalad
Apa yang harus saya buktikan? Garis merah untuk lebih dari 4 "core" bagi saya, saya tidak pernah melampaui, dan saya tidak pernah menjalankan 2 VM pada saat yang sama. Jika Anda lebih suka risiko crash PC Anda dengan memberikan semua CPU ke VM dan Anda tidak melakukan apa pun di luar VM itu mungkin ok.
cylgalad

Jawaban:

30

Perangkat Keras / OS / Perangkat Lunak

Host : Linux Mint 18 Cinnamon 64-bit (sepenuhnya diperbarui); Kernel versi 4.4.0-47-generik

Tamu : Windows 8.1 Pro 64-bit (sepenuhnya diperbarui)

Prosesor : Intel Core i7-4700HQ , (cache 6MB, 4 core fisik, atau 8 menggunakan Hyper-Threading), Benchmark CPU

VirtualBox : Versi 5.1.10 r112026 (Qt5.5.1)

Penambahan Tamu : Terpasang dan terbaru

Benchmark Tool # 1 : WinRAR versi 5.40 final 64-bit

Benchmark Tool # 2 : VeraCrypt versi 1.19 final 64-bit


Persiapan

Dalam kedua kasus saya menunggu setelah boot sampai CPU, RAM, disk drive stabil di dekat titik nol hit.


metode

  1. Mengkloning mesin virtual asli untuk memiliki dua yang identik.
  2. Saya telah, untuk pass kedua, karena Antivirus yang dinonaktifkan untuk reboot menunjukkan di bagian bawah jawaban ini dan memperbarui WinRAR dalam kedua kasus dari Beta ke versi Final.
  3. Saya telah melakukan Persiapan yang sama seperti yang ditunjukkan sebelumnya.
  4. Mesin virtual berjalan di latar depan, tanpa menjalankan aplikasi lapar waktu CPU lainnya, saya telah menonaktifkan apa yang saya bisa untuk tujuan tes tidak terpengaruh.
  5. Untuk memasukkan potensi caching di dalam atau di luar sistem, saya menjalankan tes yang sama dua kali sebagai akibatnya. Manfaatnya hampir tidak ada.

Hasil

WinRAR

  1. 4 core => 7,5 menit ( waktu yang lebih singkat lebih baik)

    WinRAR dengan 4 core diaktifkan

    WinRAR dengan 4 core diaktifkan, 1.5GiB diproses dalam 7.5 menit.

  2. 8 core => 4,5 menit ( waktu yang lebih singkat lebih baik)

    WinRAR dengan 8 core diaktifkan

    WinRAR dengan 8 core diaktifkan, 1.5GiB diproses dalam 4,5 menit.


VeraCrypt

  1. 4 core => kecepatan 2.6 GiB / s ( kecepatan lebih tinggi lebih baik)

    VeraCrypt dengan 4 core diaktifkan

    VeraCrypt dengan 4 core diaktifkan, AES (AES-NI) yang dipercepat HW kecepatan 2,6 GiB / dtk.

  2. 8 core => kecepatan 3,9 GiB / s ( kecepatan lebih tinggi lebih baik)

    VeraCrypt dengan 8 core diaktifkan

    VeraCrypt dengan 8 core diaktifkan, HW-accelerated AES (AES-NI) kecepatan 3,9 GiB / s.


Kesimpulan

Saya bisa menjalankan tes sebanyak yang diperlukan. Tapi saya pikir, jika keduanya, salah satunya adalah tes kompresi yang agak kompleks, yang kedua adalah serangkaian tes enkripsi yang agak rumit, apa gunanya.

Kedua tolok ukur menunjukkan perbedaan yang nyata. Saya melihat tidak ada alasan untuk percaya, bahwa hasil mereka tidak akurat, karena saya mengikuti persiapan dan metode yang agak ketat, apalagi tes ini telah dilakukan di RAM untuk menyingkirkan hambatan I / O. Dari sudut pandang saya, peringatan yang disebutkan dalam pertanyaan mungkin berlaku untuk beberapa kondisi, tetapi tentu saja tidak semuanya. Setelah membagikan kepada Anda hasil yang sangat luar biasa ini, saya yakin Anda setuju dengan saya, bahwa peringatan ini mungkin tidak harus ditanggapi dengan serius pada CPU modern yang menampilkan Hyper-Threading dengan versi VirtualBox terbaru. Satu hal yang pasti: Jangan ambil kata saya dan mengujinya dalam kondisi Anda sendiri, sebelum Anda memutuskan untuk menerapkan pengaturan ini secara permanen.

LinuxSecurityFreak
sumber
Apakah Anda menjalankannya pada VM yang sama dengan inti yang diubah, atau dua VM yang berbeda (tetapi identik)? Jika VM yang sama, apakah Anda mencoba lagi dalam urutan lain sesudahnya untuk menyingkirkan kemungkinan pengaruh algoritma caching OS tamu?
Wildcard
Cobalah untuk menjalankan tes membakar CPU yang sebenarnya untuk bersenang-senang.
cylgalad
Sesuatu seperti prime95 setidaknya selama satu jam. Dan coba jelajahi web pada host secara bersamaan. Seperti yang saya katakan, tidak apa-apa jika Anda tidak melakukan apa-apa di host atau tidak menjalankan lebih dari satu VM sekaligus. Jika itu seburuk itu, batas akan diberlakukan di Virtualbox bukannya peringatan.
cylgalad
Hal lain yang dapat Anda coba tetapi mungkin lebih sulit. Instal gentoo atau Linux dari Scratch VM, dan periksa bagaimana keadaannya saat kompilasi secara intensif. Atau coba buat Chromium di VM.
cylgalad
@Vastimil sepenuhnya setuju. Dalam kasus saya, saya menggunakan VM untuk kompilasi C ++ (yang merupakan tugas cpu terikat) dan satu-satunya alasan saya mendapatkan cpu 16-core adalah untuk dapat mengkompilasi lebih cepat. Peringatan itu benar-benar omong kosong tanpa penjelasan yang tepat dan mengarah pada kesimpulan yang salah seperti "Hal-hal yang sebenarnya bisa lebih cepat dengan lebih sedikit CPU di VM"
Pavel P
16

Sebagai perancang OS, saya sepenuhnya setuju dengan hasil pengukuran. Jumlah omong kosong yang diproduksi di tempat lain tentang materi pelajaran sulit dipercaya.

Lihat jumlah core logis sebagai nomor paralel / proses yang dapat dieksekusi oleh HW. Itu dicapai dengan menggandakan misalnya register dan petunjuk instruksi dari inti CPU. Inti CPU itu sendiri sekarang memutuskan utas mana (penunjuk instruksi) yang akan digunakan. Ia akan memutuskan untuk menggunakan utas lainnya karena instruksi dari utas saat ini tidak tersedia dalam cache dan perlu diambil dari misalnya memori atau cache L3. Mekanisme ini akan menciptakan peningkatan potensial 10% -30% dalam instruksi / detik atau kinerja CPU.

Jika Anda menjalankan satu aplikasi dengan satu utas, Anda tidak akan dapat memetik manfaat ini, tetapi jika Anda menjalankan dua aplikasi beban tinggi pada mis. HT Pentium lama, Anda akan dapat memetik manfaatnya. Hal yang sama juga berlaku untuk aplikasi, yang memiliki lebih dari satu utas. Sistem Linux saya memiliki 200 utas, sehingga beberapa manfaat bergantung pada beban aktual selalu ada. Semua komentar ini berlaku tanpa virtualisasi.

Virtualbox hanya membatasi jumlah utas yang dapat berjalan secara paralel untuk setiap mesin virtual (VM), tetapi penjadwal proses host akan mengubah prosesor logis dan prosesor fisik, di mana proses VM berjalan secara dinamis. Jika Anda menjalankan aplikasi beban tinggi pada VM, core logis tambahan akan memberi Anda manfaat yang sama yaitu 10% -30%. Beban dapat berupa aplikasi multi-utas tunggal atau satu set aplikasi yang berbeda.

Pada sistem modern dengan VT-x atau AMD-V tidak ada penalti kinerja untuk memaksimalkan jumlah core logis, karena juga tidak ada penalti kinerja yang nyata untuk menjalankan lebih banyak mesin virtual pada saat yang sama. Batas Anda adalah kinerja chip CPU Anda, jadi Anda tidak dapat membuat video pada 3 VM secara bersamaan tanpa memperlambat setiap VM, karena mereka harus berbagi CPU fisik yang sama.

Sistem host Anda mungkin menjadi tidak responsif, jika Anda membuat video di VM dengan semua core logis yang ada, tetapi Anda akan memiliki masalah yang hampir sama, jika Anda menjalankan aplikasi rendering pada host Anda. Paling tidak di VM Anda punya pilihan dan Anda bisa menyelesaikannya dengan membatasi beban CPU maks hingga 80% -90% atau dengan mengurangi jumlah core karena alasan ini.

Bert Nijhof
sumber
0

Dua sen terbaik saya adalah tidak pernah menggunakan semua core / utas, biarkan satu atau dua untuk host.

Jadi dalam kasus Anda, berikan kepada tamu enam inti, tidak pernah inti ke delapan (karena Anda hanya memiliki 8 utas pada host).

Jika jumlah utas yang tersedia (jangan dikacaukan dengan inti) pada host adalah:

  • Jika <2, lebih baik tidak menggunakan mesin virtual sama sekali
  • Jika 2, gunakan mesin virtual pada mode mono-core atau ambil risiko dan gunakan tamu dual core
  • Jika> 2, lebih baik gunakan formula

Untuk lebih dari dua utas saya cenderung menggunakan rumus ini:

  • N = Jumlah utas untuk host
  • M = Jumlah mesin virtual bersamaan yang ingin saya jalankan (dengan asumsi keseimbangan yang sama, jumlah core tamu yang sama untuk setiap tamu)
  • Formula = (N-1) / M jika host hanya memiliki 4 utas atau kurang
  • Formula = (N-2) / M jika host memiliki lebih dari 4 utas

Pengalaman saya memberi tahu saya bahwa jauh lebih mulus dan lebih berisiko untuk tidak melewati batas formula tersebut.

Peringatan: Tidak diperbolehkan untuk mengubah jumlah core tamu saat menjalankan tamu, tetapi diperbolehkan untuk menurunkan penggunaan CPU dari 100% menjadi 75% atau juga 50%, tidak sedikit tamu yang gagal.

Jadi kadang-kadang saya cenderung memberikan kepada dua tamu 6 enam core pada host 8 thread (jumlah formula seolah-olah hanya satu tamu bukan dua tamu), tetapi membatasi mereka hingga 50% dari kecepatan CPU (sehingga kedua tamu dapat menggunakan 1 / 2 dari waktu CPU), tetapi hanya ketika saya tahu tamu akan menjalankan aplikasi yang memiliki lebih dari satu rasio paralel, seperti dengan perbandingan gambar / sambungan, dll.

Laura
sumber
1
Anda sendiri yang membuat formula ini? Atau bisakah Anda menambahkan kutipan?
LinuxSecurityFreak