sched/numa: Do not trap hinting faults for shared libraries
NUMA hinting faults will not migrate a shared executable page mapped by multiple processes on the grounds that the data is probably in the CPU cache already and the page may just bounce between tasks running on multipl nodes. Even if the migration is avoided, there is still the overhead of trapping the fault, updating the statistics, making scheduler placement decisions based on the information etc. If we are never going to migrate the page, it is overhead for no gain and worse a process may be placed on a sub-optimal node for shared executable pages. This patch avoids trapping faults for shared libraries entirely. Signed-off-by: Mel Gorman <mgorman@suse.de> Reviewed-by: Rik van Riel <riel@redhat.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1381141781-10992-36-git-send-email-mgorman@suse.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
06ea5e035b
commit
4591ce4f2d
|
@ -1231,6 +1231,16 @@ void task_numa_work(struct callback_head *work)
|
||||||
if (!vma_migratable(vma) || !vma_policy_mof(p, vma))
|
if (!vma_migratable(vma) || !vma_policy_mof(p, vma))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Shared library pages mapped by multiple processes are not
|
||||||
|
* migrated as it is expected they are cache replicated. Avoid
|
||||||
|
* hinting faults in read-only file-backed mappings or the vdso
|
||||||
|
* as migrating the pages will be of marginal benefit.
|
||||||
|
*/
|
||||||
|
if (!vma->vm_mm ||
|
||||||
|
(vma->vm_file && (vma->vm_flags & (VM_READ|VM_WRITE)) == (VM_READ)))
|
||||||
|
continue;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
start = max(start, vma->vm_start);
|
start = max(start, vma->vm_start);
|
||||||
end = ALIGN(start + (pages << PAGE_SHIFT), HPAGE_SIZE);
|
end = ALIGN(start + (pages << PAGE_SHIFT), HPAGE_SIZE);
|
||||||
|
|
Loading…
Reference in New Issue