-
Notifications
You must be signed in to change notification settings - Fork 3.9k
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
admission, storage: prototype AC limiter for concurrent compactions #136615
Labels
A-storage
Relating to our storage engine (Pebble) on-disk storage.
C-enhancement
Solution expected to add code/behavior + preserve backward-compat (pg compat issues are exception)
T-storage
Storage Team
Comments
sumeerbhola
added a commit
to sumeerbhola/cockroach
that referenced
this issue
Feb 14, 2025
The granter is initially for Pebble compactions and snapshot ingests and is aware of node CPU and per-store disk bandwidth consumption. It monitors the CPU and write bandwidth of this work (read bandwidth is not explicitly modeled, but the observation of aggregate read bandwidth can correct for this oversight). The granter is integrated with MultiQueue (for snapshot ingest) such that the semaphore is generalized. It is also integrated with Pebble. cockroachdb#136615 (comment) has some experimental results. The granter can also run in a non-resource driven mode, in which case it would simply apply fixed limits on the number of compactions (or snapshot) per store and per node. There is currently no rate limiting of long-lived work, once admitted. Such rate limiting may be necessary for production deployments. Informs cockroachdb#136615 Epic: none Release note: None
Prototype is done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
A-storage
Relating to our storage engine (Pebble) on-disk storage.
C-enhancement
Solution expected to add code/behavior + preserve backward-compat (pg compat issues are exception)
T-storage
Storage Team
Prototype a
slot-basedadmission control granter/requester well as an interface and integration point with Pebble to be able to limit concurrent compactions (and in the future, being able to pace compactions).This granter will take into account CPU and IO resources used by a compaction, and Pebble will call into the interface to update the granter with the amount of IO taken up by a compaction. A
linearmodel can be used for calculating IO tokens to deduct from compaction bytes read/written. Flushes as well as the first compaction in a store could be chosen to always run without permission.Informs cockroachdb/pebble#1329 as well as #74697.
Jira issue: CRDB-45164
The text was updated successfully, but these errors were encountered: