Status of Nohz cpusets (adaptive tickless kernel) for January 2012
From: Frederic Weisbecker
Date: Tue Jan 17 2012 - 19:51:34 EST
Hi everyone,
I haven't yet fully addressed all the reviews I got when I posted the
nohz cpusets patchset last time (https://lkml.org/lkml/2011/8/15/245),
which is why I haven't yet posted the patches for a v2.
Meanwhile I'm still working on it and some progress has been made since
then so I've been thinking it could be nice to report the current status.
One of the steps that have been achieved so far is the detection of illegal uses
of RCU read side critical section while in RCU idle mode (extended quiescent
state). This was a necessary piece for the nohz cpuset because we extend the
RCU idle mode to userspace there. As it happened to become pretty error prone,
this debugging feature became mandatory (and indeed helped me to spot and
fix some bugs in my code).
In the meantime these changes have initiated a split between the nohz and idle
logics, reducing a bit the amount of changes in my tree.
So I have rebased my tree on top of latest rcu/core changes (those that have
been merged for 3.3-rc1) and continue to work on it.
Still several things to do before posting the patches of a v2
but things are moving forward. Also I have started a TODO list
there that I'll feed by the time:
https://tglx.de/~fweisbec/TODO-nohz-cpusets
Result of the work in progress as of today can be found at:
git://github.com/fweisbec/linux-dynticks.git
nohz/cpuset-v2-pre-20120117
Changes in this tree since v1:
- Rebase against latest rcu/core branch for v3.3-rc1
- Adapt against latest rcu changes: introduce new APIs
rcu_user_enter(), rcu_user_exit(), rcu_user_enter_irq()
and rcu_user_exit_irq()
- Handle RCU idle mode with do_notify_resume() path
- Fix deadlock after double rq lock on schedule:
schedule() -> rq_lock -> next is idle task ->
tick_nohz_restart_sched_tick() -> wake up softirq ->
rq lock
- Fix lockup while issuing flush times IPI on exit path:
CPU 0 CPU 1
read_lock(tasklist_lock)
write_lock_irq(tasklist_lock)
smp_call_function(CPU 1)
* deadlock *
- Many namespace renames (cpuset_* to tick_nohz_*) and code migration
from sched.c to tick-sched.c
- Seperate code that determine if we can stop the idle tick and don't
use it for adaptive tickless mode.
- Fix adaptive tickless mode set on idle incidentally. TIF_NOHZ was
then missing on the following task that ran tickless, issuing some
illegal uses of RCU.
--
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/