sched: Fix select_idle_sibling() bouncing cow syndrome
authorMike Galbraith <bitbucket@online.de>
Mon, 28 Jan 2013 11:19:25 +0000 (12:19 +0100)
committerIngo Molnar <mingo@kernel.org>
Mon, 4 Feb 2013 19:07:24 +0000 (20:07 +0100)
commite0a79f529d5ba2507486d498b25da40911d95cf6
tree469947cd4407877ba69aa474cdfed0f2bda61d92
parent60334caf37dc7c59120b21faa625534a6fffead0
sched: Fix select_idle_sibling() bouncing cow syndrome

If the previous CPU is cache affine and idle, select it.

The current implementation simply traverses the sd_llc domain,
taking the first idle CPU encountered, which walks buddy pairs
hand in hand over the package, inflicting excruciating pain.

1 tbench pair (worst case) in a 10 core + SMT package:

  pre   15.22 MB/sec 1 procs
  post 252.01 MB/sec 1 procs

Signed-off-by: Mike Galbraith <bitbucket@online.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1359371965.5783.127.camel@marge.simpson.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/fair.c