[Gllug] Pages marked as present but not mapped

Nix nix at esperi.org.uk
Tue Aug 30 23:48:42 UTC 2011

On 30 Aug 2011, Christian Smith said:

> What I suspect is happening is that you're reading entries for pages that
> are not present (else the present bit would be 1) but are not swapped.

Agreed. Some of this may be text pages which haven't been paged in: some
may be due to malloc() overcommitment.

> This will be mmap'ed pages that have never been referenced. mmap'ed
> pages are never "swapped", they are written to their underlying file
> if dirty.

Only pages mmap()ed with PROT_WRITE and MAP_SHARED are ever written to
their underlying file. Pages mapped with PROT_WRITE and MAP_PRIVATE
*can* be swapped out.

>           Only anonymouse and private pages are swapped to the swap files.

Those pages are still mmap()ed.

> Unreferenced mmap pages simply use the virtual memory map information
> to locate their data from the file, so don't need the swap information.

There need be no data in the case of overcommitted anonymous mmap()s.

NULL && (void)
Gllug mailing list  -  Gllug at gllug.org.uk

More information about the GLLUG mailing list