> 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