Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Possible Duplicate:
Memory sticks, 32 and 64 Bit OS

I have a VMWare virtual machine on my computer (Host: Win7 x64, VM: Win7 x86). The host has 8GB, of which I've allocated 4GB to the VM, as you can see in the below screen shot:

alt text

But when I go to the VM itself, the computer seems to think it only has 3 GB - see screenshot from Task Manager:

alt text

Note the total physical memory of 3071 GB. I have tried powering down the VM and restarting, but it still doesn't use the extra memory.

See also my screen shot of the system: alt text

Is this a limitation of VMWare? Or is there some secret switch I need to flip?

share|improve this question

marked as duplicate by Ivo Flipse Nov 8 '10 at 15:12

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1  
As I understand the host is x64 but you don't mention anything about VM (OS / 32 or 64 bit) –  Siim K Nov 8 '10 at 11:11
    
@Siim K: 32 bit - see my edit –  Shaul Behr Nov 8 '10 at 12:12
2  
I know this is regarding VMs, but is basically the same old "my 32 bit computer is not using all of its memory" questions which have been answered many times, it doesn't matter that the host is 64-bit, the guest is 32 bit and WILL NOT properly use all of that last gigabyte of RAM no matter what you do: superuser.com/questions/194897 superuser.com/questions/7964 superuser.com/questions/141930 superuser.com/questions/50138 –  Mokubai Nov 8 '10 at 13:58

4 Answers 4

up vote 4 down vote accepted

Generally a 32 bit operating system can only see 4 GB of memory, including devices (graphics card etc.). This results in the OS seeing 3 GB of physical memory, even if more than 3 GB is installed. This is true for physical machines and VMs.

32 bit Windows XP, like Windows 2003 Server and later, supported PAE (Physical Address Extensions) which allowed it to use more than 4 GB of physical memory. Windows Vista and Windows 7 do not support PAE any more because of driver incompatibilities that were already present in Windows XP.

Thus generally only 64 bit Windows supports more than 3 GB of physical memory plus 32 bit versions of Windows supporting PAE (Windows 2000, Windows XP, Windows Server 2003, Windows Server 2008); while 32 bit versions of Windows that do not support PAE (Windows Vista, Windows 7) cannot usually see more than 3 GB of physical memory.

Again note that memory assigned to a VM counts as "physical memory" for the OS running in the VM.

share|improve this answer
    
+1 That's a great explanation, very interesting information - thank you for helping me to understand! –  Shaul Behr Nov 8 '10 at 15:16

32 bit machines may only address (see) 3 GB of ram. Your VM may be granting it 4 GB, but it can only use 3 GB of it. If you wish to use the remaining space, install a 64 bit OS in the VM.

share|improve this answer
    
Is that limitation only for virtual machines? When I had Win XP (32 bit) on my main machine, it was using all 4 GB...? –  Shaul Behr Nov 8 '10 at 12:32
    
@Shaul: That doesn't make much sense, only Windows 7 32bit can handle more than 3GB. –  the_drow Nov 8 '10 at 12:51
    
@the_drow: that contradicts what @Zack is saying here - that even Win7 32-bit cannot handle more than 3GB. According to you, why can my Win7 x86 VM not handle 4GB? –  Shaul Behr Nov 8 '10 at 12:54
    
@Shaul: That's atleast what I understood from my workplace's IT department. But generally speaking Zack is right, it might be a VM issue. –  the_drow Nov 8 '10 at 13:07
    
@the_drow: What you meant is 'only Windows 64-bit can handle more than 3GB'. Actually, the amount varies with machine, as some of the 4GB addressable memory space is needed by the hardware. –  paradroid Nov 8 '10 at 15:13

Chances are that the VM is running in the host OS as a 32-bit program so that it can properly support a 32-bit guest. This means that it is subject to 32-bit limitations and as such the memory it can allocate is subject to the 3GB Virtual Address Space and 1GB Kernel Space limitations that are placed on 32-bit programs.

A nice blog about it: http://blogs.technet.com/b/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx

From that page your address space for the hosting program would look like this:

alt text

And your VM would be locked into the 3GB space as the final GB is required for the 32 bit program to have access to the system drivers on your host.

share|improve this answer
    
+1 very interesting info, thanks! –  Shaul Behr Nov 8 '10 at 15:17
    
The VM is running on a Windows system that uses the /3GB switch? –  Andrew J. Brehm Nov 29 '10 at 12:26
    
@Andrew, Not necessarily. For 32-bit apps to run on 64-bit Windows they need a 32-bit environment and address space. Windows keeps the 32-bit and 64-bit systems separate and a 32-bit process such as the VM would likely see the 4GB memory map as above (with the vitrual machine handling the 1GB slot for its devices) while a 64-bit process would see a much larger address space. If you want to learn about Windows virtual memory and 64/32 bit issues see blogs.technet.com/b/markrussinovich/archive/2008/11/17/… –  Mokubai Nov 29 '10 at 14:05

If you see this happening with 64-bit VMs, it's because some VMware products, like ESX/ESXi and Workstation can overcommit RAM to virtual machines.

This allows several VMs to run with more RAM allocated to them than the host machine physically has. While the RAM is overcommited to them, they only actually receive the RAM dynamically once they actually need it.

share|improve this answer

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