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

pageserver: batch get page requests and serve them with one vectored get #9377

Open
2 of 12 tasks
Tracked by #9376
VladLazar opened this issue Oct 14, 2024 · 0 comments · Fixed by #9321 · May be fixed by #9792
Open
2 of 12 tasks
Tracked by #9376

pageserver: batch get page requests and serve them with one vectored get #9377

VladLazar opened this issue Oct 14, 2024 · 0 comments · Fixed by #9321 · May be fixed by #9792
Assignees
Labels
a/performance Area: relates to performance of the system c/storage/pageserver Component: storage: pageserver c/storage Component: storage

Comments

@VladLazar
Copy link
Contributor

VladLazar commented Oct 14, 2024

We don't take advantage of queue depth generated by the compute
on the pageserver. We can process get page requests more efficiently
by batching them.

Hold get page requests for configurable maximum debounce timeout in order
to facilitate merging. Then process the entire batch via one get_vectored timeline operation.
By default, no merging takes place.

Sub-Tasks / Punted

@VladLazar VladLazar added a/performance Area: relates to performance of the system c/storage Component: storage c/storage/pageserver Component: storage: pageserver labels Oct 14, 2024
@VladLazar VladLazar self-assigned this Oct 14, 2024
@problame problame linked a pull request Oct 23, 2024 that will close this issue
@problame problame assigned problame and unassigned VladLazar Nov 17, 2024
@problame problame linked a pull request Nov 18, 2024 that will close this issue
problame added a commit that referenced this issue Nov 18, 2024
## Problem

We don't take advantage of queue depth generated by the compute
on the pageserver. We can process getpage requests more efficiently
by batching them. 

## Summary of changes

Batch up incoming getpage requests that arrive within a configurable
time window (`server_side_batch_timeout`).
Then process the entire batch via one `get_vectored` timeline operation.
By default, no merging takes place.

## Testing

* **Functional**: #9792
* **Performance**: will be done in staging/pre-prod

# Refs

* #9377
* #9376

Co-authored-by: Christian Schwarz <[email protected]>
@problame problame reopened this Nov 18, 2024
@problame problame reopened this Nov 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a/performance Area: relates to performance of the system c/storage/pageserver Component: storage: pageserver c/storage Component: storage
Projects
None yet
2 participants