Op 5 aug 2008, om 14:14 heeft Tony Lindgren het volgende geschreven:
* Koen Kooi <k.kooi@xxxxxxxxxxxxxxxxxx> [080805 15:11]:Op 19 jun 2008, om 14:54 heeft Woodruff, Richard het volgende geschreven:Hi,I'll resend this to the omap list. I had originally sent it with somepictures but I guess they were too big for the lists. Individual should have got them. If anyone has the time this is a good to test with. If you havedynamic tick enabled it can double performance of high rate interruptthings like MUSB.This patch has been working for me quite well these last few week, anychance it can to into git?This needs to go in via LKML, I think Thomas Gleixner is looking into it.
Great! It seems that the bulk of the patches OE applies to the beagleboard kernel are on their way into upstream :)
regards, Koen
Tonyregards, KoenIf anyone wants I'll re-send larger trace pictures individually.From: Woodruff, Richard, Monday, June 16, 2008 7:06 PMIt simply does a check to see if the about to be reprogrammed 1 shotalready is the last event programmed in the hardware. If it is it skips calling the hardware.In my device I get many interrupts from a high speed USB device in avery short period of time. The system spends a lot of time reprogramming the hardware timer which is in a slower timing domain ascompared to the CPU. This results in the CPU spending a huge amountof time waiting for the timer posting to be done. All of this reprogramming is useless as the wake up time has not changed.As measured using ETM trace this drops my reprogramming penalty fromalmost 60% CPU load down to 15% during high interrupt rate. If you like I can send traces to show this.Attached are some results on OMAP-ARM from USB-OTG: As host: root@OMAP3EVM /]# mount -t vfat /dev/sda1 /mnt/ [root@OMAP3EVM /]# time -p cp /mnt/OE.mtn.bz2 /dev/null real 32.51 user 0.02 sys 1.05 [root@OMAP3EVM /]# umount /mnt/ [root@OMAP3EVM /]# mount -t vfat /dev/sda1 /mnt/ [root@OMAP3EVM /]# time -p cp /mnt/OE.mtn.bz2 /dev/null real 17.92 user 0.05 sys 1.57 As Client: Attached are some visuals as of client doing gadget zero tests.Pictures clearly show before a domination by timer reprogram and afternot. Regards, Richard W. diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index b854a89..ff6b967 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -254,6 +254,17 @@ void tick_nohz_stop_sched_tick(void) /* Schedule the tick, if we are at least one jiffie off */ if ((long)delta_jiffies >= 1) { + /* + * calculate the expiry time for the next timer wheel + * timer + */+ expires = ktime_add_ns(last_update, tick_period.tv64 *+ delta_jiffies); + + /* Skip reprogram of event if its not changed */ + if(ts->tick_stopped && ktime_equal(expires, dev-next_event))+ goto out2; + if (delta_jiffies > 1) cpu_set(cpu, nohz_cpu_mask); /* @@ -304,12 +315,7 @@ void tick_nohz_stop_sched_tick(void) goto out; } - /*- * calculate the expiry time for the next timer wheel- * timer - */- expires = ktime_add_ns(last_update, tick_period.tv64 *- delta_jiffies); + /* Mark expiries */ ts->idle_expires = expires; if (ts->nohz_mode == NOHZ_MODE_HIGHRES) { @@ -328,6 +334,7 @@ void tick_nohz_stop_sched_tick(void) tick_do_update_jiffies64(ktime_get()); cpu_clear(cpu, nohz_cpu_mask); } +out2: raise_softirq_irqoff(TIMER_SOFTIRQ); out: ts->next_jiffies = next_jiffies; --To unsubscribe from this list: send the line "unsubscribe linux- omap"in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html--To unsubscribe from this list: send the line "unsubscribe linux- omap" inthe body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
Attachment:
PGP.sig
Description: This is a digitally signed message part