I think this is too slow, especially for a busy system, but there are
solutions...
>
> You only need to reprogram the interval timer when:
> 1. You've got a new entry at the head of the list
> AND
> 2. You've reprogrammed the interval to something larger than the time to
> the new head of list.
Uh, I think 1. IMPLIES 2. If it is at the head, it must be closer in
than what the system is waiting for (unless, of course its time has
already passed, but lets not consider that here).
>
> In the case of a device timeout, it is usually not going to be inserted at
> the head of the list. It is very seldom going to actually timeout.
Right, and if the system doesn't have many timers, thus putting this at
the head, it has the time to do the extra work.
>
> Choose your interval wisely, only increasing it when you know it will pay
> off. The best way of doing this would probably be to track some sort
> of LCD for timeouts.
I wonder about a more relaxed device timeout semantic that says
something like: wait X + next timer interrupt. This would cause the
timer insert code to find an entry at least X out and put this timer
just after it. There are other ways to do this of course. The question
here is: Would this be worth while?
>
> The real trick is to do a lot less processing on every tick than is
> currently done. Current generation PCs can easily handle 1000s of
> interrupts a second if you keep the overhead small.
I don't see the logic here. Having taken the interrupt, one would tend
to want to do as much as possible, rather than schedule another
interrupt to continue the processing. Rather, I think you are trying to
say that we can afford to take more interrupts for time keeping. Still,
I think what we are trying to get with tick less timers is a system that
takes FEWER interrupts, not more.
George
-
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/