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

txnkv: introduce ballast object for batch-get worker #1535

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

zyguan
Copy link
Contributor

@zyguan zyguan commented Dec 21, 2024

Batch-get may spawn multiple goroutines to fetch keys. There is notable cost on stack growing.
image

After some analysis, it shows the batch-get worker requires 8KB stack size currently, that is, the stack will grow to 4KB, then 8KB for each worker groutine. To reduce the overhead, we can introduce a ballast object to let the stack grow to 8KB directly at the begining of the goroutine.
image

The benchmark results show that it helps improve performance.

workload threads baseline this PR diff
batchget 15 19450.06 19548.51 0.51%
batchget 30 24507.40 24914.81 1.66%
batchget 60 26797.00 27451.43 2.44%

BTW, I also tried to use the internal goroutine pool of kvstore, but the test result is not good, the overhead of selectgo is significant, and default 128 pool size is not enough to prevent new goroutines.

20241221-121605

@ti-chi-bot ti-chi-bot bot added the dco-signoff: yes Indicates the PR's author has signed the dco. label Dec 21, 2024
Copy link

ti-chi-bot bot commented Dec 21, 2024

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please ask for approval from zyguan, ensuring that each of them provides their approval before proceeding. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ti-chi-bot ti-chi-bot bot added the size/S Denotes a PR that changes 10-29 lines, ignoring generated files. label Dec 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dco-signoff: yes Indicates the PR's author has signed the dco. size/S Denotes a PR that changes 10-29 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant