From: Rik van Riel <r...@redhat.com>

commit 096aa33863a5e48de52d2ff30e0801b7487944f4 upstream

Affine wakeups have the potential to interfere with NUMA placement.
If a task wakes up too many other tasks, affine wakeups will get
disabled.

However, regardless of how many other tasks it wakes up, it gets
re-enabled once a second, potentially interfering with NUMA
placement of other tasks.

By decaying wakee_wakes in half instead of zeroing it, we can avoid
that problem for some workloads.

Signed-off-by: Rik van Riel <r...@redhat.com>
Signed-off-by: Peter Zijlstra <pet...@infradead.org>
Cc: chegu_vi...@hp.com
Cc: umgwanakikb...@gmail.com
Link: http://lkml.kernel.org/r/20140516001332.67f91...@annuminas.surriel.com
Signed-off-by: Ingo Molnar <mi...@kernel.org>
Signed-off-by: Yang Shi <yang....@windriver.com>
---
 kernel/sched/fair.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 0afd990..bd46512 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -4052,7 +4052,7 @@ static void record_wakee(struct task_struct *p)
         * about the loss.
         */
        if (jiffies > current->wakee_flip_decay_ts + HZ) {
-               current->wakee_flips = 0;
+               current->wakee_flips >>= 1;
                current->wakee_flip_decay_ts = jiffies;
        }
 
-- 
2.0.2

-- 
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to