Re: [PATCH] Replace timer_bh with tasklet

Richard Zidlicky
2002-06-19T12:07:26Z

On Tue, Jun 18, 2002 at 04:17:45PM -0700, george anzinger wrote:
> Richard Zidlicky wrote:
> >
> > On Tue, Jun 18, 2002 at 11:07:32AM -0700, george anzinger wrote:
> >
> > >
> > > I reasoned that the timers, unlike most other I/O, directly drive the system.
> > > For example, the time slice is counted down by the timer BH. By pushing the
> > > timer out to ksoftirqd, running at nice 19, you open the door to a compute
> > > bound task running over its time slice (admittedly this should be caught on
> > > the next interrupt).
> >
> > I have had some problems with timers delayed up to 0.06s in 2.4 kernels,
> > could that be this problem?
> >
> It could be. Depends on what was going on at the time.

I have generated high load to test how accurately my genrtc driver will
work - it turned out that timers added with add_timer occassionally
get delayed by several jiffies. Results were much worse on IO bound
load, especially IDE drives, CPU intensive userspace apps didn't appear
to matter.

Using schedule_task() to poll the event seems to work without any
problems.

> In most cases, however,
> the next interrupt should cause a call to softirq and thus run the timer list. This
> would seem to indicate at 20ms delay at most (first call busys softirq thru a 10ms tick
> followed by recovery at the next tick).

this was also my impression after looking at the lowlevel interrupt
handling so I am really puzzled.

Richard