-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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 control: improve idle CPU usage #66881
Comments
Is this golang/go#27707? |
The main culprit was determined to be the |
Heh. The finger points back at yourself. |
Yeah.. We tested that it has very little observable effect on workloads, but we didn't think that idle usage would be so different. |
#66894 fixed the problem on 21.1. This bug tracks fixing the problem on The new metric in go 1.17 likely will not help because the admission control code relies on frequent updates, and the histograms are likely going to make things even slower. One approach is to use a much reduced update frequency until and unless admission control is actually queueing things. |
Note that this issue is a hard blocker for the Serverless launch. We'd like to launch on a beta version of 21.2 cut during the stabilization period, so we need to address this soon. |
Hi @RaduBerinde, please add branch-* labels to identify which branch(es) this release-blocker affects. 🦉 Hoot! I am a Blathers, a bot for CockroachDB. My owner is otan. |
…rloaded The kvSlotAdjuster keeps track of a history of CPULoad ticks to decide whether sufficient fraction of that history was underloaded or not. If underloaded we disable slot and token enforcement in kvGranter and tokenGranter since the reduced frequency of CPULoad could cause us to not adjust slots fast enough. This information is fed back to goschedstats so that it can adjust the period of the ticker. Fixes cockroachdb#66881 Release justification: Fix for high-priority issue in new functionality. Release note: None
…rloaded The goschestats makes the determination of the tick interval every 1s, and either ticks at 1ms or 250ms. 250ms is used when the cpu is very underloaded. The admission control code disables slot and token enforcement if the tick interval is greater than 1ms. This is done since the reduced frequency of CPULoad could cause us to not adjust slots fast enough. Fixes cockroachdb#66881 Release justification: Fix for high-priority issue in new functionality. Release note: None
…rloaded The goschestats makes the determination of the tick interval every 1s, and either ticks at 1ms or 250ms. 250ms is used when the cpu is very underloaded. The admission control code disables slot and token enforcement if the tick interval is greater than 1ms. This is done since the reduced frequency of CPULoad could cause us to not adjust slots fast enough. Fixes cockroachdb#66881 Release justification: Fix for high-priority issue in new functionality. Release note: None
…rloaded The goschestats makes the determination of the tick interval every 1s, and either ticks at 1ms or 250ms. 250ms is used when the cpu is very underloaded. The admission control code disables slot and token enforcement if the tick interval is greater than 1ms. This is done since the reduced frequency of CPULoad could cause us to not adjust slots fast enough. Fixes cockroachdb#66881 Release justification: Fix for high-priority issue in new functionality. Release note: None
69379: admission,goschedstats: reduce scheduler sampling frequency when unde… r=sumeerbhola a=sumeerbhola …rloaded The kvSlotAdjuster keeps track of a history of CPULoad ticks to decide whether sufficient fraction of that history was underloaded or not. If underloaded we disable slot and token enforcement in kvGranter and tokenGranter since the reduced frequency of CPULoad could cause us to not adjust slots fast enough. This information is fed back to goschedstats so that it can adjust the period of the ticker. Fixes #66881 Release justification: Fix for high-priority issue in new functionality. Release note: None 69438: build: point people to `dev generate bazel` over `make bazel-generate` r=rail a=rickystewart These two methods for generating Bazel files do the exact same thing, but making this change might train people to use `dev` a little bit. Release justification: Non-production code change Release note: None 69494: ccl/serverccl: increase http client timeout in tests r=dhartunian a=dhartunian Tests run under stress would sometimes timeout waiting on HTTP calls to return. This change creates a custom HTTP client with a 15s timeout. The original client has a default 3s timeout. Resolves #68879 Release justification: non-production code change Release note: None Co-authored-by: sumeerbhola <sumeer@cockroachlabs.com> Co-authored-by: Ricky Stewart <ricky@cockroachlabs.com> Co-authored-by: David Hartunian <davidh@cockroachlabs.com>
I have an empty local roachprod cluster running with no data and no load and each cockroach process takes about 8-10% of a CPU core. Others have observed that even with a SQL-only tenant process, we still see 5-8%.
This seems excessive to me. We should look at some profiles and see if there is any low hanging fruit for improving on this.
The text was updated successfully, but these errors were encountered: