Question about page count

Wick izhangxc at gmail.com
Mon Jun 20 21:46:54 EDT 2011


On Mon, Jun 20, 2011 at 9:10 PM, Jui-Hao Chiang <windtracekimo at gmail.com> 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



More information about the Kernelnewbies mailing list