lkml.org 
[lkml]   [2012]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [RFC] Extend mwait idle to optimize away IPIs when possible
On Mon, Feb 06, 2012 at 12:42:13PM -0800, Venkatesh Pallipadi wrote:
> smp_call_function_single and ttwu_queue_remote sends unconditional IPI
> to target CPU. However, if the target CPU is in mwait based idle, we can
> do IPI-less wakeups using the magical powers of monitor-mwait.
> Doing this has certain advantages:

Actually I'm trying to do the similar thing on MIPS.

The difference is that I want task_is_polling() to do something. The basic
idea is:

> + if (ipi_pending()) {
> + clear_ipi_pending();
> + local_bh_disable();
> + local_irq_disable();
> + generic_smp_call_function_single_interrupt();
> + scheduler_wakeup_self_check();
> + local_irq_enable();
> + local_bh_enable();

I let cpu_idle() check if there is anything to do as your above code.

And task_is_polling() handle the others with below patch:
---
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 5255c9d..09f633d 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -527,15 +527,16 @@ void resched_task(struct task_struct *p)
smp_send_reschedule(cpu);
}

-void resched_cpu(int cpu)
+int resched_cpu(int cpu)
{
struct rq *rq = cpu_rq(cpu);
unsigned long flags;

if (!raw_spin_trylock_irqsave(&rq->lock, flags))
- return;
+ return 0;
resched_task(cpu_curr(cpu));
raw_spin_unlock_irqrestore(&rq->lock, flags);
+ return 1;
}

#ifdef CONFIG_NO_HZ
@@ -1484,7 +1485,8 @@ void scheduler_ipi(void)

static void ttwu_queue_remote(struct task_struct *p, int cpu)
{
- if (llist_add(&p->wake_entry, &cpu_rq(cpu)->wake_list))
+ if (llist_add(&p->wake_entry, &cpu_rq(cpu)->wake_list) &&
+ !resched_cpu(cpu))
smp_send_reschedule(cpu);
}

Thought?
Thanks,
Yong


\
 
 \ /
  Last update: 2012-02-08 07:55    [W:0.126 / U:0.148 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site