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

asim: support load based range splitting #82630

Closed
kvoli opened this issue Jun 8, 2022 · 0 comments · Fixed by #84306
Closed

asim: support load based range splitting #82630

kvoli opened this issue Jun 8, 2022 · 0 comments · Fixed by #84306
Assignees
Labels
A-kv Anything in KV that doesn't belong in a more specific category. A-kv-simulation Relating to allocation simulation. C-enhancement Solution expected to add code/behavior + preserve backward-compat (pg compat issues are exception) sync-me-7 sync-me-8 T-kv KV Team

Comments

@kvoli
Copy link
Collaborator

kvoli commented Jun 8, 2022

The asim package does not currently support load based splitting of ranges [code].

Load based splitting is a key component of the distribution algorithm, so it is important to include when simulating the algorithm.

The solution is to add a load based splitting component to the asim package. Namely, tracking the requests per range and selecting a split key when requests exceeds a configurable threshold. Note here that this is not QPS, rather requests [code].

This should be applied to state using the existing SplitRange method, in the state package.

Jira issue: CRDB-16616

Epic CRDB-14561

@kvoli kvoli added C-enhancement Solution expected to add code/behavior + preserve backward-compat (pg compat issues are exception) A-kv Anything in KV that doesn't belong in a more specific category. labels Jun 8, 2022
@blathers-crl blathers-crl bot added the T-kv KV Team label Jun 8, 2022
@kvoli kvoli mentioned this issue Jun 8, 2022
16 tasks
@kvoli kvoli added the A-kv-simulation Relating to allocation simulation. label Jun 9, 2022
@kvoli kvoli changed the title asim: support load based splitting asim: support load based range splitting Jun 9, 2022
kvoli added a commit to kvoli/cockroach that referenced this issue Jul 13, 2022
This patch adds load based splitting to the allocation simulator. It
uses the production code path, `pkg/kv/kvserver/split`, to decide when
and which key to split on. To enable split recommendations from this
package, load events are recorded to the splitter and split suggestions
enqueued into the simulator split queue. Split keys are likewise found
via consulting the split decider first and when not found, the split
queue wil instead split evenly (50/50) on the number of keys instead.

resolves cockroachdb#82630

Release note: None
kvoli added a commit to kvoli/cockroach that referenced this issue Jul 14, 2022
This patch adds load based splitting to the allocation simulator. It
uses the production code path, `pkg/kv/kvserver/split`, to decide when
and which key to split on. To enable split recommendations from this
package, load events are recorded to the splitter and split suggestions
enqueued into the simulator split queue. Split keys are likewise found
via consulting the split decider first and when not found, the split
queue wil instead split evenly (50/50) on the number of keys instead.

resolves cockroachdb#82630

Release note: None
craig bot pushed a commit that referenced this issue Jul 18, 2022
84306: asim: add load splits r=kvoli a=kvoli

This patch adds load based splitting to the allocation simulator. It
uses the production code path, `pkg/kv/kvserver/split`, to decide when
and which key to split on. To enable split recommendations from this
package, load events are recorded to the splitter and split suggestions
enqueued into the simulator split queue. Split keys are likewise found
via consulting the split decider first and when not found, the split
queue wil instead split evenly (50/50) on the number of keys instead.

resolves #82630

Release note: None

84451: dev,genbzl: add support for generating syntax diagrams r=ajwerner a=ajwerner

Fixes #84443.

Release note: None

84571: changefeedccl: prerequisite changes for `DROP COLUMN` r=ajwerner a=ajwerner

This is the first two commits from #84563. They are needed to ensure that we don't change the behavior of `DROP COLUMN` when we support it in the declarative schema changer. The issue is that there the protocol is to create a new primary index and swap to it. The column becomes a non-public before the index swap, so the primary index swap is no longer a logical schema change of any kind. With this change, we can now detect that and properly restart as opposed to stop.

Also, the newly added testing uncovers some badness in how we classify some other schema changes, and should generally be useful.

Co-authored-by: Austen McClernon <austen@cockroachlabs.com>
Co-authored-by: Andrew Werner <awerner32@gmail.com>
@craig craig bot closed this as completed in 163713a Jul 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-kv Anything in KV that doesn't belong in a more specific category. A-kv-simulation Relating to allocation simulation. C-enhancement Solution expected to add code/behavior + preserve backward-compat (pg compat issues are exception) sync-me-7 sync-me-8 T-kv KV Team
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants