On Mon, Jun 20, 2011 at 9:10 PM, Jui-Hao Chiang <windtracekimo@xxxxxxxxx> 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 Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies