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:
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.
virtualbox
virtual-machine
performance
cpu
hyperthreading
LinuxSecurityFreak
sumber
sumber
Jawaban:
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
Hasil
WinRAR
4 core => 7,5 menit ( waktu yang lebih singkat lebih baik)
WinRAR dengan 4 core diaktifkan, 1.5GiB diproses dalam 7.5 menit.
8 core => 4,5 menit ( waktu yang lebih singkat lebih baik)
WinRAR dengan 8 core diaktifkan, 1.5GiB diproses dalam 4,5 menit.
VeraCrypt
4 core => kecepatan 2.6 GiB / s ( kecepatan lebih tinggi lebih baik)
VeraCrypt dengan 4 core diaktifkan, AES (AES-NI) yang dipercepat HW kecepatan 2,6 GiB / dtk.
8 core => kecepatan 3,9 GiB / s ( kecepatan lebih tinggi lebih baik)
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.
sumber
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.
sumber
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:
Untuk lebih dari dua utas saya cenderung menggunakan rumus ini:
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.
sumber