On Mon, Jun 20, 2011 at 9:10 PM, Jui-Hao Chiang <[email protected]> wrote:
> Hi,
>
> I am currently analyzing the memory pages footprint in 2.6.18.8 kernel (1GB 
> ram,
> 32-bit, Flat model, no NUMA), and got a question. Does page_count(page)==0
> really means the page is free because the source code says so?
>
> If I just traverse mem_map for all memory descriptor, and count how many of 
> them
> has page_count 0, then the number of free page will exceed the MemFree number
> reported from /proc/meminfo (actually from the zone list).
>
> After some investigation, I figure out that page->flags actually encode the 
> zone
> information (DMA, NORMAL, HIGHMEM), and some of the page descriptors do not 
> have
> correct zone number. But filtering them out doesn't help.
>
> In my case, HIGHMEM has 61 free pages reported by /proc/meminfo, but when I
> traverse the page descriptors array from (896MB - 1024MB), I count the
> pages with
> (1) flags stating its zone == ZONE_HIGHMEM
> (2) page_count(page)==0
> My result is 186 but not 61.

The problem is that we can't see the details of your caculation.

Sugguest you take a look at function nr_free_highpages in linux/mm/highmem.c.

>
> Could anyone help on explaining this?

-- 
Shenzhen, CN
twitter: @izhangxc

_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to