disagg: limit S3 read amplification on compute nodes (#10771)#10790
Conversation
Signed-off-by: JaySon-Huang <tshent@qq.com>
Signed-off-by: JaySon-Huang <tshent@qq.com>
Signed-off-by: JaySon-Huang <tshent@qq.com>
Signed-off-by: JaySon-Huang <tshent@qq.com>
Signed-off-by: JaySon-Huang <tshent@qq.com>
Signed-off-by: JaySon-Huang <tshent@qq.com>
Signed-off-by: JaySon-Huang <tshent@qq.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (3)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: JaySon-Huang, yudongusa The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
[LGTM Timeline notifier]Timeline:
|
… env vars in next-gen fullstack test
|
cherry-pick the changes from #10791 to make ci pass |
|
/retest |
ac3df18
into
pingcap:release-nextgen-202603
This is an automated cherry-pick of #10771
What problem does this PR solve?
Issue Number: close #10752
Problem Summary:
In disaggregated read workloads, compute nodes can generate uncontrolled S3 traffic when cold reads and repeated cache misses amplify remote reads on the same node. We need a production-safe way to bound S3 traffic, reduce duplicate downloads for the same object, and make the resulting behavior observable and tunable.
What is changed and how it works?
More specifically:
S3ReadLimiterto cap node-level S3 read bytes for both direct reads and FileCache downloadsstorage.io_rate_limit.s3_max_read_bytes_per_secs3_max_get_object_streamsstream-cap design after validation showed that a reader-lifetime stream token can stall disaggregated query progressClientFactoryso all S3 clients on the node observe the same node-level byte budget0now updates the existing limiter instance instead of replacing it, so in-flight readers observe the disable and the related metric is updated consistentlyS3RandomAccessFileuse limiter-aware chunked read/seek paths while sharing common read/seek tail logicFileCachedownloads reuse the same limiter, addprofiles.default.dt_filecache_wait_on_downloading_ms, and let follower requests perform bounded wait on an in-flight same-key download instead of immediately creating more remote-read pressureresult x file_typestage x file_typetoo_many_downloadbyfile_typedocs/design/2026-03-24-disagg-s3-node-level-backpressure-and-filecache-dedup.mdCheck List
Tests
Manual test
Tested with following py script
Side effects
Documentation
New configs tiflash: Add disaggregated arch related configs docs-cn#21455
Release note
Summary by CodeRabbit
New Features
Improvements
Tests
Documentation