On Fri, 1 Dec 2023, Dmitry Karpov via curl-library wrote:
I tried the latest master branch with Daniel's fix, and I still see large deviations (up to 20%) from the speed limit set by CURLOPT_MAX_RECV_SPEED_LARGE. The deviations depend on a network speed and they get bigger when the speed limit gets far from the network speed.
I can't reproduce that. I do this to test: $ curl --limit-rate 5M localhost/100G -o /dev/null Here's my debug patch to verify the math in Curl_pgrsLimitWaitTime: diff --git a/lib/progress.c b/lib/progress.c index e96cbf7af..8473cfc07 100644 --- a/lib/progress.c +++ b/lib/progress.c @@ -298,19 +298,26 @@ timediff_t Curl_pgrsLimitWaitTime(curl_off_t cursize, minimum *= 1000; else minimum = TIMEDIFF_T_MAX; } + fprintf(stderr, "size % " CURL_FORMAT_CURL_OFF_T + " limit: %" CURL_FORMAT_CURL_OFF_T + " min: %ld\n", + size, limit, minimum); + /* * 'actual' is the time in milliseconds it took to actually download the * last 'size' bytes. */ actual = Curl_timediff_ceil(now, start); if(actual < minimum) { /* if it downloaded the data faster than the limit, make it wait the difference */ - return (minimum - actual); + timediff_t delta = (minimum - actual); + fprintf(stderr, "took %ldms wait %ldms more\n", actual, delta); + return delta; } return 0; } -- / daniel.haxx.se | Commercial curl support up to 24x7 is available! | Private help, bug fixes, support, ports, new features | https://curl.se/support.html -- Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library Etiquette: https://curl.se/mail/etiquette.html