Buy commercial curl support. We
help you work out your issues, debug your libcurl applications, use the API,
port to new platforms, add new features and more. With a team lead by the
curl founder Daniel himself.
Re: ratelimits revisited
- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]
From: Stefan Eissing via curl-library <curl-library_at_lists.haxx.se>
Date: Thu, 20 Nov 2025 09:01:19 +0100
> Am 20.11.2025 um 02:04 schrieb Dmitry Karpov <dkarpov_at_roku.com>:
>
> 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 <curl-library-bounces_at_lists.haxx.se> On Behalf Of Stefan Eissing via curl-library
> Sent: Wednesday, November 19, 2025 4:26 AM
> To: curl-library_at_lists.haxx.se
> Cc: Stefan Eissing <stefan_at_eissing.org>
> 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
Date: Thu, 20 Nov 2025 09:01:19 +0100
> Am 20.11.2025 um 02:04 schrieb Dmitry Karpov <dkarpov_at_roku.com>:
>
> 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 <curl-library-bounces_at_lists.haxx.se> On Behalf Of Stefan Eissing via curl-library
> Sent: Wednesday, November 19, 2025 4:26 AM
> To: curl-library_at_lists.haxx.se
> Cc: Stefan Eissing <stefan_at_eissing.org>
> 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.htmlReceived on 2025-11-20