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

Enable CPU based throttling in Bigtable client #12959

Closed
6 tasks done
dbolduc opened this issue Oct 23, 2023 · 0 comments · Fixed by #13203
Closed
6 tasks done

Enable CPU based throttling in Bigtable client #12959

dbolduc opened this issue Oct 23, 2023 · 0 comments · Fixed by #13203
Assignees
Labels
api: bigtable Issues related to the Bigtable API. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.

Comments

@dbolduc
Copy link
Member

dbolduc commented Oct 23, 2023

Sometimes batch write jobs want to optimize for CPU utilization, instead of minimizing latency or maximizing throughput.

At the moment, the servers can only communicate errors to us, such as kDeadlineExceeded. There is a way to set some feature flags and have the server return throttling information. They essentially tell us whether we should speed up the current QPS, or whether we should slow down the current QPS.

Phase 1

  • Add RateLimiter
  • Add bigtable-specific wrapper around the RateLimiter. I am calling it the MutateRowsRateLimiter. This thing has an UpdateRate(MutateRowsResponse const& r).
  • Add a struct experimental::BulkApplyThrottlingOption { using Type = bool; };
  • Plumb the MutateRowsRateLimiter through the client layers

Phase 2

  • Tracing for sleeps
  • AsyncBulkApply support
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: bigtable Issues related to the Bigtable API. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant