VirtualBox'a daha fazla “çekirdek” atamanın gerçek bir avantajı var mı?


40

Bir VirtualBox ile 2.8 dört çekirdekli i7 var. Bir konuk makinesine 4 çekirdeğe kadar atama seçeneğim var, ancak sadece iki tane yapıyorum. Bir konuğa daha fazla çekirdek atamanın avantajları / dezavantajları nelerdir? BTW, iki konuk işletim sistemini (Win 7 ve Ubuntu) çalıştırırken hala Ultra ayarlarında StarCraft 2'yi oynayabiliyorum ve aynı şey BFBC2 (stres test edicilerim) ile de geçerli. İ7 çekirdeklerdeki dengesiz yüklere nasıl tepki verir?

Yanıtlar:


62

Bir sanal makineye atadığınız "sanal" çekirdekler, istemci işletim sistemi içinde çoklu işlemlerde kullanılabilir. Bir VM'ye yalnızca bir çekirdek atarsanız, konuk işletim sisteminin yükü birden çok çekirdeğe dağıtma şansı yoktur. Öyleyse bazı pratik senaryolar varsayalım:

4 CPU'lu host, misafir 1 CPU'lu

  • 4 fiziksel çekirdek çalışan ana makine
  • VM içindeki İstemci İşletim Sistemi 1 çekirdek atadı

Bu durumda konuk işletim sistemi yalnızca bir çekirdeği kullanabilecek. Bu nedenle, birden fazla çekirdeğe iyi ölçeklenen çok iş parçacıklı bir uygulama çalıştırırsanız, yine de yalnızca bir çekirdekte çalışacaktır. Bu nedenle konuk işletim sistemindeki tüm iş parçacıklarının bir fiziksel çekirdeği paylaşması gerekir.

İşlemciyi tamamen yükleyen bu kurulumda bir konuk işletim sistemi çalıştırmak, ana bilgisayar işletim sistemi CPU yükünü ~% 25 (ana bilgisayara yüklenen 4 çekirdekten biri) verir.

Tabii ki, ana işletim sisteminizde çalışan CPU harcayan görevlere devam edebilir ve kalan 3 çekirdeği kullanabilirsiniz.

4 CPU'lu host, misafir 4 CPU'lu atandı

  • 4 fiziksel çekirdek çalışan ana makine
  • VM'deki İstemci İşletim Sistemine 4 çekirdek atandı

Bu durumda, konuk sanal makine içinde 4 sanal işlemcinin tamamını kullanabilecek şekilde iyi ölçeklendirilmiş çok iş parçacıklı uygulamalar çalıştırabilirsiniz. VirtualBox, VM'de zamanlanmış görevleri işlemek için 4 fiziksel çekirdeği kullanır ve bu nedenle ana bilgisayar CPU yükünüz maksimum% 100 kullanıma ulaşabilir.

Peki hangi ayarı seçmeliydin?

Bu sorunun cevabı ne yapmak istediğinize bağlı. Bazı durumlarda, tüm çekirdeği bir VM'ye atamak veya hatta her birine atanan tam CPU miktarına sahip olan birden fazla VM çalıştırmak yararlı olabilir. Bu gibi durumlarda bir VM, sunucunun tüm işlem gücünden tam olarak faydalanabilir. VM'lere fiziksel olarak mevcut olandan daha fazla CPU atanırsa, VM'ler farklı VM üzerindeki yüklerden etkilenecektir. Bunu önlemek için, bazı çekirdekleri belirli VM'lere tahsis edebilirsiniz. Örneğin, her biri 4 çekirdekli bir düğümde atanmış 2 CPU'lu 2 VM çalıştırmak, her VM'nin 2 özel CPU almasına yardımcı olabilir (ana bilgisayar işletim sistemi tarafından da işleme gücünün bir kısmını alan hiçbir yük olmadığı varsayılarak).

Tüm çekirdeği bir VM'ye atamak ana bilgisayarım üzerinde olumsuz bir etkiye sahip midir?

Yine bu, yazılımın çalışmasına bağlıdır. Boşta olan bir VM çalıştırıyorsanız (hiç bir CPU yoğun program çalıştırılmaz) bu VM tarafından yüklenen yük% 0'a yakın olacaktır. Paralel olarak 10 VM çalıştırabilir ve tüm VM'ler boştaysa,% 0'a yakın bir ana bilgisayar CPU yükü yaşamaya devam edebilirsiniz.

CPU eşit olmayan yüklerde nasıl davranır?

Eh, CPU yükü dağılımı, zamanlayıcı olarak adlandırılan işletim sistemine özgü yerleşik bir bileşene bağlıdır. Windows XP için, zamanlayıcı tüm CPU çekirdeğini yükleyerek dolaşmaya çalıştı. Dört çekirdekli bir işlemcide tam yük ile tek iş parçacıklı bir iş çalıştırmak her çekirdekte ~% 25 yük sağlardı.
Maalesef bunun modern CPU güç yönetimi için kötü olduğu kanıtlandı. Modern sistemler için, tek bir çekirdeğin, ikinci çekirdeğin devreye girmesinden önce% 100'e kadar yüklenmiş olması bile bir avantajdır. Bunun nedeni, bir çekirdeği tamamen kullanmak için yeterli yük olmadığı sürece, diğer çekirdeklerin enerji tasarrufu sağlamak ve ısı dağılımını azaltmak için derin uyku modunda kalabilmesidir.

Intel Core i-Series ve daha yeni AMD (Bulldozer) gibi bazı işlemciler için, çekirdeklerin yalnızca bir alt kümesinin kullanılması durumunda kullanılmayanlar kapatıldığı için bu daha da ilginç. Bu CPU'nun güç tüketimini azaltır. Her ikisi de (Intel ve AMD), termal ve güç tüketimi bütçesini daha sonra aktif olan çekirdeklerin overclock'unu kullanmaya başlar. Bu nedenle, tek iş parçacıklı uygulamalar (paralel olarak bir görev üzerinde çalışmak için birden çok çekirdeğe dağıtılamaz) bir artış sağlayabilir. Ancak, tüm çekirdekler aktif olduğunda, bu "artırma" teknolojilerinin çoğunun işlem gücü üzerinde yalnızca küçük bir etkisi vardır, çünkü "tüm çekirdekler aktif" durumu tam olarak CPU'nun tasarlandığı durumdur.

Bu nedenle cevap, i7'nizin çok iyi bir şekilde tek çekirdekli yük üzerindeki yükü azalttığını ve hatta tek iş parçacıklı uygulamalarda performans artışı sağlayabildiğidir. Bununla birlikte, bu artış yüzde birkaç aralığındadır; gerçekte, yükü birden fazla CPU çekirdeğine dağıtabilen çok parçacıklı uygulamalar optimum durumda faktörler (çift çekirdekli x2, dört çekirdekli 4x ...) ile artırılabilir. . Bu yüzden çoklu iş parçacığı, her zaman birleşik işlemciliğin gücü açısından, saat işçiliği ile birleştirilen tek iş parçacığından daha fazla güç sağlar.


1
Vay, bu gerçekten çok çekirdekli davranışı anlamama yardımcı oluyor, sadece vms'yi nasıl etkileyeceğini değil.
Dan Allen

2
Ubuntu 12.04 LTS istemcimin Macbook Air w / 2 ghz i7 Dual core üzerinde gerçekten yavaş çalışmasıyla ilgili bir sorunum vardı. Müşterinin ayarını iki cpus'a yükselttim ve şimdi de yanıyor. En uygun olmayan ayarların uyarı mesajlarını görmezden geliyorum.
Mike Graf,

VirtualBox Core kullanmıyor çünkü İşlemciler kullanıyor ve Çekirdek İşlemciler denmiyorsa dört çekirdekli veya okta çekirdekli olsa bile herkes 1 İşlemci belki 2 işlemciye sahip.
SS

0

VB sitesindeki kılavuzlara girmedim, ancak konuk makineye çekirdek tahsis etmenin konuk işletim sisteminin birden çok çekirdeği görmesine izin vereceğini ve bu sayede ilave çekirdekten daha fazla yararlanabilecek uygulamalara izin verdiğini varsaydım / güç / verimlilik, ana işletim sistemi işletim sistemiyle aynıdır.

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.