Conversation
Every regular-file copy on Linux opened the source three times: once in
check_for_data, once in check_sparse_detection, then again in the copy
itself. Open it once and thread the descriptor through the probe and the
copy, so the strategy and the bytes come from the same fd.
before: open("src", O_RDONLY) x3 + open("dst", O_WRONLY|O_CREAT) x1
after: open("src", O_RDONLY) x1 + open("dst", O_WRONLY|O_CREAT) x1
Copying 3000 small files, 50 runs: 199.9ms +/- 14.9 -> 171.7ms +/- 23.6.
The ratio's error bars overlap; the stable signal is system time,
177.3ms -> 146.9ms, with user time unchanged at ~18ms.
Merging this PR will improve performance by 32.93%
Performance Changes
Tip Curious why performance improved? Comment Comparing Footnotes
|
|
Binary size comparison: |
|
GNU testsuite comparison: |
Contributor
Author
|
moved here #14272 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Every regular-file copy on Linux opened the source three times: once in check_for_data, once in check_sparse_detection, then again in the copy itself. Open it once and thread the descriptor through the probe and the copy, so the strategy and the bytes come from the same fd.
before: open("src", O_RDONLY) x3 + open("dst", O_WRONLY|O_CREAT) x1
after: open("src", O_RDONLY) x1 + open("dst", O_WRONLY|O_CREAT) x1
Copying 3000 small files, 50 runs: 199.9ms +/- 14.9 -> 171.7ms +/- 23.6. The ratio's error bars overlap; the stable signal is system time, 177.3ms -> 146.9ms, with user time unchanged at ~18ms.