> Yeah, bpftrace can be a bit of a pain to get running; but it may be > worth the investment longer term as well. It really is quite useful! :) My attempt to build bpftrace didn't work out, so I just got the sojourn time using old fashioned trace event. The raw trace, parsed data in csv format and plots can be found here: https://drive.google.com/open?id=1Mg_wHu7elYAdkXz4u--42qGCVE1nrILV All tests are done with 2 TCP download sessions that oversubscribed the link bandwidth. With AQL on, the mean sojourn time about ~20000us, matches the default codel "target". With AQL off, the mean sojourn time is less than 4us even the latency is off the charts, just as we expected that fd_codel with mac80211 alone is not effective for drivers with deep firmware/hardware queues. > Any chance you could turn ecn on and off and give it a go > again in your next test run? ECN on shows very similar results as with ECN off. "aqm" stats from debugfs shows it is doing ECN marking instead of dropping packets as expected. Flent test data also is in the same link. On Fri, Nov 22, 2019 at 2:45 AM Toke Høiland-Jørgensen <toke@xxxxxxxxxx> wrote: > > Kan Yan <kyan@xxxxxxxxxx> writes: > > >> In theory, this ought to produce a histogram of sojourn times (in > >> microseconds): > >> bpftrace -e 'kretprobe:codel_skb_time_func { @sojourn = lhist((nsecs - > > (retval << 10))/1000, 0, 100000, 1000); }' > > > > Thanks for the tips! > > > >> Can't get the CoDel drop mechanism to trigger on my system at all, > >> though (a laptop running on iwl). I guess because there's queue > >> backpressure to userspace first? > > > > What's the tcp_congestion_control in your system? Maybe it is BBR that > > prevents bufferbloat. > > It's not BBR, just plain old CUBIC. I've seen the issue before that it's > almost impossible to build a queue in the mac80211 layer when the TCP > session is originated on the local machine, though... > > >> It would be interesting to see if it works for you, assuming you can get > >> bpftrace to work on your test system :) > > > > I can enable required kernel configuration easily, but cross-compile > > bpftrace for an ARM64 platform may take some time and effort. > > Yeah, bpftrace can be a bit of a pain to get running; but it may be > worth the investment longer term as well. It really is quite useful! :) > > Some links: > > Install guide: > https://github.com/iovisor/bpftrace/blob/master/INSTALL.md > > Tutorial by one-liners: > https://github.com/iovisor/bpftrace/blob/master/docs/tutorial_one_liners.md > > Reference guide: > https://github.com/iovisor/bpftrace/blob/master/docs/reference_guide.md#5-tracepoint-static-tracing-kernel-level > > -Toke >