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

Andy Lutomirski
2014-06-04T17:31:26Z

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