]> git.baikalelectronics.ru Git - kernel.git/commit
sched/numa, mm: Revert to checking pmd/pte_write instead of VMA flags
authorRik van Riel <riel@redhat.com>
Fri, 9 Sep 2016 01:30:53 +0000 (21:30 -0400)
committerIngo Molnar <mingo@kernel.org>
Tue, 13 Sep 2016 18:31:33 +0000 (20:31 +0200)
commitdd73f849d3255064345d373b6820e71e4385f125
tree0a1be3351915100a27ac466afcc65f555a71a248
parent6ae25a2d0ad1ea7c50d631a383a2f2510bd1b60a
sched/numa, mm: Revert to checking pmd/pte_write instead of VMA flags

Commit:

  02683643c6a4 ("mm: convert p[te|md]_mknonnuma and remaining page table manipulations")

changed NUMA balancing from _PAGE_NUMA to using PROT_NONE, and was quickly
found to introduce a regression with NUMA grouping.

It was followed up by these commits:

 f0376be760b1 ("mm: fix up numa read-only thread grouping logic")
 c0b987869d89 ("mm: numa: group related processes based on VMA flags instead of page table flags")
 5f67ab0d74c8 ("mm: numa: preserve PTE write permissions across a NUMA hinting fault")

The first of those two commits try alternate approaches to NUMA
grouping, which apparently do not work as well as looking at the PTE
write permissions.

The latter patch preserves the PTE write permissions across a NUMA
protection fault. However, it forgets to revert the condition for
whether or not to group tasks together back to what it was before
v3.19, even though the information is now preserved in the page tables
once again.

This patch brings the NUMA grouping heuristic back to what it was
before commit 02683643c6a4, which the changelogs of subsequent
commits suggest worked best.

We have all the information again. We should probably use it.

Signed-off-by: Rik van Riel <riel@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: aarcange@redhat.com
Cc: linux-mm@kvack.org
Cc: mgorman@suse.de
Link: http://lkml.kernel.org/r/20160908213053.07c992a9@annuminas.surriel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
mm/huge_memory.c
mm/memory.c