The tasklet code also needs fixing. It is a miracle that the kernel
booted when I tested that code. Here is a fixed diff.
I am curious about performance of smptimers. It seems that
webserver benchmark performance worsens with smptimers (Ingo version)
contrary to our expectations. Do you see this ? If so, could this
happen because -
1) Bouncing around of global_bh_lock cacheline by more cpus compared
to earlier timer implemenation ?
2) All per-cpu timers invoked from timer_bh running in one cpu ?
Do you see any other side-effects of smptimers ?
Also, did my PPC changes for smptimers work or you had to fix it ?
Thanks
-- Dipankar Sarma <dipankar@in.ibm.com> http://lse.sourceforge.net Linux Technology Center, IBM Software Lab, Bangalore, India.--- linux-2.5.12-smptimers/kernel/timer.c Tue May 14 13:21:26 2002 +++ linux-2.5.14-smptimers/kernel/timer.c Mon May 20 15:46:29 2002 @@ -680,19 +680,14 @@ goto resched; if (!spin_trylock(&net_bh_lock)) - goto resched_net; - - if (!hardirq_trylock(cpu)) goto resched_unlock; if ((long)(jiffies - base->timer_jiffies) >= 0) __run_timers(base); - hardirq_endlock(cpu); + spin_unlock(&net_bh_lock); spin_unlock(&global_bh_lock); return; -resched_net: - spin_unlock(&net_bh_lock); resched_unlock: spin_unlock(&global_bh_lock); resched: @@ -719,20 +714,21 @@ if (!spin_trylock(&global_bh_lock)) goto out_enable_mark; if (!spin_trylock(&net_bh_lock)) - goto out_unlock_net; + goto out_unlock_enable_mark; if (!hardirq_trylock(cpu)) - goto out_unlock_enable_mark; + goto out_unlock_enable_mark_net; if ((long)(jiffies - base->timer_jiffies) >= 0) __run_timers(base); hardirq_endlock(cpu); + spin_unlock(&net_bh_lock); spin_unlock(&global_bh_lock); local_irq_enable(); local_bh_enable(); return; -out_unlock_net: +out_unlock_enable_mark_net: spin_unlock(&net_bh_lock); out_unlock_enable_mark: spin_unlock(&global_bh_lock);
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/