On Mon, 21 Feb 2011, Dave Hansen wrote:
v2 - rework if() block, and remove now redundant split_huge_page()
Right now, if a mm_walk has either ->pte_entry or ->pmd_entry
set, it will unconditionally split any transparent huge pages
it runs in to. In practice, that means that anyone doing a
cat /proc/$pid/smaps
will unconditionally break down every huge page in the process
and depend on khugepaged to re-collapse it later. This is
fairly suboptimal.
This patch changes that behavior. It teaches each ->pmd_entry
handler (there are five) that they must break down the THPs
themselves. Also, the _generic_ code will never break down
a THP unless a ->pte_entry handler is actually set.
This means that the ->pmd_entry handlers can now choose to
deal with THPs without breaking them down.
Acked-by: Mel Gorman <redacted>
Signed-off-by: Dave Hansen <redacted>
I have been running this set for serveral hours now and viewing
various smaps files is not causing wild shifts in my AnonHugePages:
counter.
Reviewed-and-tested-by: Eric B Munson [off-list ref]