Re: [patch 1/2] sched: fix idle load balancing in softirqd context

2007-02-21 Thread Andrew Morton
On Fri, 16 Feb 2007 18:03:35 -0800
"Siddha, Suresh B" <[EMAIL PROTECTED]> wrote:

> + int cpu = smp_processor_id(), idle_at_tick = idle_cpu(cpu);

argh.  Please, do

int cpu = smp_processor_id();
int idle_at_tick = idle_cpu(cpu);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 1/2] sched: fix idle load balancing in softirqd context

2007-02-20 Thread Siddha, Suresh B
On Sat, Feb 17, 2007 at 09:42:16AM -0500, Steven Rostedt wrote:
> On Fri, 16 Feb 2007, Siddha, Suresh B wrote:
> > -   int cpu = smp_processor_id();
> > +   int cpu = smp_processor_id(), idle_at_tick = idle_cpu(cpu);
> > struct rq *rq = cpu_rq(cpu);
> >
> 
> But I would recommend that the idle_at_tick should be on a separate line.

Ok.

> I'll try to look deeper at your patches tomorrow. I've also found that I'm
> having some latency problems in -rt that I think might be related to
> migration.

There is one more issue, I have observed in -rt tree.

raise_softirq_irqoff() is unconditionally doing the wakeup_softirqd()
But unless the CONFIG_PREEMPT_SOFTIRQS is configured, do_softirq()
will process the softirq's like TIMER_SOFTIRQ and SCHED_SOFTIRQ in the
process context.  So it looks like we are unnecessarily waking the
softirqd's corresponding to those softirq's.

thanks,
suresh
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 1/2] sched: fix idle load balancing in softirqd context

2007-02-17 Thread Steven Rostedt


On Fri, 16 Feb 2007, Siddha, Suresh B wrote:

> Periodic load balancing in recent kernels happen in the softirq.
> In certain -rt configurations, these softirqs are handled in softirqd
> context. And hence the check for idle processor was always returning
> busy (as nr_running > 1).
>
> This patch captures the idle information at the tick and passes this info
> to softirq context through an element 'idle_at_tick' in rq.

I haven't had the time yet to look too detailed at this patch.

>
> Signed-off-by: Suresh Siddha <[EMAIL PROTECTED]>
> ---
>

>  {
>   unsigned long long now = sched_clock();
>   struct task_struct *p = current;
> - int cpu = smp_processor_id();
> + int cpu = smp_processor_id(), idle_at_tick = idle_cpu(cpu);
>   struct rq *rq = cpu_rq(cpu);
>

But I would recommend that the idle_at_tick should be on a separate line.

I'll try to look deeper at your patches tomorrow. I've also found that I'm
having some latency problems in -rt that I think might be related to
migration.

-- Steve

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