VirtualBox: Fiziksel CPU çekirdeği sayısından daha fazla sanal CPU çekirdeği atamak kötü bir fikir midir?


40

Bir var gibi Hyper Threading yetenekli CPU, acaba, aşağıdaki uyarı anlaşılacağı gibi kötü bir fikir fiziksel CPU çekirdeklerinin sayısından daha fazla sanal işlemci çekirdeklerini atamaktır:

VirtualBox Uyarısı

Transcript:

Sanal makineye, ana bilgisayar sistemindeki fiziksel CPU sayısından daha fazla sanal CPU atanmıştır. Bunun sanal makinenizin performansını düşürmesi olasıdır. Lütfen sanal CPU sayısını azaltmayı düşünün.

Birisi bu konuya bir sebep koyabilir mi?

Edit1:

Söz konusu işlemci Intel Core i7-4700HQ, Ark Intel , CPU Benchmark

EDIT2:

Varsayalım ki, HDD (SSD yerine) ve / veya Düşük RAM (burada 16GB, minimum vm.swappiness, bu VM için 4GB), vb. Gibi eski HW yoktur .


2
Uyarı makul derecede doğrudur ve gerçek zamanlı performans önemsiz olmadığı veya sanal makineye yalnızca minimum (yazılım) bir yük getirilmediği sürece göz ardı edilmemelidir. Bkz (fiziksel cpu çekirdek aksine) mantıksal işlemci çekirdekleri ne olmuş?
agc

Savaşın dediği gibi. Sanal Makinede daha az CPU ile işler gerçekten daha hızlı olabilir.
Rui F Ribeiro

Asla kırmızı çizgiye gitmemelisin. 4 gerçek HT etkin çekirdekli CPU'da 4 "çekirdek" kullanmanız uygun. RAM için, yeşil kısım bunun ötesinde olsa bile RAM'inizin% 50'si yapmalıdır.
cylgalad

Virtualbox'da "çekirdeğin" hepsi birer iş parçacığıdır, yani 4 çekirdekli ve Hyperthreading olan bir CPU'nuz varsa, 8 çekirdeğe benziyor, bu yüzden tek başına çalıştırırsanız, aslında bir VM'de 4 sanal çekirdeği ayarlayabilirsiniz; Sürekli yaptığım şey bu ve harika çalışıyor.
cylgalad

Kanıtlamak için neye ihtiyacım var? Kırmızı çizgi benim için 4'ten fazla "çekirdek" içindir, asla ötesine geçmem ve aynı anda 2 VM çalıştırmam. Tüm CPU'yu VM'ye vererek PC'nizi çökme riskini tercih ediyorsanız ve VM dışında hiçbir şey yapmazsanız sorun olabilir.
cylgalad

Yanıtlar:


30

Donanım / İşletim Sistemi / Yazılım

Ana Bilgisayar : Linux Nane 18 Tarçın 64-bit (tamamen güncellendi); Çekirdek sürümü 4.4.0-47-generic

Konuk : Windows 8.1 Pro 64-bit (tamamen güncellendi)

İşlemci : Intel Core i7-4700HQ , (6MB önbellek, 4 fiziksel çekirdek veya Hyper-Threading kullanarak 8 adet), CPU Benchmark

VirtualBox : Sürüm 5.1.10 r112026 (Qt5.5.1)

Misafir Ekleri : Yüklendi ve güncel

Karşılaştırma Aracı # 1 : WinRAR sürüm 5.40, son 64 bit

Benchmark Aracı # 2 : VeraCrypt sürüm 1.19 final 64-bit


Hazırlık

Her iki durumda da önyüklemeden sonra CPU, RAM, disk sürücüsü sıfır noktadaki isabetlere yakın durağan olana kadar bekledim.


Yöntem

  1. Orijinal sanal makineyi iki tane aynı olacak şekilde klonlamak.
  2. İkinci geçiş için, yeniden başlatma işleminin devre dışı bırakıldığı için Antivirus bu cevabın alt kısmında işaret etti ve her iki durumda da bir Beta'dan Son versiyona kadar WinRAR'ı güncelledi.
  3. Daha önce belirtildiği gibi aynı Hazırlık yaptım.
  4. Sanal makine ön planda çalıştı, herhangi bir CPU zamanı aç uygulaması çalışmıyorsa, testin etkilenmemesi için elimden geleni yaptım.
  5. Sistemin içine veya dışına olası önbellekleme eklemek için, aynı testi iki kez yaptım. Avantaj neredeyse hiç olmadı.

Sonuçlar

WinRAR

  1. 4 çekirdek => 7.5 dakika ( daha kısa süre daha iyidir)

    4 çekirdekli WinRAR etkin

    4 çekirdekli WinRAR etkin, 1.5GiB 7.5 dakikada işlendi .

  2. 8 çekirdek => 4.5 dakika ( daha kısa süre daha iyidir)

    8 çekirdekli WinRAR etkin

    8 çekirdekli etkin WinRAR , 4.5 dakika içinde 1.5GiB işlendi .


VeraCrypt

  1. 4 çekirdek => hız 2,6 GiB / s ( daha yüksek hız daha iyidir)

    4 çekirdekli etkin VeraCrypt

    4 çekirdekli ve HW ile hızlandırılmış AES (AES-NI) hız 2,6 GiB / s olan VeraCrypt .

  2. 8 çekirdek => hız 3.9 GiB / s ( daha yüksek hız daha iyidir)

    8 çekirdekli etkin VeraCrypt

    8 çekirdekli etkinleştirilmiş VeraCrypt , HW hızlandırmalı AES (AES-NI) hız 3,9 GiB / s.


Sonuç

Gerektiği kadar çok test yapabilirim. Ancak, bu ikisi, biri oldukça karmaşık sıkıştırma testi ise, ikincisi oldukça karmaşık şifreleme testleri kümesiyse, bunun ne anlama geldiğini anlıyorum.

Her iki kriter de belirgin bir fark göstermektedir. Oldukça titiz bir hazırlık ve yöntem izlediğim için sonuçlarının yanlış olduğuna inanmak için hiçbir neden göremiyorum, üstelik bu testler I / O darboğazını dışlamak için RAM'de yapıldı. Benim açımdan, soruda belirtilen uyarı bazı şartlar için geçerli olabilir, ancak kesinlikle hepsi için geçerli değildir. Bu oldukça çarpıcı sonuçları sizinle paylaştığımda, benimle aynı fikirde olduğunuza eminim, bu uyarının muhtemelen en yeni VirtualBox sürümüne sahip Hyper-Threading özelliğine sahip modern CPU'larda bu kadar ciddiye alınmaması gerektiğine eminim . Kesin olan bir şey: Bu ayarı kalıcı olarak uygulamaya karar vermeden önce beni kelimeye götürmeyin ve kendi şartlarınız altında test etmeyin.


Çekirdeklerin değişmesiyle aynı VM'de mi yoksa iki farklı (ancak aynı) VM'de mi çalıştırdınız? Aynı VM ise, konuk işletim sistemi önbelleğe alma algoritmalarının olası etkilerini ekarte etmek için daha sonra diğer sıralarda denediniz mi?
Wildcard

Eğlence için gerçek bir CPU yazma testi yapmayı deneyin.
cylgalad

En az bir saat prime95 gibi bir şey. Ve aynı anda ana bilgisayarda web'de gezinmeye çalışın. Dediğim gibi, ana bilgisayarda hiçbir şey yapmamanız veya bir seferde birden fazla VM çalıştırmamanız sorun değil. Bu kadar kötü olsaydı, limit bir uyarı yerine Virtualbox'a uygulanacaktı.
cylgalad

Deneyebileceğiniz başka bir şey ama daha zor olabilir. Scratch VM'den bir gentoo veya Linux kurun ve yoğun bir şekilde derlendiğinde işlerin nasıl gittiğini kontrol edin. Veya bir VM'de Chromium'u oluşturmaya çalışın.
cylgalad

@Vlastimil tamamen katılıyorum. Benim durumumda C ++ derlemesi için VM kullanıyorum (ki bu cpu bağımlı bir görevdir) ve 16 çekirdekli bir işlemci almamın tek nedeni daha hızlı derlenebilmekti. Bu uyarı uygun açıklama olmadan tamamen saçma ve "Sanal Makinede daha az CPU ile işler daha hızlı olabilir" gibi yanlış sonuçlara yol açıyor
Pavel P

16

Bir işletim sistemi tasarımcısı olarak ölçümlerin sonucuna tamamen katılıyorum. Konu hakkında başka bir yerde üretilen saçmalık miktarı inanılmaz.

Mantıksal çekirdek sayısının HW tarafından yürütülebilen paralel iş parçacığı / işlem sayısı olarak görün. Bu, örneğin bir CPU çekirdeğinin yazmaçlarını ve komut işaretleyicilerini çoğaltarak elde edilir. CPU çekirdeği artık hangi iş parçacığının kullanılacağına karar veriyor. Geçerli iş parçacığının talimatı önbellekte bulunmadığından ve örneğin bellekten veya L3 önbellekten alınması gerektiğinden diğer iş parçacığını kullanmaya karar verecektir. Bu mekanizma, talimatlarda / saniyelerde veya CPU performansında% 10 -% 30 potansiyel iyileştirme yaratacaktır.

Bir iş parçacığıyla tek bir uygulama çalıştırırsanız, bu avantajdan yararlanamazsınız, ancak örneğin eski bir HT Pentium üzerinde iki yüksek yük uygulaması çalıştırırsanız, avantajlardan yararlanabilirsiniz. Aynı şey, birden fazla iş parçacığı olan uygulamalar için de geçerlidir. Linux sistemimde 200 iş parçacığı var, bu nedenle gerçek yüke bağlı bazı faydalar her zaman mevcuttur. Tüm bu açıklamalar sanallaştırma olmadan uygulanır.

Sanal kutu yalnızca her sanal makine (VM) için paralel olarak çalışabilecek iş parçacığı sayısını sınırlar, ancak ana bilgisayar işlem zamanlayıcısı mantıksal işlemcileri ve dolayısıyla VM işlemlerinin dinamik olarak çalıştığı fiziksel işlemcileri değiştirir. Bir VM'de yüksek yük uygulamaları çalıştırıyorsanız, ek mantıksal çekirdekler size% 10 -% 30 aynı yararı sağlayacaktır. Yük tek bir çok dişli bir uygulama veya bir dizi farklı uygulama olabilir.

VT-x veya AMD-V teknolojisine sahip modern sistemlerde, aynı anda daha fazla sanal makineyi çalıştırmak için gözle görülür bir performans cezası olmadığı için, mantıksal çekirdek sayısını maksimize etmek için performans cezası yoktur. Sınırınız CPU çipinizin performansıdır, bu nedenle her VM'yi yavaşlatmadan aynı anda 3 VM'de video oluşturamazsınız, çünkü aynı fiziksel CPU'yu paylaşmaları gerekir.

Tüm mantıksal çekirdeği olan bir VM'de bir video hazırlarsanız, ancak bu işleme uygulamasını ana makinenizde çalıştırırsanız, neredeyse aynı soruna sahip olursanız, ana bilgisayar sisteminiz yanıt vermeyebilir. En azından VM'de bir seçeneğiniz var ve maksimum CPU yükünü% 80 -% 90'a sınırlandırarak veya bu nedenle çekirdek sayısını azaltarak çözebilirsiniz.


0

En iyi iki sentim hiçbir zaman tüm çekirdekleri / iplikleri kullanmamak, sadece bir veya iki tanesini barındırmak için.

Öyleyse, sizin durumunuzda, asla sekizinci bir çekirdek olmayan altı çekirdeği konuk edin.

Konaktaki mevcut konuların sayısı (çekirdeklerle karıştırılmaması gereken):

  • <2 ise, sanal makineleri hiç kullanmamak daha iyi
  • 2 ise, tek çekirdekli modda sanal makineler kullanın veya risk alın ve çift çekirdekli konuk kullanın
  • > 2 ise, daha iyi bir formül kullanın

İkiden fazla iş parçacığı için bu formülü kullanma eğilimindeyim:

  • N = ana bilgisayar için iş parçacığı sayısı
  • M = Çalıştırmak istediğim eşzamanlı sanal makine sayısı (eşitlik dengesi varsayalım, her konuk için aynı konuk çekirdeği sayısı varsayarak)
  • Konakta sadece 4 veya daha az diş varsa, Formül = (N-1) / M
  • Konakta 4'ten fazla iş parçacığı varsa Formül = (N-2) / M

Tecrübelerim bana bu formül limitini aşmamanın daha yumuşak ve daha az riskli olduğunu söylüyor.

Uyarı: Konuk çalıştırılırken konuk çekirdeği sayısının değiştirilmesine izin verilmez, ancak CPU kullanımını% 100'den% 75'e veya% 50'ye düşürmesine izin verilir, ancak daha az konuk başarısız olamaz.

Bu yüzden bazen, iki iş parçacığına 8 iş parçacığı üzerinde altı çekirdeği verme eğilimindeyim (iki konuk yerine yalnızca bir misafir gibi formül sayısı), ancak bunları CPU hızının% 50'siyle sınırlama (her iki misafir de kullanabilir. İşlemcinin 2 / 2'si), ancak yalnızca misafirlerin birden fazla paralel orana sahip uygulamaları çalıştıracağını bildiğimde, resim karşılaştırması / eklemi vb.


1
Siz bu formülleri kendiniz mi yaptınız? Veya alıntı ekleyebilir misiniz?
LinuxSecurityFreak
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.