it-swarm.asia

Apakah ada pengaturan optimal untuk jumlah core CPU yang terpapar VM?

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?

23
sblair

Ini sepenuhnya tergantung pada apa yang dilakukan OS tamu. Dalam pengalaman pribadi saya, VM menjalankan satu program (membangun server, server trac, SVN, dll) sehingga tidak ada alasan untuk mengaturnya di atas satu.

Suatu kemungkinan kasus adalah jika itu adalah pengguna akhir di katakanlah Universitas yang menggunakan OS tamu sebagai throwaway (mis. TA) maka mungkin mengaturnya ke lebih tinggi dari satu.

6
Nate

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 seharusnya tidak pernah menetapkan semua inti Anda sebagai vCPU di mesin virtual.

Jika VM meminta setiap waktu CPU, VMWare memiliki untuk mengalokasikan salah semua vCPUs, atau tidak ada dari vCPUs .

Artinya, pada sistem 4-inti jika Anda mengalokasikan semua 4 core, maka hanya Host, 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) - tapi saya biasanya mengalokasikan core pada server dengan antara 12 dan 32 core di mana Anda dapat mengalokasikan sejumlah besar vCPU tanpa dampak besar.

17
Mark Henderson

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 Host PC, maka Anda dapat dengan mudah menyesuaikan prioritas proses dengan Windows Task Manager.

3
Breakthrough

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.

3
Arnout

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 inti prosesor untuk VM sehingga Host memiliki dua sisanya jika VM berada di bawah muatan 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 sesuai dengan itu.

1
bwDraco

Saya mempercayai penjadwal OS dan hanya mengatur VM ke # inti fisik, kecuali Anda tahu bahwa Anda selalu ingin Host memiliki inti yang berpotensi idle saat Anda sibuk di VM.

1
Andrew Coleson

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.

0
Joel Martinez