[RFC PATCH 00/10] Support free page filtering looking up mem_map array

HATAYAMA Daisuke d.hatayama at jp.fujitsu.com
Thu Jun 28 13:37:57 EDT 2012


Sorry for late posting. I made RFC patch set for free page filtering
looking up mem_map array. Unlike exiting method looking up free page
list, this is done in constant space.

I intend this patch set to be merged with Kumagai-san's cyclic patch
set, so I mark these with RFC. See TODO below. Also, I have yet to
test the logic for old kernels from v2.6.15 to v2.6.17.

This new free page filtering needs the following values.

  - OFFSET(page._mapcount)
  - OFFSET(page.private)
  - SIZE(pageflags)
  - NUMBER(PG_buddy)
  - NUMBER(PG_slab)
  - NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE)

Unfortunately, OFFSET(_mapcount) and OFFSET(private) fields of page
structure cannot be obtained from VMLINUX using the exiting library in
makedumpfile since two members are anonymous components of union
types. We need a new interface for them.

To try to use this patch set, it's handy to pass manually editted
VMCOREINFO file via -i option.

TODO

  1. Add new values in VMCOREINFO on the upstream kernel.

  2. Decide when to use this logic instead of the existing free list
  logic. Option is 1) introduce new dump level or 2) use it
  automatically if --cyclic is specified. This patch chooses 1) only
  for RFC use.

  3. Consider how to deal with old kernels on which we cannot add the
  values in VMCOREINFO. Options is 1) to force users to use VMLINUX,
  2) to cover them full hard coding or 3) to give up support on full
  range of kernel versions ever.

---

HATAYAMA Daisuke (10):
      Add page_is_buddy for old kernels
      Add page_is_buddy for PG_buddy
      Add page_is_buddy for recent kernels
      Add excldue free pages by looking up mem_map array
      Add command-line processing for free page filtering looking up mem_map array
      Add page flag values as hardcoded values
      Add debuginfo-related processing for VMCOREINFO/VMLINUX
      Add new parameters for various tables
      Add debuginfo interface for enum type size
      Move page flags setup for old kernels after debuginfo initialization


 dwarf_info.c   |   29 +++++++++++----
 dwarf_info.h   |    1 +
 makedumpfile.c |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 makedumpfile.h |   34 ++++++++++++++++-
 4 files changed, 158 insertions(+), 17 deletions(-)

-- 

Thanks.
HATAYAMA, Daisuke



More information about the kexec mailing list