Bir VM'ye maruz kalan CPU çekirdeği sayısı için en uygun ayar var mı?


23

VirtualBox ve muhtemelen başka bir VM yazılımı, kullanıcının VM'ye maruz kalan CPU sayısını belirlemesini sağlar. Benim özel durumumda, Windows 7 64-bit doğal olarak çalışan çift çekirdekli bir işlemciye ve VM olarak Ubuntu 9.04-64-bit kullanıyorum.

Yardım dosyası, bunu mevcut fiziksel çekirdek sayısının üstüne koymamayı önerir. Bu mantıklı. Peki 1 veya 2 CPU çekirdeği ayırmak en iyisi midir? Bu tamamen yerel CPU yüküne mi bağlı?

Yanıtlar:


6

Bu tamamen konuk işletim sisteminin ne yaptığına bağlıdır. Kişisel deneyimime göre, bir VM tek bir program çalıştırıyor (sunucu, trac sunucu, SVN, vb.).

Muhtemel bir durum, misafir işletim sistemini bir atılgan olarak kullanan bir üniversitenin (yani TA) olduğunu söyleyen bir kullanıcı olması durumunda olabilir;


Yani, başka bir deyişle: geçici bir sistem için, CPU çekirdek kotasını maksimuma çıkarabilirsiniz; ancak "normal" veya tipik kullanım için, onu bir çekirdeğe ayarlayın (bu nedenle, ana işletim sisteminin performansına çok fazla müdahale etmeyin)?
sblair

18

Bu cevaptaki bilgiler artık doğru değil . Sıkı eş zamanlamanın yapıldığı günlerde doğruydu, ancak artık geçerli değil.

Refah uğruna aşağıdaki cevabı saklıyorum, ancak modern hiper yöneticiler için doğru olması için lütfen ona güvenmeyin.


Sen gerektiğini asla bir sanal makine vCPUs gibi tüm çekirdeklerini atayın.

Bir VM isterse herhangi CPU zamanı VMWare vardır ya ayırmaya tüm vCPUs veya hiçbiri vCPUs ait.

Bunun anlamı, 4 çekirdekli bir sistemde, 4 çekirdeğin hepsini de tahsis ederseniz, yalnızca ana bilgisayara veya konuğa, aynı anda değil, işlemci süresi verilebilir.

Bu, her iki ortamdaki performansı da anlamsız şekilde bozacaktır.

Tek sayıda çekirdek ayırmakta özgürsünüz (örneğin, 3). Garip geliyor, ama tamamen meşru bir seçenek.

Genel olarak, hiçbir zaman (n / 2) vCPU'dan fazlasını tahsis etmem (sizin durumunuzda, 2) - ancak normalde, büyük etki yapmadan çok sayıda vCPU tahsis edebileceğiniz 12 ila 32 çekirdeğe sahip sunucular için çekirdekler tahsis ediyorum.


Bu, şu ana kadar herhangi bir otorite derecesi ile yazılmış tek cevap. Deneyimlerinizi paylaştığınız için teşekkür ederiz.
G-Wiz

5
-1: Deneyimimle tutarlı değil. Sanal Makine, CPU süresi ana bilgisayardaki diğer işlemlerle aynı şekilde planlanabilen bir işlemdir. Ana bilgisayardaki VM işlem (ler) in önceliğini ayarlayabilirsiniz; sistem yükleri uygun şekilde dengeler.
bwDraco

2
( devam ) 16 çekirdekli bir sunucunuz olduğunu varsayalım. Örnek bir yapılandırma, her biri 8 çekirdek için yapılandırılmış 4 VM olacaktır. Bu çok fazla sanal çekirdek gibi görünse de, bireysel VM'lerin daha ağır iş yüklerinde daha iyi ölçeklenmesini sağlar. Birleşik kullanım fiziksel çekirdek sayısını aşarsa, ana bilgisayar yükleri buna göre dengeleyecektir. Sanallaştırma, ana bilgisayar donanımından en iyi şekilde yararlanarak verimliliği artırabilir ve maliyetleri azaltabilir.
bwDraco

@DragonLord - Bu cevap neredeyse 4 yaşında bir soruya 2 yaşın üzerinde ve eski bilgilere dayanıyor olabilir. ESX'ten "Sıkı Eş Zamanlama" dan bahsediyorum ancak bu bilgilerin kaç yaşında olduğunu hatırlamıyorum ve CPU zamanlamasının son birkaç yılda nasıl değiştiğiyle ilgili hiç bir zaman bir şey yapmadım.
Mark Henderson

1
Sadece buraya, hem Ubuntu 14.04 hem de 16.04'te, CPU sayısını tek bir sayıya ayarlarsanız önyükleme sorunlarının yanı sıra çöküşlerin olduğunu not etmek istedim. Nedenini çözemedim, çünkü sorunları önlemek için sadece sayıları eşit tutmaya karar verdim.
Dorian

3

Konuk CPU'lara maruz kalan çekirdek sayısı, performansı istediğiniz kadar etkilemez. Sadece konuk CPU'nun "gördüğü" çekirdek miktarını ayarlar.

Öykünücünün nasıl kurulduğuna bağlı olarak, sanal makinenin performansının tam anlamıyla yarısı olabilir, hiçbir şey yapmaz veya yalnızca konuk işletim sistemi / uygulamaların iş parçacığı zamanlamalarını bölme şeklini etkileyebilir.

Varsayılana bırakmak en iyisidir. Ana bilgisayarda performans sorunlarıyla karşılaşırsanız, işlem önceliğini Windows Görev Yöneticisi ile kolayca ayarlayabilirsiniz.


3

Nate'in dediği gibi, VM'niz çoğunlukla tek iş parçacıklı bir işlem yürütmeye hizmet ettiği sürece, birden fazla çekirdek ayırmak için çok az neden vardır.

Ancak, daha fazla çekirdekden (çok iş parçacıklı program, çok sayıda paralel program vb.) Yararlanabilecek şekilde kullanmayı planlıyorsanız, hikaye daha karmaşıktır. Daha önce CPU'nuzun yarısını VM'niz için kullanmanın iyi bir fikir olduğunu varsaymıştım. Bunun her zaman optimal olmadığı ortaya çıktı.

Emin olmanın tek yolu kıyaslama yapmaktır. Nedenini bilmiyorum, ancak Core2 Quad sistemimde (VT-x desteği olan, iç içe sayfalama, ..), aslında 4 çekirdekten 1'ini kullanmak daha iyi performans gösteriyor 2 veya daha fazla çekirdek kullanmaktan! Bunu basitçe VM'nin başlangıç ​​zamanlarında ve aynı zamanda derleme kıyaslamaları sırasında da görüyorum.

Diğer donanım ile sonuçları farklı. Ayrıca 8 çekirdekli bir i7'm var ve performans orada çekirdek sayısıyla daha iyi ölçekleniyor gibi gözüküyor (orada 4 tane kullanarak).

Tavsiyem: ilk önce yeni bir donanım.


1

İşletim sisteminin zamanlayıcısına güvenirim ve VM'yi meşgulken her zaman ana makinenin potansiyel olarak boşta bir çekirdeğe sahip olmasını istediğinizi bilmediğiniz sürece VM'yi fiziksel çekirdeklerin sayısına ayarlayın.


1

Bu, hem sanal makinede hem de fiziksel makinede ne yapmak istediğinize bağlıdır. Sanal makine, ana bilgisayar işletim sistemi başka bir etkinlik için kullanılırken kullanılmaya ihtiyaç duyarsa, VM tam yük altındaysa, ana makinenin iki tane kalması için VM için iki işlemci çekirdeği kullanmak daha iyi olabilir. Öte yandan, öncelikle VM üzerinde çalışıyorsanız, tüm işlemci çekirdeklerini kullanabilirsiniz.

Ancak, konuğun dört çekirdeğin hepsini aynı anda kullanması beklenmiyorsa, ana bilgisayar işletim sistemi üzerinde çalışmaya devam ederken hepsini güvenle kullanabilirsiniz. Ana bilgisayar işletim sisteminde çalışırken, VM işleminin önceliğini her zaman ayarlayabileceğinizi ve sistemin yükleri buna göre dengeleyeceğini unutmayın.


Bu, VirtualBox ile olan deneyimime dayanıyor. VMware ürünlerini tanımadığım için yanılıyor olabilirim; öyleyse, bu cevabı sileceğim.
bwDraco

0

evet, ayrıca buna bağlı olduğunu söyleyebilirim. Ama ne yapmayı tercih ettiğimi söyleyeceğim. İşte dört çekirdekli bir işlemcim var. Sanal imajım için (win7), iki işlemci tahsis ettim. Bu şekilde, hem ana makineyi hem de sanal makineyi aynı anda kullanabilirim ve hepsinin de eşit CPU kaynakları var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.