Core "virtual" yang Anda tetapkan untuk VM tersedia untuk digunakan dalam multi-pemrosesan dalam OS klien. Jika Anda hanya menetapkan satu inti ke VM, maka tidak ada kesempatan oleh OS tamu untuk mendistribusikan beban di beberapa inti. Jadi mari kita asumsikan beberapa skenario praktis:
Host dengan 4 CPU, tamu ditugaskan 1 CPU
- Mesin host menjalankan 4 core fisik
- OS klien dalam VM memberikan 1 inti
Dalam hal ini OS tamu hanya dapat menggunakan satu inti. Oleh karena itu, jika Anda menjalankan aplikasi multi-utas yang dapat menskala dengan baik pada beberapa inti, ia masih akan berjalan pada satu inti saja. Karena itu semua utas pada OS tamu harus berbagi satu inti fisik.
Menjalankan OS tamu dalam pengaturan ini yang memuat CPU sepenuhnya akan menghasilkan beban CPU OS host ~ 25% (satu dari 4 core dimuat pada host).
Tentu saja Anda masih dapat menjalankan tugas-tugas yang menghabiskan CPU di dalam OS host Anda dan memanfaatkan 3 core yang tersisa.
Tuan rumah dengan 4 CPU, tamu ditugaskan 4 CPU
- Mesin host menjalankan 4 core fisik
- OS klien dalam VM ditugaskan 4 core
Dalam hal ini Anda dapat menjalankan aplikasi multi-utas skala-baik dalam VM tamu yang dapat memanfaatkan sepenuhnya semua 4 CPU virtual. VirtualBox akan menggunakan 4 inti fisik untuk memproses tugas yang dijadwalkan dalam VM dan oleh karena itu beban CPU host Anda dapat mencapai maksimum penggunaan 100%.
Jadi pengaturan apa yang harus Anda pilih?
Jawaban atas pertanyaan ini sangat tergantung pada apa yang ingin Anda lakukan. Dalam beberapa kasus mungkin berguna untuk menetapkan semua core ke VM atau bahkan menjalankan banyak VM yang masing-masing memiliki jumlah CPU yang penuh. Dalam kasus seperti itu, VM dapat memanfaatkan sepenuhnya seluruh kekuatan pemrosesan host. Jika lebih banyak CPU ditugaskan untuk VM daripada yang sebenarnya hadir secara fisik maka VM akan dipengaruhi oleh beban pada VM yang berbeda. Untuk mencegah hal ini, Anda mungkin mendedikasikan beberapa core untuk VM tertentu. Misalnya menjalankan 2 VM dengan 2 CPU yang ditugaskan masing-masing pada simpul 4 inti dapat membantu bahwa masing-masing VM mendapatkan 2 CPU khusus (dengan asumsi tidak ada beban yang dikenakan oleh OS host yang mengambil bagian dari kekuatan pemrosesan juga).
Apakah itu berdampak negatif pada host saya untuk menetapkan semua core ke VM?
Sekali lagi ini tergantung pada perangkat lunak yang dijalankan. Jika Anda menjalankan VM yang idle (tidak ada program intensif CPU yang berjalan sama sekali) beban yang dikenakan oleh VM ini akan mendekati 0%. Anda bahkan dapat menjalankan 10 VM secara paralel dan masih mengalami beban CPU host hampir 0% jika semua VM menganggur.
Bagaimana CPU berperilaku pada beban yang tidak rata?
Ya, distribusi beban CPU sangat tergantung pada komponen bawaan OS yang disebut penjadwal. Untuk Windows XP, penjadwal mencoba bundar memuat semua core CPU. Jadi menjalankan tugas single-threaded dengan beban penuh pada CPU quad-core akan menghasilkan ~ 25% beban pada setiap core.
Sayangnya ini terbukti buruk bagi manajemen daya CPU modern. Untuk sistem modern, ini bahkan merupakan keuntungan jika satu inti dimuat hingga 100% sebelum inti kedua terlibat. Alasannya adalah selama tidak ada beban yang cukup untuk sepenuhnya menggunakan satu inti, inti lainnya dapat tetap dalam mode tidur nyenyak untuk menghemat energi dan mengurangi pembuangan panas.
Untuk beberapa CPU seperti Intel Core i-Series dan AMD yang lebih baru (Bulldozer) ini bahkan lebih menarik karena jika hanya sebagian dari core yang digunakan yang tidak terpakai dimatikan. Ini mengurangi konsumsi daya CPU. Baik (Intel dan AMD) mulai menggunakan anggaran konsumsi daya dan termal kemudian meng-overclock core yang aktif. Jadi ini dapat memberikan aplikasi single-threaded (yang tidak dapat didistribusikan ke beberapa core untuk mengerjakan tugas secara paralel). Namun ketika semua core aktif maka sebagian besar dari teknologi "boost" ini hanya memiliki efek kecil pada kekuatan pemrosesan karena situasi "all core active" adalah persis situasi yang dirancang untuk CPU.
Jadi jawabannya adalah bahwa core i7 Anda dengan sangat baik menangani beban yang tidak rata pada core tunggal dan bahkan mungkin memberikan peningkatan kinerja untuk aplikasi single-threaded. Namun peningkatan ini berada dalam kisaran beberapa persen sementara sebenarnya aplikasi multi-threaded yang dapat mendistribusikan beban di beberapa core CPU dapat didorong oleh faktor (x2 pada dual-core, 4x pada quad-core ...) dalam kasus optimal . Jadi multi-threading selalu memberikan lebih banyak kekuatan dalam hal daya CPU gabungan daripada threading tunggal dikombinasikan dengan clock boost.