[XrdTpc] Only use Curl's low-speed-limit with libcurl v7.38 and later #941
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Curl's detection of low-speed transfers creates a flood of timeout calls which significantly slows large transfers and increases CPU usage. This is fixed in curl/curl@cacdc27f52 which is unfortunately not present on EL7.
This PR checks the curl version and only enables the low-speed detection when libcurl is new enough to have the fix.
Trying this patch on a production EL7 xrootd server which handles TPC requests, there was a significant drop in xrootd CPU usage: from ~100% busy, down to ~5%.
To see if the system is likely being affected, look for the function
Curl_speedcheck
appearing frequently in the gstack output forxrootd
.