-
Notifications
You must be signed in to change notification settings - Fork 457
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
pageserver: coalesce read paths #7477
Conversation
d52eb01
to
0edc368
Compare
2766 tests run: 2645 passed, 0 failed, 121 skipped (full report)Code coverage* (full report)
* collected from Rust tests only The comment gets automatically updated with the latest test results
fed8579 at 2024-04-24T15:30:19.671Z :recycle: |
064d1c8
to
1826b13
Compare
ff94f16
to
fed8579
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
I reran test_pageserver_max_throughput_getpage_at_latest_lsn to compare the implementations: Non vectored get - baseline
Vectored get - cold page page cache
Vectored get - hot page cache
|
At this point I think we should merge and try it out in staging. |
Problem
We are currently supporting two read paths. No bueno.
Summary of changes
High level: use vectored read path to serve get page requests - gated by
get_impl
configLow level:
get_impl
to specify which read path to use when serving get page requestswould not mark keys that went past their cached lsn as complete. This is a self standing change which
could be its own PR, but I've included it here because writing separate tests for it is tricky.
Controlled by
validate_vectored_get
ps config.Note
Since the vectored read path does not go through the page cache to read buffers, this change also
amounts to a removal of the buffer page cache. Materialized page cache is still used.
Deployment Plan
Make sure this is correct.
1.1. Run test suite with validation - DONE
1.2. Run a prodlike bench with validation in staging
Understand perf degradation (if any)
2.1. Run checked in benchmarks - DONE here - looks ok, didn't notice significant degradations
2.2. I'll manually run
test_pageserver_max_throughput_getpage_at_latest_lsn
- DONE here - looks better than the current read path2.2. Run prodlike bench without validation in staging
Staged rollout in prod without validation
Related #7381
Checklist before requesting a review
Checklist before merging