From: George on
Sorry Pavel,


I send some further information.

> So in practice private bytes/process commit are typically larger
> than the sum of all committed MEM_PRIVATE regions.

Why in practice private bytes/process commit are typically larger than the
sum of all committed MEM_PRIVATE regions?

In your below analysis and description, private bytes are all marked with
commiited MEM_PRIVATE regions, right?


regards,
George

"Pavel Lebedinsky [MSFT]" wrote:

> >> Before Vista, task manager had a counter called "VM Size" (in
> >> Vista it was renamed to Commit Size) that was actually the same
> >> as Private Bytes in perfmon. Private bytes may be smaller or
> >> larger than working set depending on circumstances.
> >
> > You mean it doesn't include executable pages from shared exe
> > sections?
>
> This also depends on circumstances :)
>
> "Private bytes" is not an entirely accurate term. It is best to think
> of it as the process commit charge. Process commit is charged
> for all committed private allocations (private allocations are
> reported as MEM_PRIVATE by VirtualQuery. They basically
> include VirtualAlloc and everything built on top of it, like malloc).
>
> Process commit is also charged when a process maps a copy-on-write
> view of a section (executable or not). This memory is not private
> (it will be either MEM_MAPPED or MEM_IMAGE depending
> on what kind of section it was), but it can potentially become private
> if the process writes to it, which is why commit has to be charged
> in advance.
>
> So in practice private bytes/process commit are typically larger
> than the sum of all committed MEM_PRIVATE regions.
>
> --
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>
>
>