lkml.org 
[lkml]   [2013]   [Oct]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:sched/core] sched/numa: Slow scan rate if no NUMA hinting faults are being recorded
    Commit-ID:  f307cd1a32fab53012b01749a1f5ba10b0a7243f
    Gitweb: http://git.kernel.org/tip/f307cd1a32fab53012b01749a1f5ba10b0a7243f
    Author: Mel Gorman <mgorman@suse.de>
    AuthorDate: Mon, 7 Oct 2013 11:28:56 +0100
    Committer: Ingo Molnar <mingo@kernel.org>
    CommitDate: Wed, 9 Oct 2013 12:40:21 +0200

    sched/numa: Slow scan rate if no NUMA hinting faults are being recorded

    NUMA PTE scanning slows if a NUMA hinting fault was trapped and no page
    was migrated. For long-lived but idle processes there may be no faults
    but the scan rate will be high and just waste CPU. This patch will slow
    the scan rate for processes that are not trapping faults.

    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-19-git-send-email-mgorman@suse.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    ---
    kernel/sched/fair.c | 12 ++++++++++++
    1 file changed, 12 insertions(+)

    diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
    index e08d757..c6c3302 100644
    --- a/kernel/sched/fair.c
    +++ b/kernel/sched/fair.c
    @@ -1039,6 +1039,18 @@ void task_numa_work(struct callback_head *work)

    out:
    /*
    + * If the whole process was scanned without updates then no NUMA
    + * hinting faults are being recorded and scan rate should be lower.
    + */
    + if (mm->numa_scan_offset == 0 && !nr_pte_updates) {
    + p->numa_scan_period = min(p->numa_scan_period_max,
    + p->numa_scan_period << 1);
    +
    + next_scan = now + msecs_to_jiffies(p->numa_scan_period);
    + mm->numa_next_scan = next_scan;
    + }
    +
    + /*
    * It is possible to reach the end of the VMA list but the last few
    * VMAs are not guaranteed to the vma_migratable. If they are not, we
    * would find the !migratable VMA on the next scan but not reset the

    \
     
     \ /
      Last update: 2013-10-09 19:41    [W:4.588 / U:1.856 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site