On 27/10/15 15:14, Toke Høiland-Jørgensen wrote: > So Dave and I did a bit of testing of Cake at a 1-second base RTT. That > showed that, compared with a straight FIFO queue (with a sufficiently > large buffer), throughput was suffering quite a bit under Cake, > especially at large bandwidths. We did two changes to fix this: > > - Turn the hard packet queue size into a lower bound rather than an > upper bound. > > - Scale the target to be 1/16th of the interval. > > The first change allows Cake to actually reach the target throughput, > but it still takes a long while to get there. With the second change, we > actually get the desired behaviour. The attached plot shows the > difference, with the solid line being before the change and the dashed > line being after the change. > > Patch attached. > > -Toke That patch is really going to behave strangely indeed. You end up with b->cparams.interval = max(rtt_est_ns + b->cparams.target - ns_target,b->cparams.target * 8); b->cparams.target = max(max(byte_target_ns, ns_target), b->cparams.interval >> 4); So interval no matter what happens takes note of 'cparams.target' which hasn't yet been set (on first run is 0) And target wants to take interval/16, which may be based on the previous calculation. Erm. Needs more thought. My brain isn't working at the moment due to illness, but recursively playing with bandwidth settings on cake is most entertaining at the moment ;-) Kevin (dead with cold/high as a kite on cold drugs)