Re: setitimer lowlatency-2.2.13-A1 questions

William Montgomery (william@opinicus.com)
Mon, 6 Dec 1999 11:59:59 -0500 (EST)


On Mon, 6 Dec 1999, Ingo Molnar wrote:
> On Mon, 6 Dec 1999, William Montgomery wrote:
> > I tried using setitimer as a scheduling source for lowlatency testing
> > with generally good results. I left my test running over the weekend
> > and found some large latencies had occurred. It appears that since
> > the signal generation occurs in timer_bh, it is possible for a user
> > task to run between when the timer_interrupt occurs and when timer_bh
> > runs (~2msec in my case).
>
> that should not be possible (except on SMP where there might be a window).
> You are not running SMP, right? The TIMER_BH is run right when the IRQ
> handler returns to non-irq context (which might be user-space or kernel
> space), so it's not possible to 'lose' a TIMER_BH event due to some task
> running. BHs might get delayed due to interrupts though, so you might want
> to profile how long various interrupt sources execute.
>
The following ktrace shows the behavior I describe:
120792.42 0.35 do_IRQ pid(6801)
120792.78 2.17 do_8259A_IRQ pid(6801)
120794.95 0.41 handle_IRQ_event pid(6801)
120795.36 6.18 timer_interrupt pid(6801)
120801.55 0.59 do_timer pid(6801)
120802.14 0.94 enable_8259A_irq pid(6801)
120803.08 0.14 do_IRQ pid(6801)
120803.22 0.16 do_bottom_half pid(6801)
^^^---- seems like timer_bh should run right after this
120803.38 2.53 do_IRQ pid(6801)
120805.91 2.31 kmem_cache_free pid(6801)
120808.22 0.87 del_timer pid(6801)
120809.09 0.19 __kfree_skb pid(6801)
120809.28 0.26 sock_rfree pid(6801)
120809.54 0.16 kfree_skbmem pid(6801)
120809.71 0.55 kfree pid(6801)
120810.26 1.53 kmem_cache_free pid(6801)
120811.79 2079.30 do_IRQ pid(6801)
^^^-- I think pid(6801) is running now *prior* to timer_bh
122891.09 0.53 system_call pid(6801)
122891.62 0.81 sys_sigsuspend pid(6801)
122892.44 0.59 schedule pid(6801)
122893.03 0.30 do_bottom_half pid(6801)
122893.33 0.89 timer_bh pid(6801)
122894.21 0.42 update_wall_time pid(6801)
122894.63 0.86 update_wall_time_one_tick pid(6801)
122895.49 0.41 update_process_times pid(6801)
122895.90 1.76 update_one_process pid(6801)
122897.66 0.24 it_real_fn pid(6801)
122897.90 0.41 send_sig pid(6801)
122898.31 0.87 send_sig_info pid(6801)
122899.18 0.58 ignored_signal pid(6801)
122899.75 0.54 wake_up_process pid(6801)
122900.29 0.45 reschedule_idle pid(6801)
122900.75 2.79 add_timer pid(6801->6790)
122903.54 3.65 __switch_to pid(6790)

Am I interpreting this correctly?

Wm

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/