-
-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ioq benchmarking and performance improvements #149
Merged
Merged
Conversation
This file contains 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
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #149 +/- ##
==========================================
- Coverage 74.60% 74.34% -0.27%
==========================================
Files 89 90 +1
Lines 10523 10661 +138
Branches 2035 2066 +31
==========================================
+ Hits 7851 7926 +75
- Misses 1801 1852 +51
- Partials 871 883 +12 ☔ View full report in Codecov by Sentry. |
tavianator
force-pushed
the
ioq-nop
branch
2 times, most recently
from
December 3, 2024 19:30
d591c08
to
95313df
Compare
Also, cache-align struct ioq_ent to avoid false sharing when two workers are handling neighbouring requests.
This helps avoid situations where multiple waiters block on different slots using the same monitor, which happened more often than expected due to correlations caused by batching.
The new ioq_submit() function is now necessary to call to ensure the pending request batch is flushed.
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.
Benchmark results
Complete traversal
linux v6.5 (86,380 files)
bfs-ioq-nop bench/corpus/linux -false
bfs-main bench/corpus/linux -false
rust 1.72.1 (192,714 files)
bfs-ioq-nop bench/corpus/rust -false
bfs-main bench/corpus/rust -false
chromium 119.0.6036.2 (2,119,292 files)
bfs-ioq-nop bench/corpus/chromium -false
bfs-main bench/corpus/chromium -false
Early termination
chromium 119.0.6036.2 (depth 24)
Depth 2
bfs-ioq-nop bench/corpus/chromium -name $(shuf -n1 $FILES) -print -quit
bfs-main bench/corpus/chromium -name $(shuf -n1 $FILES) -print -quit
Depth 4
bfs-ioq-nop bench/corpus/chromium -name $(shuf -n1 $FILES) -print -quit
bfs-main bench/corpus/chromium -name $(shuf -n1 $FILES) -print -quit
Depth 8
bfs-ioq-nop bench/corpus/chromium -name $(shuf -n1 $FILES) -print -quit
bfs-main bench/corpus/chromium -name $(shuf -n1 $FILES) -print -quit
Depth 16
bfs-ioq-nop bench/corpus/chromium -name $(shuf -n1 $FILES) -print -quit
bfs-main bench/corpus/chromium -name $(shuf -n1 $FILES) -print -quit
Traversal with stat()
rust 1.72.1 (192,714 files)
bfs-ioq-nop bench/corpus/rust -size 1024G
bfs-main bench/corpus/rust -size 1024G
Printing paths
Without colors
linux v6.5
bfs-ioq-nop bench/corpus/linux
bfs-main bench/corpus/linux
With colors
linux v6.5
bfs-ioq-nop bench/corpus/linux -color
bfs-main bench/corpus/linux -color
Search strategies
rust 1.72.1
-S bfs
bfs-ioq-nop -S bfs bench/corpus/rust -false
bfs-main -S bfs bench/corpus/rust -false
-S dfs
bfs-ioq-nop -S dfs bench/corpus/rust -false
bfs-main -S dfs bench/corpus/rust -false
-S ids
bfs-ioq-nop -S ids bench/corpus/rust -false
bfs-main -S ids bench/corpus/rust -false
-S eds
bfs-ioq-nop -S eds bench/corpus/rust -false
bfs-main -S eds bench/corpus/rust -false
Parallelism
rust 1.72.1
-j1
bfs-ioq-nop -j1 bench/corpus/rust -false
bfs-main -j1 bench/corpus/rust -false
-j2
bfs-ioq-nop -j2 bench/corpus/rust -false
bfs-main -j2 bench/corpus/rust -false
-j3
bfs-ioq-nop -j3 bench/corpus/rust -false
bfs-main -j3 bench/corpus/rust -false
-j4
bfs-ioq-nop -j4 bench/corpus/rust -false
bfs-main -j4 bench/corpus/rust -false
-j6
bfs-ioq-nop -j6 bench/corpus/rust -false
bfs-main -j6 bench/corpus/rust -false
-j8
bfs-ioq-nop -j8 bench/corpus/rust -false
bfs-main -j8 bench/corpus/rust -false
-j12
bfs-ioq-nop -j12 bench/corpus/rust -false
bfs-main -j12 bench/corpus/rust -false
-j16
bfs-ioq-nop -j16 bench/corpus/rust -false
bfs-main -j16 bench/corpus/rust -false
Process spawning
linux v6.5
One file per process
bfs-ioq-nop bench/corpus/linux -maxdepth 2 -exec true -- {} \;
bfs-main bench/corpus/linux -maxdepth 2 -exec true -- {} \;
Many files per process
bfs-ioq-nop bench/corpus/linux -exec true -- {} +
bfs-main bench/corpus/linux -exec true -- {} +
Spawn in parent directory
bfs-ioq-nop bench/corpus/linux -maxdepth 3 -execdir true -- {} +
bfs-main bench/corpus/linux -maxdepth 3 -execdir true -- {} +
Details
Versions