VirtualBox, dan mungkin perangkat lunak VM lainnya, memungkinkan pengguna untuk menentukan jumlah CPU yang terpapar pada VM. Dalam kasus khusus saya, saya memiliki CPU dual core, dengan Windows 7 64-bit berjalan secara native, dan Ubuntu 9,04 64-bit sebagai VM.
File bantuan menyarankan untuk tidak mengatur ini di atas jumlah core fisik yang tersedia. Ini masuk akal. Jadi, apakah lebih baik mengalokasikan 1 atau 2 core CPU? Apakah ini sepenuhnya tergantung pada beban CPU asli?
Informasi dalam jawaban ini tidak lagi benar . Itu benar pada hari-hari penjadwalan bersama yang ketat, tetapi tidak lagi demikian.
Saya menyimpan jawaban di bawah ini untuk kemakmuran, tapi tolong jangan mengandalkan itu agar akurat untuk hypervisor modern.
Anda tidak boleh menetapkan semua inti Anda sebagai vCPU di mesin virtual.
Jika VM meminta setiap waktu CPU, VMWare memiliki mengalokasikan baik semua yang vCPUs, atau tidak ada dari vCPUs tersebut.
Artinya, pada sistem 4-inti jika Anda mengalokasikan semua 4 core, maka hanya tuan rumah, atau tamu, yang dapat dialokasikan waktu prosesor, bukan keduanya pada saat yang sama.
Ini secara absolut akan merusak kinerja di kedua lingkungan.
Jangan ragu untuk mengalokasikan angka ganjil dari inti (katakanlah, 3). Rasanya aneh, tapi itu opsi yang sepenuhnya sah.
Secara umum saya tidak pernah mengalokasikan lebih dari (n / 2) vCPU (dalam kasus Anda, 2) - tetapi saya biasanya mengalokasikan core pada server dengan antara 12 dan 32 core di mana Anda dapat mengalokasikan sejumlah besar vCPU tanpa dampak besar.
sumber
Jumlah inti yang terpapar pada CPU tamu tidak mempengaruhi kinerja sebanyak yang Anda inginkan. Ini hanya menyesuaikan jumlah core yang "dilihat" CPU tamu.
Tergantung pada bagaimana emulator diatur, itu benar-benar bisa setengah kinerja mesin virtual, tidak melakukan apa-apa, atau hanya berdampak pada cara OS tamu / aplikasi membagi penjadwalan thread mereka.
Yang terbaik adalah membiarkannya ke default. Jika Anda mengalami masalah kinerja pada PC host, maka Anda dapat dengan mudah menyesuaikan prioritas proses dengan Windows Task Manager.
sumber
Seperti yang disebutkan Nate, selama VM Anda sebagian besar akan berfungsi menjalankan proses single-threaded, ada sedikit alasan untuk mengalokasikan lebih dari satu inti.
Namun, jika Anda berencana untuk menggunakannya dengan cara yang dapat mengambil manfaat dari lebih banyak inti (program multi-threaded, banyak program paralel, ..), ceritanya lebih rumit. Saya sebelumnya berasumsi bahwa menggunakan setengah dari CPU Anda untuk VM Anda adalah ide yang bagus. Ternyata ini tidak selalu optimal.
Satu-satunya cara untuk memastikan adalah menjalankan benchmark .. Saya tidak tahu mengapa, tetapi dalam sistem Core2 Quad saya (yang memiliki dukungan VT-x, pager bersarang, ..), sebenarnya menggunakan 1 dari 4 core berkinerja lebih baik daripada menggunakan 2 core atau lebih! Saya melihat ini hanya pada saat start-up dari VM, tetapi juga selama benchmark kompilasi.
Dengan hasil perangkat keras lainnya berbeda. Saya juga memiliki i7 dengan 8 core, dan kinerja tampaknya berskala lebih baik dengan jumlah core di sana (menggunakan 4 di sana dengan senang hati).
Kiat saya: patok perangkat keras baru terlebih dahulu.
sumber
Saya mempercayai penjadwal OS dan hanya mengatur VM ke # core fisik, kecuali Anda tahu bahwa Anda selalu ingin host memiliki inti yang berpotensi idle saat Anda sibuk di VM.
sumber
Ini tergantung pada apa yang ingin Anda lakukan pada mesin virtual dan juga pada mesin fisik. Jika Anda perlu menggunakan mesin virtual saat sistem operasi host sedang digunakan untuk beberapa aktivitas lain, mungkin lebih baik menggunakan dua core prosesor untuk VM sehingga host memiliki dua yang tersisa jika VM berada di bawah beban penuh. Di sisi lain, jika Anda bekerja terutama pada VM, Anda dapat menggunakan semua inti prosesor.
Namun, kecuali jika tamu dapat menggunakan keempat inti sekaligus, Anda dapat menggunakan semuanya dengan aman sambil terus bekerja pada OS host. Ingatlah bahwa Anda selalu dapat menyesuaikan prioritas proses VM saat sedang berjalan di sistem operasi host, dan sistem akan menyeimbangkan beban yang sesuai.
sumber
ya, saya juga mengatakan itu tergantung. Tetapi saya akan mengatakan apa yang saya sukai. Di tempat kerja saya memiliki CPU quad core. Jadi untuk gambar virtual saya (win7), saya telah mengalokasikan dua CPU. Dengan begitu, saya dapat menggunakan mesin host dan mesin virtual secara bersamaan, dan mereka masing-masing memiliki sumber daya CPU yang sama.
sumber