diff options
author | Andrea Arcangeli <aarcange@redhat.com> | 2012-10-04 01:50:46 +0200 |
---|---|---|
committer | Mel Gorman <mgorman@suse.de> | 2012-12-11 14:28:35 +0000 |
commit | dbe4d2035a5b273c910f8f7eb0b7189ee76f63ad (patch) | |
tree | 9e638daa51015c85146d7efdad9a8ba0502c005b /init | |
parent | 397487db696cae0b026a474a5cd66f4e372995e6 (diff) | |
download | linux-dbe4d2035a5b273c910f8f7eb0b7189ee76f63ad.tar.gz linux-dbe4d2035a5b273c910f8f7eb0b7189ee76f63ad.tar.bz2 linux-dbe4d2035a5b273c910f8f7eb0b7189ee76f63ad.zip |
mm: numa: define _PAGE_NUMA
The objective of _PAGE_NUMA is to be able to trigger NUMA hinting page
faults to identify the per NUMA node working set of the thread at
runtime.
Arming the NUMA hinting page fault mechanism works similarly to
setting up a mprotect(PROT_NONE) virtual range: the present bit is
cleared at the same time that _PAGE_NUMA is set, so when the fault
triggers we can identify it as a NUMA hinting page fault.
_PAGE_NUMA on x86 shares the same bit number of _PAGE_PROTNONE (but it
could also use a different bitflag, it's up to the architecture to
decide).
It would be confusing to call the "NUMA hinting page faults" as
"do_prot_none faults". They're different events and _PAGE_NUMA doesn't
alter the semantics of mprotect(PROT_NONE) in any way.
Sharing the same bitflag with _PAGE_PROTNONE in fact complicates
things: it requires us to ensure the code paths executed by
_PAGE_PROTNONE remains mutually exclusive to the code paths executed
by _PAGE_NUMA at all times, to avoid _PAGE_NUMA and _PAGE_PROTNONE to
step into each other toes.
Because we want to be able to set this bitflag in any established pte
or pmd (while clearing the present bit at the same time) without
losing information, this bitflag must never be set when the pte and
pmd are present, so the bitflag picked for _PAGE_NUMA usage, must not
be used by the swap entry format.
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Mel Gorman <mgorman@suse.de>
Reviewed-by: Rik van Riel <riel@redhat.com>
Diffstat (limited to 'init')
0 files changed, 0 insertions, 0 deletions