Saya telah menjalankan beberapa VM dengan VirtualBox, dan penggunaan memori dilaporkan dari berbagai sudut pandang, dan saya mengalami kesulitan menentukan berapa banyak memori yang sebenarnya digunakan oleh VM saya. Berikut ini sebuah contoh:
- Saya memiliki VM yang menjalankan Windows 7 (sebagai OS Guest) di mesin Windows XP Host saya.
- Mesin Host Memiliki 3 GB RAM
- Guest VM diatur untuk memiliki memori dasar 1 GB
- Jika saya menjalankan Task Manger pada OS Guest, saya melihat penggunaan memori sebesar 430 MB
- Jika saya menjalankan Task Manger pada OS host, saya melihat 3 proses yang tampaknya milik VirtualBox:
- VirtualBox.exe (1), menggunakan memori 60 MB (Yang ini tampaknya paling banyak menggunakan CPU)
- VirtualBox.exe (2), menggunakan memori 20 MB
- VBoxSvc.exe, menggunakan memori 11,5 MB
- Saat menjalankan VM, penggunaan memori Host OS adalah sekitar 2 GB
- Ketika saya mematikan VM, OS Host itu kembali ke penggunaan memori turun menjadi sekitar 900 MB
Jadi jelas, ada beberapa perbedaan besar di sini. Saya benar-benar tidak mengerti bagaimana GuestOS dapat menggunakan 400+ MB, sedangkan Host OS hanya menunjukkan sekitar 75 MB yang dialokasikan untuk VM. Apakah ada proses lain yang digunakan oleh VirtualBox yang tidak jelas namanya?
Juga, saya ingin tahu apakah saya menjalankan mesin dengan 1 GB, apakah itu akan mengambil 1 GB dari OS host saya, atau hanya jumlah memori yang digunakan mesin Guest saat ini?
Memperbarui:
Seseorang menyatakan ketidakpercayaan atas nomor penggunaan memori saya, dan saya tidak yakin apakah ketidakpercayaan itu diarahkan kepada saya, atau pelaporan Task Manager Host OS saya (yang mungkin pelakunya), tetapi untuk setiap skeptis, berikut adalah screenshot dari proses-proses tersebut pada mesin host:
sumber
Jawaban:
Satu-satunya tempat di Task Manager yang tampaknya mencerminkan jumlah penuh ada di tab kinerja - nilai Total Biaya Komit secara kasar mengimbangi jumlah yang dialokasikan untuk VM. Saya baru saja menutup satu dengan alokasi 1536MB, dan biaya komit turun dari sekitar 2,4GB menjadi 0,8GB. Anda dapat memantau sampai batas tertentu ini terhadap Virtual Box menggunakan Monitor Kinerja, dan memilih Proses: Counter Bytes Pribadi untuk VirtualBox, VBoxSvc, dan juga VirtualBox # 1, # 2, dll (satu untuk setiap VM yang menjalankan). Ada juga Memory: Commited Bytes counter untuk semuanya.
sumber
Untuk memahami arsitektur proses VirtualBox, lihat
arsitektur VirtualBox :
Mengenai memori, Manual Pengguna menyatakan:
Ini berarti bahwa tamu mengeluarkan tuan rumah:
Selalu mungkin bahwa manual VirtualBox ada beberapa versi di belakang, dan bahwa teknik optimasi memori terbaru tidak didokumentasikan.
Selain itu, VirtualBox dapat mengoptimalkan penggunaan memori dengan tidak mengalokasikan seluruh memori VM yang ditentukan.
Mengalokasikan memori seperti yang diperlukan adalah optimasi yang dapat menghemat banyak memori fisik, tetapi proses intensif-memori dalam VM mungkin diperlambat oleh kebutuhan yang sering dibutuhkan oleh VirtualBox untuk meminta lebih banyak memori host.
sumber
Ini sepertinya masalah Windows. Lihat posting ketiga di sini: http://forum.sysinternals.com/pe-is-not-showing-all-memory-used-by-virtualbox_topic23886.html
Menggunakan program seperti VMMap jelas menunjukkan bahwa memori yang Anda kirim ke VBox sebenarnya sedang digunakan. Tidak tahu mengapa itu tidak terlihat oleh pengelola tugas atau penjelajah proses.
sumber
Entri yang Anda lihat di TaskManager bukan untuk mesin virtual Anda, itu untuk GUI VirtualBox. Tab kinerja jelas akan menunjukkan kepada Anda berapa banyak total memori Anda digunakan, tetapi tanpa rincian tentang proses. Saya pribadi ingin melihat VBox hanya menggunakan apa yang dibutuhkan, tetapi setuju bahwa penting untuk dapat menggunakan sebanyak yang diharapkan, karenanya pagar cincin.
sumber
Bisa terkait dengan Tambahan Tamu VirtualBox.
Instalasi Ubuntu saya saat ini menggunakan ~ 20MB seperti yang dilaporkan oleh WinXP. Ini dengan VBoxAdditions.
Instalasi Lubuntu saya saat ini menggunakan ~ 90MB seperti yang dilaporkan oleh WinXP. Baru saja menginstalnya; VBoxAdditions belum diinstal.
Penggunaan memori memang bervariasi berdasarkan apa yang dilakukan VM. Saya telah menginstal Ubuntu saya menjalankan ziproxy; ketika saya melakukan sesuatu yang berbicara ke ziproxy, penggunaan memori melonjak beberapa megabyte ketika VM mulai digunakan.
Secara umum, virtualisasi telah berkembang cukup jauh sehingga spesifikasi yang jelas untuk tamu tidak perlu dialokasikan sepenuhnya dari tuan rumah. Tampaknya menggunakan alokasi dinamis, dan paging yang kuat.
sumber
Anda melihat apa yang digunakan pada host, bukan apa yang dialokasikan . Tamu belum menggunakan RAM 400+ MB (belum).
Ini akan mencadangkan 1GB RAM, namun mungkin malah benar-benar menggunakan kurang dari itu. Jika tamu tidak menggunakan sebagian dari memori itu, RAM host dapat digunakan untuk banyak tujuan lain (seperti cache halaman disk bersih), meskipun itu disediakan untuk tamu. Dan bahkan jika tamu menggunakan sebagian dari memori itu, jika tidak mengaksesnya cukup lama, ia masih bisa dikeluarkan dari memori fisik melalui pertukaran oportunistik.
Sayangnya, Anda telah mengarungi masalah yang sangat kompleks dan butuh banyak halaman untuk benar-benar menjelaskannya. Ada banyak informasi yang salah dalam jawaban untuk pertanyaan ini.
sumber
Anda dapat melihatnya menggunakan VMMap aplikasi hebat SysInternals :
VBoxSVC.exe
, itu harus memiliki beberapa proses anakVBoxHeadless.exe
jika VM sedang berjalanVBoxHeadless.exe
proses, pilih cabang yang tepat dengan memeriksa baris perintah proses, itu berisi pengidentifikasi VM AndaVBoxHeadless.exe
di cabang (yaitu tidak memiliki anak lagi, hanya orang tua, jadi itu adalah daun), ingat PID-nyaVBoxHeadless.exe
proses yang tepat dengan PID-nya dan klik OKDalam kasus saya, semua dilaporkan byte Swasta , Bekerja set dan Committed memori dengan VMMap hampir sama persis dengan jumlah memori ditugaskan ke VM di VirtualBox.
sumber