I am running some tests on a very powerful machine ( 24GB RAM, Window 2008 64bit )

I checked my task manager: Physical memory: 98% ( RAM is 24GB )

But the totally "Memory(Private working set)" usage of all my running processors is no more than 16GB

Where are those extra 8GB used for? Is it used by the OS IO buffer, or somewhere else?

Can anyone contribute some ideas?

  • 1
    Voting to close as this is not a programming related question.... – t0mm13b Nov 19 '10 at 19:07
  • Should be on superuser.com – Ivo Wetzel Nov 19 '10 at 19:08

Starting with Vista/Server 2008 Microsoft use almost all the memory available for caching purposes in order to improve performance:

Why Does Vista Use All My Memory?

Note that this doesn't affect the load time of new processes because the memory used by the cache is just discarded when more RAM is needed.

MS employee Mark Russinovich (cofounder of SysInternals) explains how virtual memory works in Windows:

Pushing the Limits of Windows: Virtual Memory.

The series Pushing the Limits of Windows are quite interesting because Mark explains several concepts of Windows that usually aren't well known or misunderstood (for example the difference between Process Address Spaces and Virtual Memory).


I thought memory is not shared so each VM has its memory reserved. That's why you see your memory usage high because of overhead to run Host OS.

  • But normally OS doesn't need 8GB to run. And most of time we see VM > ram – Kavin Nov 19 '10 at 19:20
  • WS2008 requires 8gb, so if you run HyperV that's alot of resources consumed. Try with Core Server (w/o GUI) – VinceL Nov 19 '10 at 19:33
  • Windows Server does not require 8Gb of ram, VinceL. microsoft.com/windowsserver2008/en/us/system-requirements.aspx – Rob Moir Nov 19 '10 at 20:00

Windows (along with any operating system, including even DOS with SmartDisk!) will maintain a disk and IO cache in memory (including network buffers, etc). Another chunk of memory will go to managing the VM page tables (more RAM = more page tables) and other operating system overhead.

Different OSes have different policies on when they eject the disk cache for process memory, many will even prefer to swap out dead pages from a process instead of reducing the disk cache to near 0.

  • Is there any way to check the IO buffer size currently used? the VM page table should be pretty small, in 32bit machine is at most 16M, so should not be a problem – Kavin Nov 19 '10 at 19:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy