24
3
I'm running VirtualBox on a Windows XP machine with 2GB RAM. I've created a virtual Ubuntu machine and allocated it a base memory of 750MB.
Just to put it to a test, I ran 20 things at once on the virtual machine. According to "top" in ubuntu, 750 megs of memory were being used, as well as considerable swap space.
However, back in Windows Task Manager, VitrualBox was using only 45,000K of memory. As I asked the virtual machine to do more and more, the CPU usage of the VirtualBox process went up (in Windows) but memory usage stayed the same.
How can a virtual machine that is using 750 MB of memory only consume 45 MB of memory on a physical machine?
I assume the answer is that the virtual machine is not using real memory, but simulated memory (i.e. swap space), but it sure feels snappy like it is running in RAM.
UPDATE: I've played around with perfmon as suggested. Even summing up everything I can think of, it still seems to take up less than 300 megs ... so it is still a mystery.
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
Hi. I tried this but had no luck finding anything called Private Bytes. Can you give a step-by-step? – dggoldst – 2009-08-04T07:49:46.990
Have added... – Rowland Shaw – 2009-08-04T07:58:54.267
Thanks, this is very helpful. I've added the analysis to the question. Still can't figure out why it doesn't sum to 750 though. – dggoldst – 2009-08-04T10:08:27.450
Very odd. I could point out that PrivateBytes is a subset of VirtualBytes (Virtual bytes is the proportion of address space allocated, whilst private bytes is that memory that hasn't been freed yet - you can get fragmentation of memory with a small memory leak, and have applications die with not enough memory, even when there is plenty available). It may be that the virtualisation driver is allocating the memory in a way that means it won't show up, which would makes sense as the memory should be immune from paging out to disk. – Rowland Shaw – 2009-08-04T13:01:53.653
Of the four counters you put in your table, only "PoolNonPagedBytes" is a count of nonpageable virtual memory, hence that amount of physical memory will be used.The others are all virtual. Like any other virtual memory size the actual RAM it uses is almost always much less, That's one of the whole points of virtual memory. – Jamie Hanrahan – 2017-09-26T21:55:31.003