Sign in with
Sign up | Sign in
Your question

Need help to understand the memory usage on a Windows 2000..

Last response: in Windows XP
Share
April 28, 2005 6:24:02 AM

Archived from groups: microsoft.public.windowsxp.perform_maintain (More info?)

Hello,

Is there someone who can help me to understand the memory usage on a Windows
2000/XP system?

I have the following problem. I am trying to figure out how much memory a
given application needs, independently of where it is really located (working
set or page file).
I would like to be able to draw a picture for my process, showing the
complete 4 GByte address range, showing which addresses/volumes are reserved,
committed and shared and for which purpose.

How much memory is really used, and what is in the page file is not the
question here.

I am using the performance monitor to monitor the memory usages but I can
not figure out how to get the information I need.

According to one source the “\Process(<myprocess>)\Private Bytes� give me
the bytes exclusive committed to <myprocess>, including the used DLL’s. All
located in the virtual memory below address 80000000h (user memory). This is
also what I see when I use the “Process Walker�, however Process Walker shows
only the first 2 GByte and does not give any clue about sharing.

On the other side, I am reading that DLLs are shared amongst the different
processes and are therefore located above address 80000000h (System memory).
The needed memory is not counted in the private bytes. I suspect they are
counted in the \Process(<myprocess>)\Pool Nonpaged Bytes and
\Process(<myprocess>)\Pool Paged Bytes counters amongst with other system
code and resources. But when I compare the working set of my process, it is
bigger than the sum of the private bytes, Pool Nonpaged Bytes and Pool Paged
Bytes of my process which rejects this assumption.

To get more confused, I am also reading that the private bytes do count the
shared DLL’s. So you see, the more I read the more I get confused.

Can someone get my on the right track?

Filip.
Anonymous
a b } Memory
April 28, 2005 12:58:10 PM

Archived from groups: microsoft.public.windowsxp.perform_maintain (More info?)

Hi Filip,

I don't know if this will answer all your question, but it's a good
start.
Virtual Memory in Windows XP by Alex Nichol MS-MVP:
http://aumha.org/win5/a/xpvm.php

--
Regards,
Bert Kinney MS-MVP Shell/User
http://dts-l.org/


Filip wrote:
> Hello,
>
> Is there someone who can help me to understand the memory
> usage on a Windows 2000/XP system?
>
> I have the following problem. I am trying to figure out
> how much memory a given application needs, independently
> of where it is really located (working set or page file).
> I would like to be able to draw a picture for my process,
> showing the complete 4 GByte address range, showing which
> addresses/volumes are reserved, committed and shared and
> for which purpose.
>
> How much memory is really used, and what is in the page
> file is not the question here.
>
> I am using the performance monitor to monitor the memory
> usages but I can not figure out how to get the
> information I need.
>
> According to one source the
> "\Process(<myprocess>)\Private Bytes" give me the bytes
> exclusive committed to <myprocess>, including the used
> DLL's. All located in the virtual memory below address
> 80000000h (user memory). This is also what I see when I
> use the "Process Walker", however Process Walker shows
> only the first 2 GByte and does not give any clue about
> sharing.
>
> On the other side, I am reading that DLLs are shared
> amongst the different processes and are therefore located
> above address 80000000h (System memory). The needed
> memory is not counted in the private bytes. I suspect
> they are counted in the \Process(<myprocess>)\Pool
> Nonpaged Bytes and \Process(<myprocess>)\Pool Paged Bytes
> counters amongst with other system code and resources.
> But when I compare the working set of my process, it is
> bigger than the sum of the private bytes, Pool Nonpaged
> Bytes and Pool Paged Bytes of my process which rejects
> this assumption.
>
> To get more confused, I am also reading that the private
> bytes do count the shared DLL's. So you see, the more I
> read the more I get confused.
>
> Can someone get my on the right track?
>
> Filip.
May 2, 2005 3:58:02 AM

Archived from groups: microsoft.public.windowsxp.perform_maintain (More info?)

Hello Bert,

Thank you for the information, but no it is not what I was searching for.
I did already some reading before I came upto this question about how and
what windows is doing and which counters are available. The book "Windows
2000 Performance Guide" is advisable. However, digging into the memory usage
I do not find any information how to draw an memory map of the virtual
commited memory. I searched also the internet with several keyword (maybe the
wrong ones ;-)) but i did not find any usefull information.

Filip.

"Bert Kinney" wrote:

> Hi Filip,
>
> I don't know if this will answer all your question, but it's a good
> start.
> Virtual Memory in Windows XP by Alex Nichol MS-MVP:
> http://aumha.org/win5/a/xpvm.php
>
> --
> Regards,
> Bert Kinney MS-MVP Shell/User
> http://dts-l.org/
>
>
> Filip wrote:
> > Hello,
> >
> > Is there someone who can help me to understand the memory
> > usage on a Windows 2000/XP system?
> >
> > I have the following problem. I am trying to figure out
> > how much memory a given application needs, independently
> > of where it is really located (working set or page file).
> > I would like to be able to draw a picture for my process,
> > showing the complete 4 GByte address range, showing which
> > addresses/volumes are reserved, committed and shared and
> > for which purpose.
> >
> > How much memory is really used, and what is in the page
> > file is not the question here.
> >
> > I am using the performance monitor to monitor the memory
> > usages but I can not figure out how to get the
> > information I need.
> >
> > According to one source the
> > "\Process(<myprocess>)\Private Bytes" give me the bytes
> > exclusive committed to <myprocess>, including the used
> > DLL's. All located in the virtual memory below address
> > 80000000h (user memory). This is also what I see when I
> > use the "Process Walker", however Process Walker shows
> > only the first 2 GByte and does not give any clue about
> > sharing.
> >
> > On the other side, I am reading that DLLs are shared
> > amongst the different processes and are therefore located
> > above address 80000000h (System memory). The needed
> > memory is not counted in the private bytes. I suspect
> > they are counted in the \Process(<myprocess>)\Pool
> > Nonpaged Bytes and \Process(<myprocess>)\Pool Paged Bytes
> > counters amongst with other system code and resources.
> > But when I compare the working set of my process, it is
> > bigger than the sum of the private bytes, Pool Nonpaged
> > Bytes and Pool Paged Bytes of my process which rejects
> > this assumption.
> >
> > To get more confused, I am also reading that the private
> > bytes do count the shared DLL's. So you see, the more I
> > read the more I get confused.
> >
> > Can someone get my on the right track?
> >
> > Filip.
>
>
>
Anonymous
a b } Memory
May 2, 2005 10:27:18 PM

Archived from groups: microsoft.public.windowsxp.perform_maintain (More info?)

Quick and dirty definition of terms:
http://support.microsoft.com/default.aspx?scid=kb;en-us;294418
Paged Pool and non-paged pool are system areas. Whether or not you choose to
count IO buffers and incidentals against your application size is entirely
up to you. Those are shared with anything else likely to be running on the
system concurrently.

You have 2G (or 3G if running in that mode or more if running 64b) to play
with. Play and don't sweat it unless you're bumping the 2G line.

--
Walter Clayton
Any technology distinguishable from magic is insufficiently advanced.


"Filip" <Filip@discussions.microsoft.com> wrote in message
news:C8A50DBC-4993-41E8-8CC2-35CD05B15B5D@microsoft.com...
> Hello,
>
> Is there someone who can help me to understand the memory usage on a
> Windows
> 2000/XP system?
>
> I have the following problem. I am trying to figure out how much memory a
> given application needs, independently of where it is really located
> (working
> set or page file).
> I would like to be able to draw a picture for my process, showing the
> complete 4 GByte address range, showing which addresses/volumes are
> reserved,
> committed and shared and for which purpose.
>
> How much memory is really used, and what is in the page file is not the
> question here.
>
> I am using the performance monitor to monitor the memory usages but I can
> not figure out how to get the information I need.
>
> According to one source the “\Process(<myprocess>)\Private Bytes� give me
> the bytes exclusive committed to <myprocess>, including the used DLL’s.
> All
> located in the virtual memory below address 80000000h (user memory). This
> is
> also what I see when I use the “Process Walker�, however Process Walker
> shows
> only the first 2 GByte and does not give any clue about sharing.
>
> On the other side, I am reading that DLLs are shared amongst the different
> processes and are therefore located above address 80000000h (System
> memory).
> The needed memory is not counted in the private bytes. I suspect they are
> counted in the \Process(<myprocess>)\Pool Nonpaged Bytes and
> \Process(<myprocess>)\Pool Paged Bytes counters amongst with other system
> code and resources. But when I compare the working set of my process, it
> is
> bigger than the sum of the private bytes, Pool Nonpaged Bytes and Pool
> Paged
> Bytes of my process which rejects this assumption.
>
> To get more confused, I am also reading that the private bytes do count
> the
> shared DLL’s. So you see, the more I read the more I get confused.
>
> Can someone get my on the right track?
>
> Filip.
>
!