Sanal makineler fiziksel ana makinede nasıl bu kadar az RAM tüketebilir?


24

VirtualBox'ı Windows XP makinesinde 2GB RAM ile çalıştırıyorum. Sanal bir Ubuntu makinesi yarattım ve 750 MB'lık bir temel bellek ayırdım.

Sadece bir sınava koymak için, sanal makinede bir kerede 20 şeyi koştum. Ubuntu’daki “top” a göre, 750 takma bellek kullanıldı ve aynı zamanda büyük takas alanı kullanıldı.

Ancak, Windows Görev Yöneticisi'ne geri dönersek, VitrualBox yalnızca 45.000 K bellek kullanıyordu. Sanal makineden giderek daha fazlasını yapmalarını istediğim gibi, VirtualBox işleminin CPU kullanımı arttı (Windows'ta) ancak bellek kullanımı aynı kaldı.

750 MB bellek kullanan bir sanal makine fiziksel bir makinede yalnızca 45 MB bellek tüketebilir mi?

Cevabım, sanal makinenin gerçek bellek kullanmadığını, simüle edilmiş belleği (yani takas alanını) kullandığını, ancak RAM'de çalıştığı gibi çabuk hissettiğini kabul ediyorum.

GÜNCELLEME: Önerilen gibi perfmon ile oynadım. Aklıma gelen her şeyi özetliyor olsam bile, hala 300 megadan az sürüyor gibi görünüyor ... bu yüzden hala bir gizem.

Process               VirtualBox     VirtualBox#1     Total
PoolNonpagedBytes     5,840          42,552           48,392
PoolPagedBytes        119,796        166,892          286,688
PrivateBytes          8,884,224      52,719,616       61,603,840
VirtualBytes          75,939,840     161,202,176      237,142,016
Sum                   84,949,700     214,131,236      299,080,936

Yanıtlar:


7

Görev Yöneticisi'ndeki sütunlar yanıltıcı rakamlar verebilir - işlem başına doğru bellek kullanımı için perfmon (Denetim Masası'ndaki Performans İzleyicisi) kullanabilir ve "özel bayt" rakamlarına bakabilirsiniz.

Perfmon gitmek, bu göstermek için sayaç (Ben değilim eklemek için tıklayın Ctrl+ Ikişinin tür). "Performans nesnesi", "Özel baytlar", sayaç listesinde bulunan "İşlem" olur - açık bir şekilde ilgili işlemi sağ listeden seçmeniz gerekir.


Merhaba. Bunu denedim ama Özel Bayt denilen bir şey bulma şansım olmadı. Adım adım verebilir misiniz?
dggoldst

Ekledim ...
Rowland Shaw

Teşekkürler, bu çok yardımcı oldu. Ben soruyu analizi ekledim. Yine de neden 750 ile toplanmadığını çözemiyorum.
dggoldst

Çok tuhaf. PrivateBytes'in bir VirtualBytes alt kümesi olduğunu söyleyebilirim (Sanal baytlar, tahsis edilmiş adres alanının oranıdır, özel baytlar ise henüz serbest bırakılmamış bir hafızadır - küçük bir hafıza sızıntısı ile hafızanın parçalanabileceğini ve uygulamalar, yeterli miktarda bellek olsa bile, yeterli hafıza ile ölmezler). Sanallaştırma sürücüsünün, belleği görünmeyecek şekilde ayırması olabilir; bu da belleğin disk belleği dışına çıkmadan diske bağışık olması gerektiği anlamına gelir.
Rowland Shaw,

Masanıza koyduğunuz dört sayaçtan yalnızca “PoolNonPagedBytes”, sayfalanamayan sanal belleğin bir sayısıdır, bu nedenle fiziksel bellek kullanılır. Diğerleri sanaldır. Diğer sanal bellek boyutlarında olduğu gibi, kullandığı gerçek RAM de neredeyse her zaman çok daha azdır, Bu sanal belleğin tüm noktalarından biridir.
Jamie Hanrahan

5

Linux altında bazı sanallaştırma çözümleri ile, onlar bellek ayrılamadı yolu (çok gibi özel bir bellek eşlemeli dosya olarak çekirdek olduğunda görünür kılan /proc/kcoreondan çıktı "önbelleğe alınmış" sayısında sayılır kadar özel dosyası) freedeğil, "kullanılmış" sayısı.

Windows ortamınızla benzer bir şey olduğunu tahmin ediyorum: 45Mb, VirtualBox'ın yönetim işlemlerinde kullanılacak ve VM'ye tahsis edilen 750 başka bir yerde sayılacak.


0

Sanal bellek, bellek haritalı dosyalar veya benzer bir şey olabilir.

Görev Yöneticisi'nde diğer sütunları görüntülemeyi denediniz mi?


0

Görev yöneticisine inanma. Her şeyi göremiyor.

Bu sorun, SQL Server ile daha yaygın olarak görülüyor, örneğin Sql ile, Görev Yöneticisi'nden bana kesin bir bilgi edinmenin bir yolunu söyleyen hiç kimseyi bulamadım, bu da rakamın birinde saklanmadığına inanmamı sağlayacaktı. diğer sütunlar.

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.