so, I went and tested that patch. Turned out len was signed... I'd put it in the wrong place... and the very act of doing that test at all permutes the result. cake unshaped at 1gig, always splitting, ends up with a bql value of about 42,000, full throughput, e.g. if (skb_is_gso(skb)) { ... avg median # data pts Ping (ms) ICMP : 0.80 0.77 ms 341 TCP upload avg : 235.40 235.39 Mbits/s 301 TCP upload sum : 941.61 941.55 Mbits/s 301 TCP upload::1 : 235.36 235.39 Mbits/s 290 TCP upload::2 : 235.46 235.39 Mbits/s 291 TCP upload::3 : 235.38 235.45 Mbits/s 275 TCP upload::4 : 235.41 235.44 Mbits/s 278 conditionally splitting, either never or always, gives me bql of: 140852 if (skb_is_gso(skb) && len >= q->split_gso) { avg median # data pts Ping (ms) ICMP : 1.64 1.71 ms 347 TCP upload avg : 235.40 235.38 Mbits/s 301 TCP upload sum : 941.59 941.52 Mbits/s 301 TCP upload::1 : 235.35 235.44 Mbits/s 280 TCP upload::2 : 235.40 235.39 Mbits/s 276 TCP upload::3 : 235.47 235.43 Mbits/s 276 TCP upload::4 : 235.37 235.45 Mbits/s 282 the cache line miss can't possibly have cost that much. (?) Guess I have to go check the range of len. I WANT MY 800usec back! PS For giggles, I accidentally ended up using pfifo_fast for one run. I thought I'd broke something. Summary of tcp_nup test run 'split_gso_test_again_len_512000_bql_auto' (at 2018-07-25 20:51:10.533339): avg median # data pts Ping (ms) ICMP : 3.32 3.59 ms 347 TCP upload avg : 235.38 235.38 Mbits/s 301 TCP upload sum : 941.52 941.54 Mbits/s 301 TCP upload::1 : 152.48 150.93 Mbits/s 281 TCP upload::2 : 152.54 150.35 Mbits/s 286 TCP upload::3 : 483.96 491.12 Mbits/s 284 TCP upload::4 : 152.54 150.49 Mbits/s 284 On Tue, Jul 24, 2018 at 10:01 PM Dave Taht wrote: > > Ah... 1gbit, BQL at a sane size, 750 usec RTT. I guess I have to go > compile this patch now..... > > > -- > > Dave Täht > CEO, TekLibre, LLC > http://www.teklibre.com > Tel: 1-669-226-2619 -- Dave Täht CEO, TekLibre, LLC http://www.teklibre.com Tel: 1-669-226-2619