VirtualBox'un bellek kullanımı nasıl çalışır?


38

VirtualBox ile birkaç VM çalıştırıyorum ve bellek kullanımı çeşitli açılardan bildiriliyor ve VM'lerin gerçekte ne kadar bellek kullandığını bulmakta sorun yaşıyorum. İşte bir örnek:

  • Windows XP Host makinemde Windows 7 (Guest OS olarak çalışan) çalışan bir VM var.
  • Ana Makine 3 GB RAM'e Sahip
  • Konuk VM, 1 GB temel belleğe sahip olacak şekilde ayarlanmıştır
  • Guest OS'de Görev Yöneticisi'ni çalıştırırsam, 430 MB'lık bellek kullanımını görüyorum.
  • Ana bilgisayar işletim sisteminde Görev Yöneticisi'ni çalıştırırsam, VirtualBox'a ait gibi görünen 3 işlem görüyorum:
    1. VirtualBox.exe (1), 60 MB bellek kullanarak (Bu en çok CPU kullanımına sahip görünüyor)
    2. VirtualBox.exe (2), 20 MB bellek kullanarak
    3. VBoxSvc.exe, 11.5 MB bellek kullanarak
  • VM'yi çalıştırırken, Host OS'nin bellek kullanımı yaklaşık 2 GB'dir
  • Sanal Makineyi kapattığımda, ana bilgisayar işletim sistemi bellek kullanımına geri dönüyor ve 900 MB'a düşüyor.

Açıkçası, burada bazı büyük farklılıklar var. Host OS'nin VM'ye tahsis edilmiş yaklaşık 75 MB olduğunu gösterirken, GuestOS'un 400+ MB'ı nasıl kullanabileceğini gerçekten anlamıyorum. VirtualBox tarafından kullanılan ve açıkça adlandırılmayan başka işlemler var mı?

Ayrıca, 1 GB'lık bir makine çalıştırıp çalıştırmadığımı, ana bilgisayar işletim sistemimden 1 GB uzakta mı yoksa yalnızca Konuk makinenin şu anda kullandığı bellek miktarını mı alacağını bilmek isterim.

Güncelleştirme:

Birisi bellek kullanım numaralarıma duyduğu güvensizliği dile getirdi ve bu güvensizliğin bana mı yöneltildiğinden veya Host OS'nin Görev Yöneticisinin (belki de suçlu olan) raporundan emin değilim, ancak şüpheliler için, bu işlemlerin ekran görüntüsü ana makinede:

VirtualBox görev yöneticisi


Aynı anda iki VBox VM'yi aynı anda çalıştırırken aynı şeyi merak ediyordum.
MartW

Görev yöneticisi'nde diğer bellek sütunlarından bazılarını açın (Görünüm-> Sütunları Seç ...). Bellek, Windows'ta birçok farklı şekilde sayılır. Örneğin, "büyük boyut", "Bellek Kullanımı" ndan oldukça yüksek olabilir. Tam olarak hangisinin kullanılacağı ve nasıl yorumlanacağı farklı bir hikaye.
lilbyrdie

Yanıtlar:


12

Görev Yöneticisi'nde tam tutarı yansıtan görünen tek yer performans sekmesindedir - Toplam Taahhüt Ücreti kabaca VM'ye tahsis edilen miktara ayak uydurur. Sadece 1536 MB tahsis edilmiş bir tane kapattım ve taahhüt ücreti yaklaşık 2,4GB'dan 0,8GB'a düştü. Bunu, Performans İzleyicisi'ni kullanarak ve VirtualBox, VBoxSvc ve ayrıca VirtualBox # 1, # 2 vb. İçin Özel Bayt sayaçlarını (çalışan her VM için bir tane) seçerek, Sanal Kutu karşısında bir dereceye kadar izleyebilirsiniz. Aynı zamanda Bellek: Her şey için Comuted Bytes counter.


OP, tahsis edilenler ile özellikle ilgileniyor gibi görünmüyor, fakat ne kullanıldığını soruyor. Bu yüzden bunun sorusuyla nasıl bir ilgisi olduğundan emin değilim.
David Schwartz

12

VirtualBox'ın işlem mimarisini anlamak için bkz
. VirtualBox mimarisi :

GUI'den bir sanal makine (VM) başlattığınızda, iki pencereniz (ana pencere ve VM) vardır, ancak üç işlem çalışır. Sisteminize Görev Yöneticisi'nden (Windows'ta) veya bazı sistem monitörlerinden (Linux'ta) baktığınızda, şunları göreceksiniz:

  1. VirtualBox, ana pencere için GUI;
  2. -Startvm parametresiyle başlatılan bir başka VirtualBox işlemi, yani GUI işleminin bir VM için bir kabuk görevi görmesi anlamına gelir;
  3. Yukarıda belirtilen hizmet olan VBoxSVC, ilgili tüm süreçleri takip etmek için arka planda çalışıyor. Bu, ilk GUI işlemi tarafından otomatik olarak başlatıldı.

Hafıza ile ilgili olarak, Kullanım Kılavuzu şunları belirtir:

Temel bellek

Bu, tahsis edilen ve çalışırken VM'ye verilen RAM miktarını ayarlar. Belirtilen bellek miktarı ana bilgisayar işletim sisteminden istenecektir, bu nedenle VM'yi başlatmaya çalışırken ana bilgisayar üzerinde boş bellek olarak kullanılabilir olması veya kullanılabilir olması ve VM çalışırken ana makinenin kullanımına sunulmaması gerekir. Bu, "Yeni Sanal Makine" sihirbazında belirtilen ve yukarıda "Sanal makine oluşturma" başlığı altındaki yönergelerde açıklandığı şekilde aynı ayardır.

Bu, konuğun ev sahibinden çıkardığı anlamına gelir:

  • Bildirildiği kadar bellek
  • Her VM aynı zamanda bir VirtualBox çalıştırılabilir olduğundan, hafızasını eklemeniz gerekir.

VirtualBox kullanım kılavuzunun birkaç versiyonun arkasında olması ve en son bellek optimizasyon tekniğinin belgelenmemesi her zaman mümkündür.

Ayrıca, VirtualBox tanımlanan tüm VM belleğini tahsis etmeyerek bellek kullanımını optimize ediyor olabilir.

Belleği gereken şekilde tahsis etmek, fiziksel bellekte çok fazla tasarruf sağlayabilecek bir optimizasyondur, ancak VM'de bellek yoğun işlemler, daha fazla ana bilgisayar belleği istemek için VirtualBox tarafından sık ihtiyaç duyulduğunda yavaşlayabilir.


8
VirtualBox'a özgü değildir
şuna

@harrymc, demek istediğin şey görev yöneticisi işlem listesinde ne kadar bellek sanal kutusunun kullanıldığını göstermiyor?
Trevor Boyd Smith

@TrevorBoydSmith: Söyleyeceğim tek şey birden fazla işlem olduğu ve görev yöneticisinde sütunları doğru bir şekilde seçmek.
harrymc

2
benim vm 1.2 GB alır. görev yöneticisinde yalnızca 60 MB gösterir. bu nedenle görev yöneticisinin vm'imin kullandığı tüm belleği göstermediğini iddia ediyorum. nasıl olsa bana nasıl 1.2gb göstermek için görev yöneticisi tweak gösteremezseniz.
Trevor Boyd Smith

1
Bu konuşmanın tamamı ve tüm cevaplar sadece sanal hafıza ile fiziksel hafıza arasındaki karışıklık üzerindeki değişikliklerdir.
David Schwartz


2

TaskManager'da gördüğünüz girişler sanal makineniz için değil, VirtualBox GUI içindir. Performans sekmesi, toplam belleğinizin ne kadarının kullanıldığını açıkça gösterir, ancak işlemlerle ilgili hiçbir ayrıntı düzeyi yoktur. Şahsen VBox'un sadece ihtiyaç duyduğu şeyi kullandığını görmek isterim, ancak beklendiği kadar kullanabilmesinin ve dolayısıyla çitler kullanmanın önemli olduğunu kabul ediyorum.


1

VirtualBox Misafir İlaveleri ile ilgili olabilir.

Ubuntu kurulumum şu anda WinXP tarafından bildirildiği gibi ~ 20MB kullanıyor. Bu VBoxAdditions ile.

Lubuntu kurulumum şu anda WinXP tarafından bildirildiği gibi ~ 90MB kullanıyor. Yeni kurdum; VBoxAdditions yüklenmedi.

Bellek kullanımı, VM'nin yaptıklarına göre değişir. Ubuntu'um ziproxy çalıştırıyor; ziproxy ile konuşacak bir şey yaptığımda, VM kullanımı devreye girerken bellek kullanımı birkaç megabaytlık değer yükseliyor.

Genel olarak, sanallaştırma, konuk için görünen özelliklerin tamamen ana bilgisayardan tahsis edilmesine gerek kalmayacak kadar ileri düzeyde ilerlemiştir. Dinamik ayırma ve güçlü çağrı kullanmak gibi görünüyor.


1

Açıkçası, burada bazı büyük farklılıklar var. Host OS'nin VM'ye tahsis edilmiş yaklaşık 75 MB olduğunu gösterirken, GuestOS'un 400+ MB'ı nasıl kullanabileceğini gerçekten anlamıyorum. VirtualBox tarafından kullanılan ve açıkça adlandırılmayan başka işlemler var mı?

Ne tahsis edildiğine değil, ana bilgisayarda neyin kullanıldığına bakıyorsunuz . Konuk (henüz) 400+ MB sunucunun RAM'ini kullanmıyor.

Ayrıca, 1 GB'lık bir makine çalıştırıp çalıştırmadığımı, ana bilgisayar işletim sistemimden 1 GB uzakta mı yoksa yalnızca Konuk makinenin şu anda kullandığı bellek miktarını mı alacağını bilmek isterim.

1GB RAM ayırtacaktır, ancak aslında bundan daha az kullanarak kurulabilir. Misafir bu hafızanın bir kısmını kullanmıyorsa, konuk RAM için ayrılmış olsa da, ana bilgisayar RAM'i birçok amaç için (temiz disk sayfalarını önbelleğe almak gibi) kullanılabilir. Ve misafir bu hafızanın bir kısmını kullansa bile, yeterince uzun süre erişemezse, fırsatçı değiş tokuş yoluyla fiziksel hafızadan hala atılabilir.

Ne yazık ki, son derece karmaşık bir konuya girdiniz ve bu durumu açıklamak için birçok sayfa gerekli. Bu sorunun cevaplarında çok fazla yanlış bilgi var.


0

SysInternals'ın harika uygulaması VMMap'ı kullanarak görebilirsiniz :

  1. Öncelikle doğru işlemi bulmanız gerekir, bu nedenle örneğin İşlem Hacker veya SysInternals'ın İşlem Gezgini'ne başlayın
  2. İşlem listesini ağaç olarak görüntüleme
  3. Süreci bulun, bir VM çalışıyorsa VBoxSVC.exebirkaç alt işleme sahip olması gerekir.VBoxHeadless.exe
  4. Birden fazla VM çalışıyorsa, birden fazla işlem dalı olacaktır VBoxHeadless.exe, işlemin komut satırını kontrol ederek doğru dalı seçin, VM'nizin tanımlayıcısını içerir
  5. Şubedeki en düşük seviyeyle ilgileniyorsunuz VBoxHeadless.exe(yani daha fazla çocuk sahibi değil, sadece bir ebeveyn, yani bir yaprak), PID'sini unutmayın
  6. VMMap’i Başlat
  7. PID'ye göre doğru VBoxHeadless.exeişlemi seçin ve Tamam'a tıklayın.

Benim durumumda, tüm bildirilen özel bayt , set Çalışma ve Taahhüt neredeyse tam VirtualBox'ta VM atanmış bellek miktarını maç VMMap tarafından bellek.

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.