Re: [RFC] Patch: dynticks: idle load balancing
- From: Ingo Molnar <mingo@xxxxxxx>
- Date: Thu, 14 Dec 2006 00:13:16 +0100
* Ingo Molnar <mingo@xxxxxxx> wrote:
Appended patch attempts to fix the process idle load balancing in
the presence of dynticks. cpus for which ticks are stopped will
sleep till the next event wakes it up. Potentially these sleeps can
be for large durations and during which today, there is no idle load
balancing being done. There was some discussion happened(last year)
on this topic on lkml, where two main approaches were gettting
debated. One is to back off the idle load balancing for bigger
intervals and the second is a watchdog mechanism where the busy cpu
will trigger the load balance on an idle cpu. Both of these
mechanisms have its drawbacks.
nice work! I have added your patch to -rt. Btw., it needs the patch
below to work on 64-bit.
there's another bug as well: in schedule() resched_cpu() is called with
the current runqueue held in two places, which is deadlock potential.
The easiest fix for this is to use trylock - find the patch for that.
This is a hint only anyway - and if a CPU is idle its runqueue will be
lockable. (fixing it via double-locking is easy in the first call site,
but the second one looks harder)
Ingo
Index: linux/kernel/sched.c
===================================================================
--- linux.orig/kernel/sched.c
+++ linux/kernel/sched.c
@@ -1167,12 +1167,14 @@ static void resched_task(struct task_str
if (!tsk_is_polling(p))
smp_send_reschedule(cpu);
}
+
static void resched_cpu(int cpu)
{
struct rq *rq = cpu_rq(cpu);
- unsigned int flags;
+ unsigned long flags;
- spin_lock_irqsave(&rq->lock, flags);
+ if (!spin_trylock_irqsave(&rq->lock, flags))
+ return;
resched_task(cpu_curr(cpu));
spin_unlock_irqrestore(&rq->lock, flags);
}
-
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/
- Follow-Ups:
- Re: [RFC] Patch: dynticks: idle load balancing
- From: Ingo Molnar
- Re: [RFC] Patch: dynticks: idle load balancing
- From: Siddha, Suresh B
- Re: [RFC] Patch: dynticks: idle load balancing
- References:
- [RFC] Patch: dynticks: idle load balancing
- From: Siddha, Suresh B
- Re: [RFC] Patch: dynticks: idle load balancing
- From: Ingo Molnar
- [RFC] Patch: dynticks: idle load balancing
- Prev by Date: [PATCH] sched: remove __cpuinitdata anotation to cpu_isolated_map
- Next by Date: [-mm patch] fs/ocfs2/dlm/: make functions static
- Previous by thread: Re: [RFC] Patch: dynticks: idle load balancing
- Next by thread: Re: [RFC] Patch: dynticks: idle load balancing
- Index(es):
Relevant Pages
|