-
Notifications
You must be signed in to change notification settings - Fork 476
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 index uploads when possible #10248
Conversation
7304 tests run: 6933 passed, 0 failed, 371 skipped (full report)Code coverage* (full report)
* collected from Rust tests only The comment gets automatically updated with the latest test results
17120eb at 2025-01-14T20:29:17.955Z :recycle: |
91be562
to
dad6139
Compare
06f1d7a
to
76698d5
Compare
e207145
to
419019e
Compare
76698d5
to
9d54d23
Compare
419019e
to
e91e7e4
Compare
9d54d23
to
1568f90
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.
Coalesced indices are always in the same generation, so this feels pretty safe.
Coalescing won't kick in until the flush loop stops inserting barriers though, right?
That's right. |
Seems worth making that explicit, I'll add a condition. |
1568f90
to
69b35de
Compare
Can't check this, since |
69b35de
to
a584c4a
Compare
a584c4a
to
17120eb
Compare
Problem
With upload queue reordering in #10218, we can easily get into a situation where multiple index uploads are queued back to back, which can't be parallelized. This will happen e.g. when multiple layer flushes enqueue layer/index/layer/index/... and the layers skip the queue and are uploaded in parallel.
These index uploads will incur serial S3 roundtrip latencies, and may block later operations.
Touches #10096.
Summary of changes
When multiple back-to-back index uploads are ready to upload, only upload the most recent index and drop the rest.