Skip to content
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

Introduce bifrost benchpress #1545

Merged
merged 3 commits into from
May 24, 2024
Merged

Introduce bifrost benchpress #1545

merged 3 commits into from
May 24, 2024

Conversation

AhmedSoliman
Copy link
Contributor

@AhmedSoliman AhmedSoliman commented May 22, 2024

Introduce bifrost benchpress

We introduce bifrost benchpress, a binary that's used to run simulation perf tests focused on bifrost loglets performance. Initial code contains tests to reliably measure local loglet's critical-path single log append latency and write-to-read latency with a given configuration.

The benchmark utility is built to give full control over how the benchmark runs, in contrast to criterion which is designed for micro benches.


Stack created with Sapling. Best reviewed with ReviewStack.

Copy link

github-actions bot commented May 22, 2024

Test Results

 99 files  ±0   99 suites  ±0   7m 39s ⏱️ -19s
 83 tests ±0   83 ✅ ±0  0 💤 ±0  0 ❌ ±0 
212 runs  ±0  212 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 4ca804e. ± Comparison against base commit db544d3.

♻️ This comment has been updated with latest results.

@AhmedSoliman AhmedSoliman force-pushed the pr1545 branch 2 times, most recently from fdb7bb8 to 1200e4c Compare May 22, 2024 14:18
@AhmedSoliman AhmedSoliman marked this pull request as ready for review May 22, 2024 14:51
@AhmedSoliman AhmedSoliman force-pushed the pr1545 branch 2 times, most recently from f34d8ee to e263662 Compare May 23, 2024 09:04
Copy link
Contributor

@tillrohrmann tillrohrmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work @AhmedSoliman. The benchpress looks strong to me :-) +1 for merging.

crates/types/src/config/mod.rs Show resolved Hide resolved
tools/bifrost-benchpress/src/main.rs Outdated Show resolved Hide resolved
This PR changes the default configuration of the local loglet to disable time-based batching. Most users's first impressions and general use will expect interactive low-latency experience and we want this to be the default case.
A major performance win is the change in local loglet implementation. Tokio has 1ms timer resolution, so even if batching duration is set to zero, the runtime will still sleep an arbitrary amound between 0 and 1ms to resume the stream. The change switches to chunking ready items by default if time-based batching is zero. This results in 6X lower append path latency in my tests (even with fdatasync running on fast nvme)
We introduce bifrost benchpress, a binary that's used to run simulation perf tests focused on bifrost loglets performance. Initial code contains tests to reliably measure local loglet's critical-path single log append latency and write-to-read latency with a given configuration.

The benchmark utility is built to give full control over how the benchmark runs, in contrast to criterion which is designed for micro benches.
@AhmedSoliman AhmedSoliman merged commit 4ca804e into main May 24, 2024
13 checks passed
@AhmedSoliman AhmedSoliman deleted the pr1545 branch May 24, 2024 18:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants