[PATCH v2 00/12] mm: page migration enhancement for thp

From: Naoya Horiguchi
Date: Mon Nov 07 2016 - 18:38:38 EST

Hi everyone,

I've updated thp migration patches for v4.9-rc2-mmotm-2016-10-27-18-27
with feedbacks for ver.1.

General description (no change since ver.1)

This patchset enhances page migration functionality to handle thp migration
for various page migration's callers:
- mbind(2)
- move_pages(2)
- migrate_pages(2)
- cgroup/cpuset migration
- memory hotremove
- soft offline

The main benefit is that we can avoid unnecessary thp splits, which helps us
avoid performance decrease when your applications handles NUMA optimization on
their own.

The implementation is similar to that of normal page migration, the key point
is that we modify a pmd to a pmd migration entry in swap-entry like format.

Changes / Notes

- pmd_present() in x86 checks _PAGE_PRESENT, _PAGE_PROTNONE and _PAGE_PSE
bits together, which makes implementing thp migration a bit hard because
_PAGE_PSE bit is currently used by soft-dirty in swap-entry format.
I was advised to dropping _PAGE_PSE in pmd_present(), but I don't think
of the justification, so I keep it in this version. Instead, my approach
is to move _PAGE_SWP_SOFT_DIRTY to bit 6 (unused) and reserve bit 7 for
pmd non-present cases.

- this patchset still covers only x86_64. Zi Yan posted a patch for ppc64
and I think it's favorably received so that's fine. But there's unsolved
minor suggestion by Aneesh, so I don't include it in this set, expecting
that it will be updated/reposted.

- pte-mapped thp and doubly-mapped thp were not supported in ver.1, but
this version should work for such kinds of thp.

- thp page cache is not tested yet, and it's at the head of my todo list
for future version.

Any comments or advices are welcomed.

Naoya Horiguchi