Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

There's something about Windows memory management and it's relationship to TaskManager that I don't understand and I'm hoping someone can enlighten me.

If I'm running a virtual machine (doesn't matter if it's Virtual PC 2007, Virtual Server 2005, or VirtualBox since they act the same way) and bring up TaskManager I can see on the processes tab some entries for the VM but the memory values are fairly small (around 30 MB). Obviously it's not including the memory actually being consumed by the VM itself. None of the various Memory-related columns you can make visible appear to work differently. The Memory usage on the Performance tab appears to be correct for total memory usage including the VM.

So my question is why doesn't the VM's memory usage (which will be 100's of MB) show up on the Processes tab?

share|improve this question

3 Answers 3

up vote 13 down vote accepted

VirtualPC, HyperV and probably similar products use something called driver locked memory, which is not visible in Process Explorer, Task Manager, etc. RAMMap will show you driver locked memory used by a process.

share|improve this answer
    
For the record RAMMap is Vista or higher only. –  Tim Abell Feb 21 '12 at 14:24
    
RAMMap did not show locked memory for a process, it did show total locked memory tought –  NeDark Jun 7 at 4:02

To view the amount of memory in use by a VM, you need to ensure that you have the Working Set column visible in your Task Manager. Often only the Private Set is visible.

To enable this column:

1) Start Task Manager

2) Go to Processes tab

3) View > Select Columns

4) Ensure that "Memory - Working Set" is ticked

For example, the Private Set of the VM I have running at the moment is 43mb, whereas the Working Set is 2.3Gb

share|improve this answer
    
What is full amount of memory application uses? Working set + Private set or just Working set? –  zendar Jun 9 '09 at 11:35
1  
Perhaps it's different in different versions of Windows, but under Windows 7 that's not what I'm seeing. The "Working Set" numbers are larger than the "Private Working Set" numbers, but not remotely enough to account for the VM's memory. I've tried all of the memory related columns and none of them do. This is with both Windows Virtual PC and VirtualBox. What version of Windows and what VM host are you using? –  Scott Bussinger Jun 9 '09 at 18:36
    
Unfortunately, there is no single number that indicates "how much memory" a process is using, since you get into complications like shared memory, file-mapped memory, paged-out memory and a few others. Here's a good explanation of a few concepts: stackoverflow.com/questions/1984186/… –  tylerl Jul 30 '10 at 20:06

Any hosted virtualization system like the ones you listed will include a device driver which runs within the host OS's kernel. This is necessary as user-mode programs can't issue the instructions necessary to create a virtual machine.

The reason that you don't see the memory in task manager is that you're looking at memory for the user-mode programs associated with the virtual machines, and not the kernel-mode device driver which actually allocated the memory for the VMs.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.