rgw/dedup: add throttling mechanism#64730
Conversation
9748ec7 to
67cbe59
Compare
67cbe59 to
9fd7353
Compare
|
jenkins test make check |
1 similar comment
|
jenkins test make check |
9fd7353 to
7963164
Compare
|
jenkins test make check |
|
jenkins test make check arm64 |
|
jenkins test api |
|
jenkins test make check arm64 |
|
jenkins test make check |
1 similar comment
|
jenkins test make check |
|
jenkins test make check |
1 similar comment
|
jenkins test make check |
7963164 to
f41b08d
Compare
|
Rebased the code to fix the GC issue. |
|
53 tests passed and 11 failed: 3 failures were caused by failing to load linux code: 5 more errors reported by valgrind on Objector (which is not affected by the PR) 2 errors for rgw multisite on multi-object delete, but dedup code was inactive so should not be related 1 error coming from test_delete_objects_version_if_match_size() failing to delete objects by version. restarted the failing test: https://pulpito.ceph.com/benhanokh-2025-09-07_09:40:40-rgw-wip_dedup_throttle_V1-distro-default-smithi/ |
|
Rerun solved the load-linux issues (including in rgw-dedup test) and the multi-site issue. |
all failures are known issue |
doc/radosgw/s3_objects_dedup.rst
Outdated
| Aborts an active dedup session and release all resources used by it. | ||
| - ``radosgw-admin dedup estimate``: | ||
| Starts a new dedup estimate session (aborting first existing session if exists). | ||
| - ``radosgw-admin dedup throttle --max-bucket-index_ops=<count>``: |
There was a problem hiding this comment.
| - ``radosgw-admin dedup throttle --max-bucket-index_ops=<count>``: | |
| - ``radosgw-admin dedup throttle --max-bucket-index-ops=<count>``: |
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
c2c3db1 to
98202a7
Compare
lots of s3test failures because we've merged new test cases since then. can you please rebase/rerun? |
98202a7 to
086d5d4
Compare
|
jenkins test make check arm64 |
1 similar comment
|
jenkins test make check arm64 |
086d5d4 to
16ad586
Compare
|
jenkins test make check arm64 |
2 similar comments
|
jenkins test make check arm64 |
|
jenkins test make check arm64 |
There was a problem hiding this comment.
Pull Request Overview
This PR adds a throttling mechanism to the RGW deduplication system to control the rate of operations during dedup execution. The throttling system allows administrators to limit bucket-index operations and metadata access operations per second to manage resource consumption.
- Add new throttling classes and commands to control dedup operation rates
- Implement throttling for bucket-index and metadata operations with configurable limits
- Update command interface from
dedup restarttodedup execwith backward compatibility
Reviewed Changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/test/rgw/dedup/test_dedup.py | Updates test commands and adds throttling configuration with variable naming corrections |
| src/test/cli/radosgw-admin/help.t | Updates help text to reflect new dedup exec command and throttle options |
| src/rgw/radosgw-admin/radosgw-admin.cc | Adds throttle command parsing and implements new dedup exec command interface |
| src/rgw/driver/rados/rgw_dedup_utils.h | Defines Throttle class and throttling-related data structures |
| src/rgw/driver/rados/rgw_dedup_utils.cc | Implements throttling logic and message encoding/decoding |
| src/rgw/driver/rados/rgw_dedup_store.cc | Adds failure tracking for slab write operations |
| src/rgw/driver/rados/rgw_dedup_cluster.h | Adds new function signature for throttle control with buffer list |
| src/rgw/driver/rados/rgw_dedup_cluster.cc | Implements throttle control logic and reporting functionality |
| src/rgw/driver/rados/rgw_dedup.h | Integrates throttle objects into control structure |
| src/rgw/driver/rados/rgw_dedup.cc | Applies throttling to metadata and bucket index operations throughout dedup process |
| doc/radosgw/s3_objects_dedup.rst | Documents new throttling commands and updated dedup exec interface |
Comments suppressed due to low confidence (1)
src/rgw/driver/rados/rgw_dedup_utils.cc:1
- Corrected spelling of 'disbaled' to 'disabled'.
// -*- mode:C++; tab-width:8; c-basic-offset:2;
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| } | ||
| //ldpp_dout(dpp, 0) << __func__ << "::sleep for 2 seconds\n" << dendl; | ||
| //std::this_thread::sleep_for(std::chrono::seconds(2)); | ||
| //std::this_thread::sleep_forstd::chrono::microseconds(usec_timeout); |
There was a problem hiding this comment.
There's a missing space in the commented code. Should be 'sleep_for std::chrono::microseconds'.
| //std::this_thread::sleep_forstd::chrono::microseconds(usec_timeout); | |
| //std::this_thread::sleep_for(std::chrono::microseconds(usec_timeout)); |
|
jenkins test make check arm64 |
|
pr testing completed and approved by @ivancich. Please find the details : https://tracker.ceph.com/issues/73370 |
Signed-off-by: Gabriel BenHanokh <gbenhano@redhat.com> rgw/dedup: Change throttle code to work lock free and remove the atomic from the timestamp Signed-off-by: Gabriel BenHanokh <gbenhano@redhat.com>
16ad586 to
58461e0
Compare
|
jenkins test make check arm64 |
|
8553077, 8553079: 8553067, 8553087, 8553092, 8553096,8553106, 8553116, 8553118, 8553120, 8553122 8553082, 8553094, 8553066, |
|
I don't see how can this PR cause any issue as it doesn't affect RGW code and dedup is only activated from command line |
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an
xbetween the brackets:[x]. Spaces and capitalization matter when checking off items this way.Checklist
Show available Jenkins commands
jenkins test classic perfJenkins Job | Jenkins Job Definitionjenkins test crimson perfJenkins Job | Jenkins Job Definitionjenkins test signedJenkins Job | Jenkins Job Definitionjenkins test make checkJenkins Job | Jenkins Job Definitionjenkins test make check arm64Jenkins Job | Jenkins Job Definitionjenkins test submodulesJenkins Job | Jenkins Job Definitionjenkins test dashboardJenkins Job | Jenkins Job Definitionjenkins test dashboard cephadmJenkins Job | Jenkins Job Definitionjenkins test apiJenkins Job | Jenkins Job Definitionjenkins test docsReadTheDocs | Github Workflow Definitionjenkins test ceph-volume allJenkins Jobs | Jenkins Jobs Definitionjenkins test windowsJenkins Job | Jenkins Job Definitionjenkins test rook e2eJenkins Job | Jenkins Job Definition