[PATCH v2 0/5] sched: Cleanup and improve polling idle loops

From: Andy Lutomirski
Date: Wed Jun 04 2014 - 13:32:32 EST


This series reduces the number of IPIs on my workload by something like
99%. It's down from many hundreds per second to very few.

The basic idea behind this series is to make TIF_POLLING_NRFLAG be a
reliable indication that the idle task is polling. Once that's done,
the rest is reasonably straightforward.

Patches 1 and 2 are related improvements: patch 1 teaches the cpuidle
polling loop how to poll, and patch 2 adds tracepoints so that avoided
IPIs are visible. Patch 3 is the main semantic change, patch 4 is
cleanup, and patch 5 is peterz's code, rebased on top of my stuff, and
fixed up a bit.

Changes from v1:

- Squashed the two idle loop rearrangement patches.
- Improved comments.

Andy Lutomirski (4):
cpuidle: Set polling in poll_idle
sched,trace: Add a tracepoint for IPI-less remote wakeups
sched,idle: Clear polling before descheduling the idle thread
sched,idle: Simplify wake_up_idle_cpu

Peter Zijlstra (1):
sched: Optimize ttwu IPI

drivers/cpuidle/driver.c | 7 ++--
include/trace/events/sched.h | 20 +++++++++++
kernel/sched/core.c | 79 +++++++++++++++++++++++++++++---------------
kernel/sched/idle.c | 30 ++++++++++++++++-
kernel/sched/sched.h | 6 ++++
5 files changed, 113 insertions(+), 29 deletions(-)

--
1.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/