Re: ratelimits revisited
Stefan Eissing via curl-library <[email protected]> Thu, 20 Nov 2025 09:01:19 +0100
| Newsgroups | gmane.comp.web.curl.library |
|---|---|
| Message-ID | <[email protected]> |
> Am 20.11.2025 um 02:04 schrieb Dmitry Karpov <[email protected]>: > > Hi Stefan, > > Thanks a lot for your effort to make rate limiting better! > I tried your PR on my speed throttling tests, and unfortunately it doesn't work well on different network speeds and speed limits. Thanks for testing this. 2 questions 1. How/with what do you takes the measurements? 2. It looks as if you transfer a file with 1 MB size. This I would expect to show fluctuations as the TCP window is not under full control by curl. What do you see with larger downloads? - Stefan > > Here are the stats from my tests (HTTP1): > > Speed limit test [LAN (~700 mbps)], iterations=10 > > Url=http://192.168.1.218/Data/file_1M.bin, max_speed=8000000 bps > time=1019 ms, dnld=1048576 B, speed=8230254 bps, spd_diff=230254 bps, pct=2.9 % > time=1029 ms, dnld=1048576 B, speed=8144532 bps, spd_diff=144532 bps, pct=1.8 % > ... > time=1017 ms, dnld=1048576 B, speed=8246162 bps, spd_diff=246162 bps, pct=3.1 % > time=1029 ms, dnld=1048576 B, speed=8148398 bps, spd_diff=148398 bps, pct=1.9 % > time=1033 ms, dnld=1048576 B, speed=8119992 bps, spd_diff=119992 bps, pct=1.5 % > -------------------------------------------------------------------- > avg_deviation=2.2 %, max_deviation=3.1 % > > Url=http://192.168.1.218/Data/file_1M.bin, max_speed=16000000 bps > time=63 ms, dnld=1048576 B, speed=132741430 bps, spd_diff=116741430 bps, pct=729.6 % > time=63 ms, dnld=1048576 B, speed=132284678 bps, spd_diff=116284678 bps, pct=726.8 % > time=20 ms, dnld=1048576 B, speed=408757735 bps, spd_diff=392757735 bps, pct=2454.7 % > time=45 ms, dnld=1048576 B, speed=186236793 bps, spd_diff=170236793 bps, pct=1064.0 % > time=54 ms, dnld=1048576 B, speed=154633279 bps, spd_diff=138633279 bps, pct=866.5 % > time=17 ms, dnld=1048576 B, speed=482284071 bps, spd_diff=466284071 bps, pct=2914.3 % > time=18 ms, dnld=1048576 B, speed=461120284 bps, spd_diff=445120284 bps, pct=2782.0 % > time=18 ms, dnld=1048576 B, speed=450918004 bps, spd_diff=434918004 bps, pct=2718.2 % > time=19 ms, dnld=1048576 B, speed=426558187 bps, spd_diff=410558187 bps, pct=2566.0 % > time=16 ms, dnld=1048576 B, speed=497665980 bps, spd_diff=481665980 bps, pct=3010.4 % > -------------------------------------------------------------------- > avg_deviation=1983.3 %, max_deviation=3010.4 % > > > Speed limit test [50 mbps], iterations=10 > > Url=http://192.168.1.218/Data/file_1M.bin, max_speed=8000000 bps > time=1025 ms, dnld=1048576 B, speed=8179852 bps, spd_diff=179852 bps, pct=2.2 % > time=1018 ms, dnld=1048576 B, speed=8236288 bps, spd_diff=236288 bps, pct=3.0 % > ... > time=1018 ms, dnld=1048576 B, speed=8234946 bps, spd_diff=234946 bps, pct=2.9 % > time=1033 ms, dnld=1048576 B, speed=8113928 bps, spd_diff=113928 bps, pct=1.4 % > time=1010 ms, dnld=1048576 B, speed=8300803 bps, spd_diff=300803 bps, pct=3.8 % > -------------------------------------------------------------------- > avg_deviation=2.6 %, max_deviation=3.8 % > > Url=http://192.168.1.218/Data/file_1M.bin, max_speed=16000000 bps > time=191 ms, dnld=1048576 B, speed=43763514 bps, spd_diff=27763514 bps, pct=173.5 % > time=174 ms, dnld=1048576 B, speed=48007792 bps, spd_diff=32007792 bps, pct=200.0 % > ... > time=191 ms, dnld=1048576 B, speed=43896683 bps, spd_diff=27896683 bps, pct=174.4 % > time=188 ms, dnld=1048576 B, speed=44474412 bps, spd_diff=28474412 bps, pct=178.0 % > -------------------------------------------------------------------- > avg_deviation=180.4 %, max_deviation=200.0 % > > > Speed limit test [20 mbps], iterations=10 > > Url=http://192.168.1.218/Data/file_1M.bin, max_speed=8000000 bps > time=1018 ms, dnld=1048576 B, speed=8234509 bps, spd_diff=234509 bps, pct=2.9 % > time=1030 ms, dnld=1048576 B, speed=8144106 bps, spd_diff=144106 bps, pct=1.8 % > ... > time=1019 ms, dnld=1048576 B, speed=8226810 bps, spd_diff=226810 bps, pct=2.8 % > time=1021 ms, dnld=1048576 B, speed=8209510 bps, spd_diff=209510 bps, pct=2.6 % > time=1029 ms, dnld=1048576 B, speed=8146626 bps, spd_diff=146626 bps, pct=1.8 % > -------------------------------------------------------------------- > avg_deviation=2.1 %, max_deviation=2.9 % > > Url=http://192.168.1.218/Data/file_1M.bin, max_speed=16000000 bps > time=455 ms, dnld=1048576 B, speed=18427202 bps, spd_diff=2427202 bps, pct=15.2 % > time=449 ms, dnld=1048576 B, speed=18665799 bps, spd_diff=2665799 bps, pct=16.7 % > ... > time=455 ms, dnld=1048576 B, speed=18429862 bps, spd_diff=2429862 bps, pct=15.2 % > time=471 ms, dnld=1048576 B, speed=17795616 bps, spd_diff=1795616 bps, pct=11.2 % > -------------------------------------------------------------------- > avg_deviation=16.3 %, max_deviation=20.6 % > > By some reason, the rate limiting worked fine for 8 kbps limit, but was totally off for 16 kbps. > > Thanks, > Dmitry Karpov > > > > -----Original Message----- > From: curl-library <[email protected]> On Behalf Of Stefan Eissing via curl-library > Sent: Wednesday, November 19, 2025 4:26 AM > To: [email protected] > Cc: Stefan Eissing <[email protected]> > Subject: [EXTERNAL] ratelimits revisited > > Some people recently expressed interest in a more precise implementation of --limit-rate and I had a stab at it the other day. Please see: > > https://github.com/curl/curl/pull/19384 > > - increased precision on all HTTP protocols > - improved stream window handling on HTTP/2 transfers > - implementation of rate limiting in HTTP/3 transfers with ngtcp2 > > The increased precision should not come at extra cpu costs. If you would take that out for a spin in your environment, I'd be happy to get some feedback on this change. > > Kind Regards, > Stefan > -- > Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library > Etiquette: https://curl.se/mail/etiquette.html -- Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library Etiquette: https://curl.se/mail/etiquette.html