CBQ implementation issues on linux

ashwani kumar mehra (ashwani_mehra@rediffmail.com)
19 Aug 2002 14:19:16 -0000


Hi,

I'm currently looking at various CBQ implementation issues and
have been comparing the ALTQ and the Linux approach in this
regard. However I've been unable to fathom out as to how does
Linux exactly address some of the CBQ requirements.

I've gone through the relevant portions of the code
(sch_cbq.c;sch_generic.c;pkt_*.c, etc.) My current understanding
is that the packet scheduler is invoked :

i) during packet enqueue (in
dev_queue_xmit->queue_run->queue_restart
ii) on expiry of CBQ watchdog timers (thru raising a software
interrupt from __netif_schedule in include/linux/netdevice.h).
iii) A late 1999 doc that i found on the web says the dequeue
code is also invoked via qdisc_run_queues (in sch_generic.c), thru
a bottom half handler(net_bh). but am unable to locate it in the
2.4.18 code. am i missing something obvious or has the same been
reimplemented using tasklets/soft interrupts? maybe a call to
qdisc_restart?

There are two issues
1. buffering at driver level: large buffering at driver level may
negate the effect of the scheduler by delaying higher priority
packets. ALTQ uses a token bucket regulator after the scheduler to
counter this problem. however i've been unable to find something
similar or any comment on this issue with regards to linux.

2. timer granularity issues: a driver will only interrupt after
its buffer gets emptied. however the scheduler may be invoked in
between by trigerring it on events like packet enqueue, expiry of
watchdog timers, etc. In case of timer expiry events, the timer
granularity remains 10 ms, so wont this lead to a bursty dequeue
on the next timer tick?

Please CC any replies.

Thanx in advance
Ashwani
India
__________________________________________________________
Give your Company an email address like
ravi @ ravi-exports.com. Sign up for Rediffmail Pro today!
Know more. http://www.rediffmailpro.com/signup/

-
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/