2

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?

3

4 Answers 4

7

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.

1
  • +1 That's a great explanation, very interesting information - thank you for helping me to understand!
    – Shaul Behr
    Nov 8, 2010 at 15:16
8

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.

5
  • 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, 2010 at 12:32
  • @Shaul: That doesn't make much sense, only Windows 7 32bit can handle more than 3GB.
    – the_drow
    Nov 8, 2010 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, 2010 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, 2010 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, 2010 at 15:13
3

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.

2
  • The VM is running on a Windows system that uses the /3GB switch? Nov 29, 2010 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, 2010 at 14:05
1

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.

Not the answer you're looking for? Browse other questions tagged .