Hmm, I'm not sure if net_bh is the answer: the soft timers paper describes
soft timer checks basically whenever we run BHs, plus soft timer checks on
system call return (funny, I thought we did this ?), and on CPU idle.
Unless I've overlooked something, TBF and CBQ are only invoked if a)
something requests a net_bh, or b) their own wakeup timer fires. b) is too
infrequent for good shaping. a) depends on overall network activity - e.g.
if the machine is waiting because of the network, this activity can drop.
So net_bh basically slows down when we're waiting. Correct ? In order to
get better resolution, the equivalent of calling mark_bh(NET_BH) in
qdisc_continue_run would be needed. Also, the equivalent of calling
do_bottom_half from the idle loop, and possibly generally on system call
return would be needed.
I write "equivalent", because I don't expect just making all of net_bh
fire all the time, and going through possibly many qdiscs just to find
out that it's still too early for the TBF/CBQ deep inside, would be very
good performance-wise, so something more specialized would be needed.
Is this roughly the scenario you've tested ?
- Werner
-- _________________________________________________________________________ / Werner Almesberger, ICA, EPFL, CH werner.almesberger@ica.epfl.ch / /_IN_N_032__Tel_+41_21_693_6621__Fax_+41_21_693_6610_____________________/- 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/