Hi folks and Stefan, I tried the rate limit features in 8.18.0 (I used TOT as of today as I supposed it eventually would be used to make a final 8.18.0 build), and observed some noticeable regressions in some speed limits vs 8.17.0.
Here are the results from my throttle tests: ############################################################################## # 8.18.0 Speed limit test [LAN (~700 mbps)], iterations=5 Url=http://192.168.1.218/Data/file_1M.bin, max_speed=8000000 bps time=1017 ms, dnld=1048576 B, speed=8244024 bps, spd_diff=244024 bps, pct=3.1 % time=1017 ms, dnld=1048576 B, speed=8247825 bps, spd_diff=247825 bps, pct=3.1 % time=1020 ms, dnld=1048576 B, speed=8221594 bps, spd_diff=221594 bps, pct=2.8 % time=1022 ms, dnld=1048576 B, speed=8203736 bps, spd_diff=203736 bps, pct=2.5 % time=1031 ms, dnld=1048576 B, speed=8136017 bps, spd_diff=136017 bps, pct=1.7 % -------------------------------------------------------------------- avg_deviation=2.6 %, max_deviation=3.1 % Url=http://192.168.1.218/Data/file_1M.bin, max_speed=16000000 bps time=524 ms, dnld=1048576 B, speed=15993990 bps, spd_diff=-6010 bps, pct=-0.0 % time=523 ms, dnld=1048576 B, speed=16017658 bps, spd_diff=17658 bps, pct=0.1 % time=510 ms, dnld=1048576 B, speed=16423165 bps, spd_diff=423165 bps, pct=2.6 % time=506 ms, dnld=1048576 B, speed=16550768 bps, spd_diff=550768 bps, pct=3.4 % time=520 ms, dnld=1048576 B, speed=16128960 bps, spd_diff=128960 bps, pct=0.8 % -------------------------------------------------------------------- avg_deviation=1.4 %, max_deviation=3.4 % Url=http://192.168.1.218/Data/file_1M.bin, max_speed=20000000 bps time=63 ms, dnld=1048576 B, speed=131875617 bps, spd_diff=111875617 bps, pct=559.4 % time=18 ms, dnld=1048576 B, speed=457518843 bps, spd_diff=437518843 bps, pct=2187.6 % time=17 ms, dnld=1048576 B, speed=475598593 bps, spd_diff=455598593 bps, pct=2278.0 % time=18 ms, dnld=1048576 B, speed=464177069 bps, spd_diff=444177069 bps, pct=2220.9 % time=17 ms, dnld=1048576 B, speed=476219585 bps, spd_diff=456219585 bps, pct=2281.1 % -------------------------------------------------------------------- avg_deviation=1905.4 %, max_deviation=2281.1 % Url=http://192.168.1.218/Data/file_1M.bin, max_speed=32000000 bps time=31 ms, dnld=1048576 B, speed=267153121 bps, spd_diff=235153121 bps, pct=734.9 % time=17 ms, dnld=1048576 B, speed=479431216 bps, spd_diff=447431216 bps, pct=1398.2 % time=24 ms, dnld=1048576 B, speed=341931602 bps, spd_diff=309931602 bps, pct=968.5 % time=17 ms, dnld=1048576 B, speed=473424459 bps, spd_diff=441424459 bps, pct=1379.5 % time=17 ms, dnld=1048576 B, speed=470134394 bps, spd_diff=438134394 bps, pct=1369.2 % -------------------------------------------------------------------- avg_deviation=1170.0 %, max_deviation=1398.2 % ############################################################################## # 8.17.0 Speed limit test [LAN (~700 mbps)], iterations=5 Url=http://192.168.1.218/Data/file_1M.bin, max_speed=8000000 bps time=925 ms, dnld=1048576 B, speed=9068000 bps, spd_diff=1068000 bps, pct=13.4 % time=972 ms, dnld=1048576 B, speed=8622989 bps, spd_diff=622989 bps, pct=7.8 % time=957 ms, dnld=1048576 B, speed=8756988 bps, spd_diff=756988 bps, pct=9.5 % time=914 ms, dnld=1048576 B, speed=9175890 bps, spd_diff=1175890 bps, pct=14.7 % time=977 ms, dnld=1048576 B, speed=8584471 bps, spd_diff=584471 bps, pct=7.3 % -------------------------------------------------------------------- avg_deviation=10.5 %, max_deviation=14.7 % Url=http://192.168.1.218/Data/file_1M.bin, max_speed=16000000 bps time=525 ms, dnld=1048576 B, speed=15953504 bps, spd_diff=-46496 bps, pct=-0.3 % time=508 ms, dnld=1048576 B, speed=16508003 bps, spd_diff=508003 bps, pct=3.2 % time=478 ms, dnld=1048576 B, speed=17529952 bps, spd_diff=1529952 bps, pct=9.6 % time=519 ms, dnld=1048576 B, speed=16139325 bps, spd_diff=139325 bps, pct=0.9 % time=445 ms, dnld=1048576 B, speed=18810182 bps, spd_diff=2810182 bps, pct=17.6 % -------------------------------------------------------------------- avg_deviation=6.2 %, max_deviation=17.6 % Url=http://192.168.1.218/Data/file_1M.bin, max_speed=20000000 bps time=350 ms, dnld=1048576 B, speed=23956773 bps, spd_diff=3956773 bps, pct=19.8 % time=382 ms, dnld=1048576 B, speed=21927790 bps, spd_diff=1927790 bps, pct=9.6 % time=350 ms, dnld=1048576 B, speed=23915588 bps, spd_diff=3915588 bps, pct=19.6 % time=381 ms, dnld=1048576 B, speed=21986989 bps, spd_diff=1986989 bps, pct=9.9 % time=351 ms, dnld=1048576 B, speed=23883449 bps, spd_diff=3883449 bps, pct=19.4 % -------------------------------------------------------------------- avg_deviation=15.7 %, max_deviation=19.8 % Url=http://192.168.1.218/Data/file_1M.bin, max_speed=32000000 bps time=238 ms, dnld=1048576 B, speed=35119350 bps, spd_diff=3119350 bps, pct=9.7 % time=249 ms, dnld=1048576 B, speed=33601339 bps, spd_diff=1601339 bps, pct=5.0 % time=253 ms, dnld=1048576 B, speed=33094550 bps, spd_diff=1094550 bps, pct=3.4 % time=254 ms, dnld=1048576 B, speed=32996396 bps, spd_diff=996396 bps, pct=3.1 % time=238 ms, dnld=1048576 B, speed=35155409 bps, spd_diff=3155409 bps, pct=9.9 % -------------------------------------------------------------------- avg_deviation=6.2 %, max_deviation=9.9 % As we can see, while the precision was improved for some speed limits (8 Mbps and 16 Mbps) it hugely decreased for the others (20 Mbps and 32 Mbps), where the speed limits were essentially not applied. I don't know if this was caused by the fact that the server was able to push all the download data before the throttling mechanism was able to engage, but when such downloads are done back-to-back many times (which is, for example, the case of video streaming application downloading media segments), the backend server has essentially the same load as if no speed limits are applied. As I discussed it with Stefan before, the rate limit mechanism should apply some small delay at the end of a throttled transfer to maintain the specified rate limit for the transfer. And even though it will not save the bandwidth as all the data has been already transferred, it will provide proper network speed measurements for the decision making logic (i.e. bitrate selection mechanism in video streaming apps) and will help to decrease server load in back-to-back multi-transfer scenarios. Thanks, Dmitry Karpov -- Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library Etiquette: https://curl.se/mail/etiquette.html
