From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Chen, Kenneth W" Date: Thu, 28 Jul 2005 23:08:28 +0000 Subject: Delete scheduler SD_WAKE_AFFINE and SD_WAKE_BALANCE flags Message-Id: <200507282308.j6SN8Tg01993@unix-os.sc.intel.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Ingo Molnar , 'Nick Piggin' Cc: linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org What sort of workload needs SD_WAKE_AFFINE and SD_WAKE_BALANCE? SD_WAKE_AFFINE are not useful in conjunction with interrupt binding. In fact, it creates more harm than usefulness, causing detrimental process migration and destroy process cache affinity etc. Also SD_WAKE_BALANCE is giving us performance grief with our industry standard OLTP workload. To demonstrate the problem, we turned off these two flags in the cpu sd domain and measured a stunning 2.15% performance gain! And deleting all the code in the try_to_wake_up() pertain to load balancing gives us another 0.2% gain. The wake up patch should be made simple, just put the waking task on the previously ran cpu runqueue. Simple and elegant. I'm proposing we either delete these two flags or make them run time configurable. - Ken --- linux-2.6.12/include/linux/topology.h.orig 2005-07-28 15:54:05.007399685 -0700 +++ linux-2.6.12/include/linux/topology.h 2005-07-28 15:54:39.292555515 -0700 @@ -118,9 +118,7 @@ .flags = SD_LOAD_BALANCE \ | SD_BALANCE_NEWIDLE \ | SD_BALANCE_EXEC \ - | SD_WAKE_AFFINE \ - | SD_WAKE_IDLE \ - | SD_WAKE_BALANCE, \ + | SD_WAKE_IDLE, \ .last_balance = jiffies, \ .balance_interval = 1, \ .nr_balance_failed = 0, \