Skip to content

[improvement](be) Add CPU-aware S3 rate limiter - #65420

Merged
liaoxin01 merged 26 commits into
apache:masterfrom
0AyanamiRei:feature/cpu-aware-s3-limiter
Jul 31, 2026
Merged

[improvement](be) Add CPU-aware S3 rate limiter#65420
liaoxin01 merged 26 commits into
apache:masterfrom
0AyanamiRei:feature/cpu-aware-s3-limiter

Conversation

@0AyanamiRei

@0AyanamiRei 0AyanamiRei commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary:

The original implementation has been replaced with the unified object-storage rate-limiting design accepted after review:

  • A process-wide S3RateLimiterManager owns the GET/PUT QPS and bandwidth buckets independently from S3ClientFactory.
  • Effective per-BE limits are derived from CPU cores. s3_rate_limiter_cpu_cores can explicitly override the value; otherwise Doris combines hardware concurrency with the current cgroup CPU quota. A daemon refreshes the effective limits every 10 seconds so serverless CPU resizing and mutable config changes take effect.
  • RateLimitedObjStorageClient applies admission once per logical top-level operation. Paginated list requests and recursive deletes are therefore charged once instead of once per provider request. GET/PUT mapping is centralized and rejected requests return HTTP 429.
  • Bandwidth limiting reserves at most one second of quota for an IO and refunds unused bytes after a successful short read.
  • Non-cloud deployments wrap all object-storage clients. Cloud deployments wrap only internal-bucket clients.
  • Existing absolute token settings remain the fallback when the new per-core QPS setting is -1; per-core limits support explicit disable and optional maximum caps.

Implementation is based on and adapted from liaoxin01/doris@22f494a3.

Tests add deterministic coverage for config precedence, CPU-aware refresh, limiter state preservation, byte reservation/refund, logical pagination, recursive delete and Azure operation mapping, presigned URL bypass, factory wrapping policy, and full-key client-cache behavior.

Release note

Add CPU-aware GET/PUT QPS and bandwidth rate limiting for BE object-storage requests.

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason
  • Behavior changed:

    • No.
    • Yes. CPU-aware QPS and bandwidth limiting are applied at the logical object-storage operation boundary.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

@hello-stephen

Copy link
Copy Markdown
Contributor

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@0AyanamiRei 0AyanamiRei changed the title [feature](be) Add CPU-aware S3 rate limiter [improvement](be) Add CPU-aware S3 rate limiter Jul 9, 2026
@0AyanamiRei
0AyanamiRei force-pushed the feature/cpu-aware-s3-limiter branch from 5287ce9 to a4effbe Compare July 9, 2026 11:24
@sollhui

sollhui commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

/review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Found one blocking issue in the S3 bandwidth limiter propagation.

Critical checkpoint conclusions:

  • Goal/test coverage: The PR adds CPU-aware S3 request and byte limiters and BE unit tests for config calculation and dynamic rebuild. It does not fully apply the new byte limiter to every object-storage path that already shares the S3 rate-limiter contract.
  • Scope/focus: The core PR scope is focused on S3 limiter config, S3 client enforcement, and tests.
  • Concurrency/lifecycle: Limiter reset keeps the existing holder locking and atomic update guards; I did not find a separate concurrency issue in the authoritative PR file set.
  • Config/compatibility: The new mutable BE configs are dynamically observed through the existing checker, but the shared Azure path is left incompatible with the new bandwidth limiter behavior.
  • Parallel paths: Native S3 charges bytes for PUT/UploadPart/GetObject; Azure still charges only request count through the same shared limiter gate.
  • Tests/CI: The added unit tests cover S3 effective config and rebuild behavior, but not the Azure parallel path. I could not run BE UTs in this runner because the checkout lacks thirdparty/installed and protoc. git diff --check was clean for the GitHub PR files; check-format.sh could not run because clang-format 16 is unavailable.

User focus: no additional user-provided review focus was supplied.

Comment thread be/src/io/fs/s3_obj_storage_client.cpp Outdated
0AyanamiRei added a commit to 0AyanamiRei/doris that referenced this pull request Jul 10, 2026
### What problem does this PR solve?

Issue Number: N/A

Related PR: apache#65420

Problem Summary: The CPU-aware S3 bandwidth limiter was applied only to the native S3 client. Azure shared the request limiter but did not charge bytes for uploads or downloads, so enabling the limiter produced inconsistent behavior. Centralize request and byte limiter acquisition and pass payload sizes from Azure put, multipart upload, and get operations.

### Release note

Apply object-storage bandwidth limits consistently to native S3 and Azure Blob Storage.

### Check List (For Author)

- Test: Unit Test
    - `S3UTILTest.*`
- Behavior changed: Yes. Azure Blob Storage data transfers now consume the shared byte-rate limiter when S3 rate limiting is enabled.
- Does this need documentation: No
@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

@sollhui

sollhui commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

/review

@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 77.39% (1896/2450)
Line Coverage 64.44% (34064/52862)
Region Coverage 64.87% (17536/27032)
Branch Coverage 54.08% (9404/17390)

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review completed for PR #65420.

I did not find a new blocking issue to submit as an inline comment. The earlier Azure byte-accounting gap is already covered by the existing inline thread discussion_r3557395816, and the current head now routes Azure put_object, upload_part, and get_object payload sizes through the shared acquire_s3_rate_limit path.

Critical checkpoint conclusions:

  • Goal/test proof: the PR adds CPU-aware S3 request limits plus byte-rate limiting and centralizes effective limiter calculation. The added BE unit tests cover absolute/per-core/cap/dynamic-reset cases; I could not complete a local BE UT run in this checkout.
  • Scope: the BE changes are focused around S3/Azure object-storage limiter config, helper propagation, and tests.
  • Concurrency/lifecycle: limiter reset continues to use TokenBucketRateLimiterHolder locks; startup use of CpuInfo::num_cores() is after BE CpuInfo::init(), and the BE test harness also initializes CpuInfo.
  • Config/dynamic behavior: new mutable configs have non-negative validators, and check_s3_rate_limiter_config_changed() observes request and byte limiter changes.
  • Compatibility/parallel paths: native S3 and Azure transfer paths now both use the shared request+byte limiter helper. Cloud recycler has its own config surface and was not changed by this BE-scoped PR.
  • Tests/style: git diff --check is clean. I attempted ./run-be-ut.sh --run --filter='S3UTILTest.*', but interrupted it while it was still bootstrapping dependencies/submodules before reaching test execution.
  • User focus: no additional user-provided focus points.

Subagent conclusions:

  • optimizer-rewrite: no optimizer/Nereids surface and no indirect semantic issue found.
  • tests-session-config: no new tests/config/CI candidate found; existing Azure byte-accounting concern is duplicate-covered and fixed in head.
  • Convergence round 1 ended with both live subagents replying NO_NEW_VALUABLE_FINDINGS for the same final ledger/comment set.

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 29332 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 3a87925f6a625fd828c100113a1d320b1f3f8102, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17576	4019	3980	3980
q2	1993	321	203	203
q3	10286	1412	813	813
q4	4722	464	339	339
q5	7739	866	559	559
q6	261	170	135	135
q7	784	839	615	615
q8	10719	1620	1522	1522
q9	6022	4393	4404	4393
q10	6798	1817	1520	1520
q11	506	351	314	314
q12	696	543	421	421
q13	18109	3408	2759	2759
q14	264	264	244	244
q15	q16	781	776	713	713
q17	961	961	945	945
q18	6939	5829	5539	5539
q19	1190	1279	1031	1031
q20	756	664	538	538
q21	5658	2631	2457	2457
q22	414	362	292	292
Total cold run time: 103174 ms
Total hot run time: 29332 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4315	4263	4222	4222
q2	287	310	230	230
q3	4571	4915	4389	4389
q4	2052	2099	1371	1371
q5	4389	4263	4334	4263
q6	221	173	127	127
q7	1730	2118	1667	1667
q8	2396	2165	2056	2056
q9	7856	7747	7755	7747
q10	4719	4696	4260	4260
q11	548	411	380	380
q12	729	832	540	540
q13	3481	3547	3030	3030
q14	315	300	278	278
q15	q16	706	734	654	654
q17	1336	1310	1308	1308
q18	7992	7435	6863	6863
q19	1085	1044	1109	1044
q20	2202	2198	1932	1932
q21	5156	4512	4729	4512
q22	526	463	400	400
Total cold run time: 56612 ms
Total hot run time: 51273 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 180020 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 3a87925f6a625fd828c100113a1d320b1f3f8102, data reload: false

query5	4318	681	496	496
query6	463	229	186	186
query7	4898	592	347	347
query8	334	191	173	173
query9	8767	4106	4108	4106
query10	469	342	322	322
query11	5857	2333	2150	2150
query12	162	115	107	107
query13	1249	623	441	441
query14	6283	5322	4970	4970
query14_1	4314	4306	4325	4306
query15	217	203	184	184
query16	1077	466	444	444
query17	1147	749	595	595
query18	2579	476	360	360
query19	205	189	155	155
query20	110	108	122	108
query21	236	159	134	134
query22	13680	13599	13361	13361
query23	17397	16587	16084	16084
query23_1	16318	16249	16285	16249
query24	7587	1715	1304	1304
query24_1	1321	1289	1284	1284
query25	548	439	367	367
query26	1325	371	205	205
query27	2631	556	370	370
query28	4408	2030	2004	2004
query29	1045	627	481	481
query30	336	253	217	217
query31	1111	1086	982	982
query32	101	60	60	60
query33	507	314	251	251
query34	1162	1202	644	644
query35	768	778	666	666
query36	1404	1405	1268	1268
query37	150	108	89	89
query38	1872	1678	1651	1651
query39	921	926	893	893
query39_1	898	886	890	886
query40	236	158	142	142
query41	67	62	61	61
query42	94	94	95	94
query43	332	323	278	278
query44	1470	778	781	778
query45	195	185	176	176
query46	1039	1219	755	755
query47	2336	2305	2280	2280
query48	414	401	305	305
query49	570	424	313	313
query50	1054	423	328	328
query51	11031	11028	10846	10846
query52	82	90	72	72
query53	256	276	203	203
query54	283	227	248	227
query55	74	73	65	65
query56	300	279	285	279
query57	1423	1425	1316	1316
query58	291	277	246	246
query59	1583	1606	1399	1399
query60	321	279	265	265
query61	172	168	172	168
query62	702	656	578	578
query63	247	208	209	208
query64	2942	1146	963	963
query65	4857	4804	4782	4782
query66	1860	505	390	390
query67	29593	29402	29429	29402
query68	3160	1607	945	945
query69	396	302	275	275
query70	1057	981	1027	981
query71	366	320	313	313
query72	3111	2476	2362	2362
query73	838	749	407	407
query74	5083	4967	4749	4749
query75	2594	2587	2207	2207
query76	2335	1195	816	816
query77	359	390	277	277
query78	12337	12430	11694	11694
query79	1413	1132	802	802
query80	1297	526	468	468
query81	554	314	286	286
query82	602	153	119	119
query83	362	325	292	292
query84	283	163	133	133
query85	945	575	506	506
query86	423	300	290	290
query87	1823	1830	1733	1733
query88	3825	2812	2804	2804
query89	450	401	366	366
query90	1893	210	192	192
query91	204	189	164	164
query92	63	61	60	60
query93	1721	1555	990	990
query94	715	349	321	321
query95	779	498	548	498
query96	1058	794	370	370
query97	2689	2674	2566	2566
query98	208	210	220	210
query99	1134	1181	1063	1063
Total cold run time: 266118 ms
Total hot run time: 180020 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 24.93 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 3a87925f6a625fd828c100113a1d320b1f3f8102, data reload: false

query1	0.00	0.00	0.00
query2	0.09	0.05	0.06
query3	0.25	0.14	0.14
query4	1.62	0.14	0.14
query5	0.25	0.23	0.22
query6	1.27	1.10	1.06
query7	0.04	0.01	0.01
query8	0.06	0.04	0.04
query9	0.38	0.32	0.32
query10	0.60	0.56	0.53
query11	0.19	0.14	0.14
query12	0.18	0.14	0.14
query13	0.47	0.49	0.47
query14	1.02	1.02	1.03
query15	0.62	0.59	0.59
query16	0.31	0.33	0.34
query17	1.10	1.14	1.09
query18	0.22	0.21	0.21
query19	2.05	1.93	1.86
query20	0.02	0.01	0.01
query21	15.44	0.22	0.13
query22	4.92	0.05	0.05
query23	16.13	0.31	0.12
query24	2.90	0.43	0.31
query25	0.11	0.05	0.05
query26	0.73	0.21	0.15
query27	0.04	0.04	0.03
query28	3.54	0.96	0.60
query29	12.50	4.06	3.22
query30	0.28	0.18	0.16
query31	2.77	0.60	0.31
query32	3.22	0.60	0.48
query33	3.26	3.20	3.29
query34	15.64	4.26	3.49
query35	3.54	3.47	3.55
query36	0.55	0.44	0.42
query37	0.09	0.07	0.06
query38	0.05	0.04	0.04
query39	0.04	0.02	0.03
query40	0.18	0.16	0.16
query41	0.08	0.03	0.03
query42	0.04	0.03	0.03
query43	0.04	0.03	0.04
Total cold run time: 96.83 s
Total hot run time: 24.93 s

@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 77.39% (1896/2450)
Line Coverage 64.47% (34079/52862)
Region Coverage 64.89% (17542/27032)
Branch Coverage 54.05% (9399/17390)

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 29706 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 5b7b2bd945de7cf00c4367db43d7131666eb9144, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17668	4003	3968	3968
q2	2030	340	218	218
q3	10271	1392	849	849
q4	4682	470	337	337
q5	7582	855	585	585
q6	176	166	135	135
q7	783	854	624	624
q8	9331	1560	1663	1560
q9	5655	4393	4384	4384
q10	6777	1832	1552	1552
q11	513	348	315	315
q12	719	548	427	427
q13	18096	3421	2778	2778
q14	264	255	245	245
q15	q16	788	779	711	711
q17	1032	1002	1007	1002
q18	6876	5964	5546	5546
q19	1318	1306	1093	1093
q20	778	664	558	558
q21	5792	2628	2520	2520
q22	438	361	299	299
Total cold run time: 101569 ms
Total hot run time: 29706 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4327	4269	4437	4269
q2	289	329	222	222
q3	4567	4924	4451	4451
q4	2051	2145	1354	1354
q5	4462	4294	4341	4294
q6	222	172	128	128
q7	1701	1908	1855	1855
q8	2544	2181	2220	2181
q9	8079	8173	7955	7955
q10	4765	4724	4282	4282
q11	586	415	383	383
q12	759	792	561	561
q13	3204	3539	3000	3000
q14	294	300	276	276
q15	q16	706	738	646	646
q17	1342	1322	1296	1296
q18	8468	7298	7137	7137
q19	1115	1137	1073	1073
q20	2193	2199	1942	1942
q21	5213	4514	4343	4343
q22	538	460	429	429
Total cold run time: 57425 ms
Total hot run time: 52077 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 180343 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 5b7b2bd945de7cf00c4367db43d7131666eb9144, data reload: false

query5	4346	635	492	492
query6	472	239	227	227
query7	4855	611	329	329
query8	352	192	173	173
query9	8790	4157	4120	4120
query10	469	347	294	294
query11	5941	2346	2149	2149
query12	157	104	101	101
query13	1289	628	457	457
query14	6300	5290	4905	4905
query14_1	4266	4279	4282	4279
query15	215	205	190	190
query16	983	456	439	439
query17	923	704	564	564
query18	2423	477	350	350
query19	213	189	148	148
query20	112	108	118	108
query21	232	156	140	140
query22	13624	13565	13413	13413
query23	17387	16672	16197	16197
query23_1	16300	16288	16182	16182
query24	7449	1818	1317	1317
query24_1	1354	1290	1286	1286
query25	528	440	412	412
query26	1344	360	216	216
query27	2584	631	372	372
query28	4560	2036	2028	2028
query29	1088	651	512	512
query30	348	263	231	231
query31	1116	1109	994	994
query32	105	71	74	71
query33	527	343	262	262
query34	1229	1163	665	665
query35	827	780	685	685
query36	1415	1388	1200	1200
query37	159	112	98	98
query38	1874	1705	1667	1667
query39	935	918	902	902
query39_1	879	884	905	884
query40	249	172	150	150
query41	75	72	72	72
query42	98	94	96	94
query43	330	327	279	279
query44	1478	802	781	781
query45	221	196	180	180
query46	1080	1229	747	747
query47	2379	2390	2232	2232
query48	417	432	321	321
query49	593	438	331	331
query50	1074	424	345	345
query51	10596	10714	10559	10559
query52	90	91	77	77
query53	265	288	210	210
query54	304	253	232	232
query55	76	74	74	74
query56	317	295	288	288
query57	1457	1400	1315	1315
query58	303	283	267	267
query59	1619	1663	1451	1451
query60	329	297	265	265
query61	183	176	200	176
query62	686	651	584	584
query63	247	203	206	203
query64	2888	1068	860	860
query65	4852	4761	4766	4761
query66	1819	522	390	390
query67	29521	29324	29402	29324
query68	3404	1519	989	989
query69	438	295	272	272
query70	1081	957	951	951
query71	347	309	313	309
query72	3171	2754	2311	2311
query73	823	779	441	441
query74	5092	4938	4792	4792
query75	2621	2604	2236	2236
query76	2351	1275	759	759
query77	360	395	283	283
query78	12360	12441	11641	11641
query79	1413	1207	784	784
query80	1272	536	454	454
query81	520	322	276	276
query82	616	160	121	121
query83	395	320	294	294
query84	325	162	130	130
query85	1039	627	536	536
query86	429	297	283	283
query87	1842	1848	1747	1747
query88	3763	2836	2823	2823
query89	457	402	361	361
query90	1924	201	191	191
query91	206	193	160	160
query92	66	59	55	55
query93	1583	1574	1029	1029
query94	726	373	323	323
query95	781	582	475	475
query96	1089	838	386	386
query97	2687	2679	2541	2541
query98	213	206	208	206
query99	1139	1191	1028	1028
Total cold run time: 266122 ms
Total hot run time: 180343 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 24.98 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 5b7b2bd945de7cf00c4367db43d7131666eb9144, data reload: false

query1	0.01	0.01	0.01
query2	0.09	0.05	0.05
query3	0.26	0.14	0.14
query4	1.61	0.18	0.14
query5	0.23	0.22	0.23
query6	1.26	1.05	1.05
query7	0.04	0.01	0.01
query8	0.06	0.04	0.04
query9	0.38	0.31	0.31
query10	0.60	0.55	0.56
query11	0.19	0.14	0.15
query12	0.19	0.15	0.14
query13	0.48	0.48	0.48
query14	1.01	1.01	0.99
query15	0.64	0.59	0.59
query16	0.31	0.32	0.32
query17	1.12	1.07	1.13
query18	0.22	0.20	0.21
query19	2.07	1.93	1.98
query20	0.02	0.01	0.01
query21	15.40	0.20	0.13
query22	4.95	0.05	0.05
query23	16.14	0.32	0.13
query24	2.96	0.40	0.33
query25	0.11	0.06	0.04
query26	0.74	0.22	0.16
query27	0.04	0.04	0.03
query28	3.53	0.90	0.55
query29	12.51	4.12	3.27
query30	0.28	0.16	0.15
query31	2.77	0.59	0.30
query32	3.21	0.59	0.48
query33	3.26	3.17	3.25
query34	15.64	4.26	3.48
query35	3.54	3.55	3.54
query36	0.56	0.46	0.43
query37	0.09	0.07	0.06
query38	0.05	0.04	0.04
query39	0.04	0.03	0.03
query40	0.19	0.17	0.15
query41	0.08	0.03	0.02
query42	0.03	0.02	0.02
query43	0.04	0.04	0.03
Total cold run time: 96.95 s
Total hot run time: 24.98 s

@hello-stephen

Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 78.92% (146/185) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 56.91% (23549/41380)
Line Coverage 40.58% (230301/567584)
Region Coverage 36.49% (182038/498929)
Branch Coverage 37.55% (81222/216331)

@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 77.39% (1896/2450)
Line Coverage 64.43% (34059/52862)
Region Coverage 64.87% (17537/27032)
Branch Coverage 54.05% (9400/17390)

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 29978 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 52d18cf1612c78d570979bc62a7aa38c0f836201, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17662	4260	4242	4242
q2	2042	337	197	197
q3	10392	1483	870	870
q4	4771	471	343	343
q5	8123	881	587	587
q6	305	179	141	141
q7	845	862	628	628
q8	10576	1673	1611	1611
q9	5848	4428	4407	4407
q10	6692	1793	1515	1515
q11	513	358	325	325
q12	727	579	431	431
q13	18116	3501	2724	2724
q14	269	272	249	249
q15	q16	796	794	712	712
q17	1030	947	1069	947
q18	6964	5999	5668	5668
q19	1193	1371	1041	1041
q20	772	671	591	591
q21	5551	2697	2446	2446
q22	444	368	303	303
Total cold run time: 103631 ms
Total hot run time: 29978 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4570	4458	4485	4458
q2	320	341	226	226
q3	4612	4993	4401	4401
q4	2243	2240	1424	1424
q5	4531	4403	4877	4403
q6	269	205	142	142
q7	2120	1904	1699	1699
q8	2667	2323	2306	2306
q9	7976	7910	7840	7840
q10	4768	4788	4250	4250
q11	631	467	441	441
q12	778	769	545	545
q13	3288	3733	2976	2976
q14	292	310	259	259
q15	q16	720	752	658	658
q17	1416	1336	1433	1336
q18	8188	7548	6858	6858
q19	1103	1044	1049	1044
q20	2231	2226	1945	1945
q21	5392	4794	4627	4627
q22	529	456	439	439
Total cold run time: 58644 ms
Total hot run time: 52277 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 179712 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 52d18cf1612c78d570979bc62a7aa38c0f836201, data reload: false

query5	4329	631	477	477
query6	451	226	192	192
query7	4884	607	343	343
query8	343	211	175	175
query9	8774	4083	4050	4050
query10	461	346	310	310
query11	5953	2332	2166	2166
query12	155	103	102	102
query13	1289	581	426	426
query14	6270	5274	4930	4930
query14_1	4290	4252	4280	4252
query15	218	202	178	178
query16	1008	505	461	461
query17	1103	706	560	560
query18	2425	457	335	335
query19	209	182	146	146
query20	112	108	106	106
query21	233	147	134	134
query22	13618	13621	13330	13330
query23	17434	16578	16150	16150
query23_1	16339	16236	16240	16236
query24	7689	1801	1284	1284
query24_1	1333	1333	1304	1304
query25	574	470	411	411
query26	1329	337	204	204
query27	2642	587	365	365
query28	4498	2053	2036	2036
query29	1139	628	520	520
query30	348	273	231	231
query31	1123	1115	991	991
query32	111	62	66	62
query33	522	327	266	266
query34	1162	1161	656	656
query35	770	787	713	713
query36	1420	1395	1230	1230
query37	163	112	98	98
query38	1887	1693	1628	1628
query39	921	904	875	875
query39_1	914	876	897	876
query40	248	160	147	147
query41	72	69	68	68
query42	96	91	96	91
query43	322	322	288	288
query44	1420	791	776	776
query45	202	184	179	179
query46	1089	1185	760	760
query47	2438	2328	2203	2203
query48	414	441	306	306
query49	591	452	329	329
query50	1023	434	334	334
query51	10934	10763	10770	10763
query52	87	88	79	79
query53	263	274	207	207
query54	298	261	231	231
query55	75	73	68	68
query56	315	289	289	289
query57	1453	1432	1347	1347
query58	295	270	272	270
query59	1578	1662	1441	1441
query60	314	283	255	255
query61	187	222	149	149
query62	691	650	577	577
query63	235	208	205	205
query64	2855	1034	851	851
query65	4868	4771	4757	4757
query66	1862	509	383	383
query67	29462	29457	29277	29277
query68	3207	1622	997	997
query69	419	309	269	269
query70	1049	990	964	964
query71	352	325	311	311
query72	3030	2797	2380	2380
query73	834	842	453	453
query74	5104	4903	4789	4789
query75	2608	2569	2222	2222
query76	2345	1144	779	779
query77	355	381	291	291
query78	12346	12395	11728	11728
query79	1534	1120	768	768
query80	1265	539	463	463
query81	560	321	290	290
query82	617	155	117	117
query83	353	317	297	297
query84	315	158	131	131
query85	977	579	495	495
query86	431	308	288	288
query87	1816	1826	1754	1754
query88	3777	2822	2778	2778
query89	452	414	364	364
query90	1903	203	202	202
query91	204	190	164	164
query92	64	64	58	58
query93	1789	1493	973	973
query94	729	358	312	312
query95	782	472	468	468
query96	1106	755	378	378
query97	2665	2666	2585	2585
query98	212	202	199	199
query99	1163	1173	1024	1024
Total cold run time: 266915 ms
Total hot run time: 179712 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 24.95 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 52d18cf1612c78d570979bc62a7aa38c0f836201, data reload: false

query1	0.01	0.01	0.01
query2	0.09	0.05	0.05
query3	0.26	0.14	0.14
query4	1.61	0.14	0.15
query5	0.25	0.22	0.22
query6	1.24	1.06	1.07
query7	0.04	0.00	0.01
query8	0.06	0.03	0.04
query9	0.37	0.30	0.33
query10	0.55	0.54	0.53
query11	0.19	0.14	0.14
query12	0.18	0.14	0.14
query13	0.46	0.48	0.48
query14	1.03	1.02	1.01
query15	0.61	0.58	0.60
query16	0.32	0.31	0.32
query17	1.12	1.10	1.09
query18	0.23	0.21	0.21
query19	2.02	1.97	1.92
query20	0.02	0.01	0.01
query21	15.43	0.22	0.12
query22	4.86	0.05	0.05
query23	16.16	0.32	0.12
query24	2.90	0.40	0.32
query25	0.12	0.05	0.04
query26	0.74	0.21	0.16
query27	0.05	0.03	0.04
query28	3.49	0.91	0.52
query29	12.54	4.08	3.20
query30	0.28	0.16	0.16
query31	2.77	0.60	0.30
query32	3.22	0.60	0.49
query33	3.25	3.15	3.23
query34	15.51	4.24	3.58
query35	3.51	3.55	3.55
query36	0.54	0.45	0.42
query37	0.09	0.07	0.07
query38	0.06	0.04	0.03
query39	0.04	0.03	0.03
query40	0.18	0.16	0.15
query41	0.08	0.03	0.04
query42	0.04	0.03	0.03
query43	0.05	0.04	0.03
Total cold run time: 96.57 s
Total hot run time: 24.95 s

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 80.54% (149/185) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 74.79% (30196/40375)
Line Coverage 58.74% (331330/564022)
Region Coverage 55.55% (278228/500825)
Branch Coverage 56.78% (122878/216409)

@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

### What problem does this PR solve?

Issue Number: None

Related PR: apache#65420

Problem Summary: Merging the latest master into the S3 rate limiter branch kept both the old and new definitions of trino_connector_plugin_dir in BE config.cpp. Clang rejected the duplicate config variable and registration object definitions. Remove the obsolete plugins/connectors definition and keep the master definition that matches the FE plugins/trino_plugins default.

### Release note

None

### Check List (For Author)

- Test: No need to test (single merge-conflict cleanup; local testing was explicitly not requested)
- Behavior changed: No
- Does this need documentation: No
@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 77.54% (1909/2462)
Line Coverage 64.51% (34193/53003)
Region Coverage 64.91% (17592/27101)
Branch Coverage 54.10% (9438/17444)

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 29538 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 7c75a83056f6aab4c995d38665d4a87899a8f48d, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17638	4204	4046	4046
q2	2027	317	195	195
q3	10310	1414	849	849
q4	4682	479	343	343
q5	7509	874	558	558
q6	182	169	145	145
q7	746	818	605	605
q8	9679	1564	1503	1503
q9	5887	4266	4326	4266
q10	6798	1753	1493	1493
q11	505	371	329	329
q12	746	588	448	448
q13	18128	3420	2793	2793
q14	273	259	236	236
q15	q16	789	768	713	713
q17	1125	1087	922	922
q18	6823	5799	5447	5447
q19	1739	1246	1077	1077
q20	833	684	616	616
q21	6034	2838	2631	2631
q22	444	374	323	323
Total cold run time: 102897 ms
Total hot run time: 29538 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4869	4714	4718	4714
q2	291	491	220	220
q3	4967	5159	4780	4780
q4	2137	2140	1353	1353
q5	4782	4774	4655	4655
q6	231	176	127	127
q7	1874	1772	1675	1675
q8	2397	1996	1898	1898
q9	7152	7194	7162	7162
q10	4609	4546	4161	4161
q11	529	389	370	370
q12	733	730	523	523
q13	3089	3407	2806	2806
q14	298	300	273	273
q15	q16	680	715	643	643
q17	1288	1278	1251	1251
q18	7427	6908	6832	6832
q19	1082	1072	1087	1072
q20	2239	2193	1955	1955
q21	5206	4523	4356	4356
q22	521	445	405	405
Total cold run time: 56401 ms
Total hot run time: 51231 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 178523 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 7c75a83056f6aab4c995d38665d4a87899a8f48d, data reload: false

query5	4353	641	488	488
query6	463	219	200	200
query7	4857	546	354	354
query8	332	177	164	164
query9	8798	4057	4024	4024
query10	483	352	288	288
query11	5894	2360	2146	2146
query12	154	96	94	94
query13	1268	608	409	409
query14	6203	5203	4813	4813
query14_1	4179	4159	4185	4159
query15	207	201	178	178
query16	1020	459	419	419
query17	1093	680	561	561
query18	2461	465	335	335
query19	204	183	143	143
query20	108	108	113	108
query21	234	157	135	135
query22	13550	13597	13360	13360
query23	17262	16423	16153	16153
query23_1	16090	16227	16126	16126
query24	7469	1739	1268	1268
query24_1	1285	1281	1272	1272
query25	527	417	347	347
query26	1351	367	206	206
query27	2562	583	376	376
query28	4454	1992	2029	1992
query29	1061	598	482	482
query30	339	266	229	229
query31	1111	1108	975	975
query32	105	59	60	59
query33	511	324	233	233
query34	1168	1079	624	624
query35	752	773	663	663
query36	1022	1022	875	875
query37	147	106	89	89
query38	1893	1685	1646	1646
query39	866	871	837	837
query39_1	834	851	856	851
query40	247	159	141	141
query41	64	62	65	62
query42	91	91	90	90
query43	319	329	280	280
query44	1391	792	749	749
query45	193	177	171	171
query46	1070	1185	771	771
query47	2074	2099	1995	1995
query48	412	426	305	305
query49	586	417	307	307
query50	1066	435	354	354
query51	10551	10853	10819	10819
query52	91	88	74	74
query53	280	289	199	199
query54	293	245	228	228
query55	75	71	70	70
query56	321	308	320	308
query57	1313	1278	1180	1180
query58	295	257	255	255
query59	1564	1631	1483	1483
query60	329	283	269	269
query61	178	171	172	171
query62	545	494	426	426
query63	246	209	200	200
query64	2937	1165	833	833
query65	4747	4629	4639	4629
query66	1866	492	367	367
query67	29426	29356	29176	29176
query68	3050	1562	951	951
query69	396	306	266	266
query70	939	855	807	807
query71	362	328	307	307
query72	3028	2746	2379	2379
query73	864	766	437	437
query74	5021	4880	4699	4699
query75	2508	2486	2142	2142
query76	2324	1179	769	769
query77	358	374	278	278
query78	11685	11720	11392	11392
query79	1406	1104	764	764
query80	729	533	464	464
query81	489	334	292	292
query82	556	156	117	117
query83	390	317	296	296
query84	278	157	130	130
query85	973	647	545	545
query86	345	244	236	236
query87	1818	1831	1759	1759
query88	3691	2815	2785	2785
query89	422	366	344	344
query90	1853	192	194	192
query91	195	183	161	161
query92	59	59	53	53
query93	1502	1515	967	967
query94	624	354	308	308
query95	793	504	475	475
query96	1083	766	358	358
query97	2589	2607	2473	2473
query98	215	221	206	206
query99	1093	1113	976	976
Total cold run time: 261181 ms
Total hot run time: 178523 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 24.86 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 7c75a83056f6aab4c995d38665d4a87899a8f48d, data reload: false

query1	0.01	0.01	0.00
query2	0.10	0.05	0.05
query3	0.25	0.13	0.14
query4	1.60	0.14	0.14
query5	0.26	0.23	0.21
query6	1.16	0.84	0.85
query7	0.04	0.01	0.00
query8	0.06	0.04	0.05
query9	0.38	0.32	0.31
query10	0.55	0.58	0.56
query11	0.18	0.13	0.14
query12	0.18	0.14	0.14
query13	0.48	0.48	0.50
query14	1.04	1.00	1.00
query15	0.63	0.61	0.62
query16	0.33	0.32	0.30
query17	1.10	1.09	1.14
query18	0.23	0.20	0.21
query19	2.06	2.00	1.98
query20	0.02	0.01	0.01
query21	15.43	0.18	0.14
query22	4.99	0.06	0.05
query23	16.15	0.31	0.12
query24	2.90	0.42	0.30
query25	0.11	0.05	0.04
query26	0.92	0.21	0.17
query27	0.08	0.05	0.03
query28	3.52	0.94	0.54
query29	12.49	4.01	3.21
query30	0.27	0.14	0.15
query31	2.76	0.62	0.32
query32	3.23	0.60	0.47
query33	3.21	3.22	3.21
query34	15.58	4.35	3.56
query35	3.52	3.53	3.55
query36	0.58	0.45	0.44
query37	0.09	0.06	0.06
query38	0.05	0.04	0.04
query39	0.04	0.03	0.03
query40	0.18	0.16	0.15
query41	0.09	0.04	0.03
query42	0.04	0.03	0.03
query43	0.04	0.03	0.04
Total cold run time: 96.93 s
Total hot run time: 24.86 s

### What problem does this PR solve?

Issue Number: None

Related PR: apache#65420

Problem Summary: The BE UT exposed that dynamic config validators checked the active value before the converted candidate was assigned. An invalid S3 limiter update such as s3_get_qps_per_core=-2 therefore passed validation and changed the live config. Publish the candidate before invoking the registered validator; the existing failure path restores the previous value.

### Release note

Invalid dynamic BE configuration values are rejected without changing the active value.

### Check List (For Author)

- Test: Unit Test
    - ./run-be-ut.sh --run --filter=S3RateLimiterConfigTest.*:ConfigValidatorTest.* -j48
- Behavior changed: Yes. Dynamic validators now evaluate the candidate value and roll back invalid updates.
- Does this need documentation: No
@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

### What problem does this PR solve?

Issue Number: None

Related PR: apache#65420

Problem Summary: The S3 limiter follow-up added redundant Azure timing scopes and immediately invoked lambdas. It also restricted new limiter configs to sentinel values even though the resolver already treats any negative or non-positive value as fallback, disabled, uncapped, or auto-detected. Remove the redundant Azure wrappers, align the config declarations and comments with the resolver semantics, restore the existing UPDATE_FIELD behavior, and remove the invalid dynamic-value unit test.

### Release note

None

### Check List (For Author)

- Test: No test run per request; clang-format and check-format passed
- Behavior changed: Yes; negative limiter tuning values now follow the existing resolver semantics
- Does this need documentation: No
@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 77.54% (1909/2462)
Line Coverage 64.49% (34184/53003)
Region Coverage 64.90% (17588/27101)
Branch Coverage 54.09% (9436/17444)

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 29398 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit fffe93b9ad07330c3ca143c6365e3da84dbcc7d2, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17598	3998	3950	3950
q2	2080	325	202	202
q3	10222	1347	800	800
q4	4677	462	333	333
q5	7519	839	567	567
q6	180	175	141	141
q7	736	812	613	613
q8	9324	1640	1651	1640
q9	6270	4329	4326	4326
q10	6790	1722	1471	1471
q11	505	361	339	339
q12	717	583	453	453
q13	18421	3258	2732	2732
q14	269	265	240	240
q15	q16	779	765	704	704
q17	967	962	1023	962
q18	6715	5652	5429	5429
q19	1173	1265	1055	1055
q20	852	659	550	550
q21	5983	2815	2584	2584
q22	439	385	307	307
Total cold run time: 102216 ms
Total hot run time: 29398 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4869	4749	4803	4749
q2	290	383	273	273
q3	4950	5249	4831	4831
q4	2039	2136	1416	1416
q5	4911	4776	4689	4689
q6	231	176	131	131
q7	1847	1742	1583	1583
q8	2385	1992	1892	1892
q9	7146	7185	7144	7144
q10	4622	4566	4103	4103
q11	528	381	356	356
q12	716	739	527	527
q13	2971	3304	2746	2746
q14	275	285	262	262
q15	q16	678	690	613	613
q17	1257	1241	1229	1229
q18	7332	6691	6925	6691
q19	1123	1058	1045	1045
q20	2224	2192	1935	1935
q21	5188	4535	4438	4438
q22	516	442	444	442
Total cold run time: 56098 ms
Total hot run time: 51095 ms

### What problem does this PR solve?

Issue Number: None

Related PR: apache#65420

Problem Summary: The CPU-aware request-rate configs used the QPS abbreviation while the bandwidth configs spell out their units. Rename the four GET/PUT per-core and maximum request-rate configs to use requests_per_second consistently, and update all source, unit-test, and regression-test references.

### Release note

Rename the new S3 CPU-aware request-rate configs to s3_get_requests_per_second_per_core, s3_put_requests_per_second_per_core, s3_get_requests_per_second_max, and s3_put_requests_per_second_max.

### Check List (For Author)

- Test: No test run per request; clang-format and check-format passed
- Behavior changed: Yes; the four new request-rate configuration names changed
- Does this need documentation: No
@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

@liaoxin01 liaoxin01 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@liaoxin01

Copy link
Copy Markdown
Contributor

/review

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 177594 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit fffe93b9ad07330c3ca143c6365e3da84dbcc7d2, data reload: false

query5	4304	627	483	483
query6	466	220	207	207
query7	4941	612	341	341
query8	321	185	167	167
query9	8764	4117	4102	4102
query10	461	343	301	301
query11	5915	2356	2173	2173
query12	153	101	102	101
query13	1258	609	441	441
query14	6261	5165	4843	4843
query14_1	4219	4207	4211	4207
query15	206	203	177	177
query16	1013	484	441	441
query17	1117	695	572	572
query18	2478	478	352	352
query19	217	205	154	154
query20	113	105	104	104
query21	238	161	144	144
query22	13597	13491	13389	13389
query23	17233	16397	16134	16134
query23_1	16316	16317	16254	16254
query24	7510	1752	1290	1290
query24_1	1314	1269	1296	1269
query25	567	469	390	390
query26	1313	361	222	222
query27	2600	604	382	382
query28	4456	2080	2040	2040
query29	1096	635	499	499
query30	345	269	229	229
query31	1121	1092	984	984
query32	113	64	61	61
query33	558	329	266	266
query34	1175	1141	652	652
query35	781	769	691	691
query36	1070	1020	856	856
query37	151	109	93	93
query38	1871	1697	1645	1645
query39	883	896	836	836
query39_1	840	832	857	832
query40	249	168	151	151
query41	70	69	69	69
query42	95	98	97	97
query43	328	321	285	285
query44	1457	795	776	776
query45	201	185	175	175
query46	1112	1216	737	737
query47	2202	2076	1961	1961
query48	409	401	312	312
query49	596	431	307	307
query50	1062	413	336	336
query51	10602	10397	10575	10397
query52	85	92	78	78
query53	255	276	202	202
query54	278	234	214	214
query55	75	69	66	66
query56	294	308	268	268
query57	1362	1298	1216	1216
query58	283	257	252	252
query59	1549	1649	1413	1413
query60	304	273	259	259
query61	156	147	151	147
query62	536	503	430	430
query63	237	204	204	204
query64	2861	1057	870	870
query65	4713	4586	4598	4586
query66	1827	495	380	380
query67	29275	29170	29055	29055
query68	3346	1493	1069	1069
query69	397	312	263	263
query70	921	807	806	806
query71	378	339	323	323
query72	3092	2736	2420	2420
query73	879	860	419	419
query74	5072	4924	4756	4756
query75	2509	2497	2127	2127
query76	2353	1174	773	773
query77	368	378	273	273
query78	11842	11954	11488	11488
query79	1404	1161	760	760
query80	1299	553	474	474
query81	535	339	282	282
query82	617	151	121	121
query83	376	331	296	296
query84	281	161	130	130
query85	1005	623	539	539
query86	411	250	233	233
query87	1845	1805	1766	1766
query88	3817	2843	2813	2813
query89	435	371	332	332
query90	1934	188	194	188
query91	199	192	161	161
query92	63	60	54	54
query93	1711	1585	969	969
query94	702	346	316	316
query95	804	510	561	510
query96	1120	778	347	347
query97	2610	2668	2461	2461
query98	214	209	202	202
query99	1119	1108	980	980
Total cold run time: 263765 ms
Total hot run time: 177594 ms

@github-actions github-actions Bot added the approved Indicates a PR has been approved by one committer. label Jul 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR approved by at least one committer and no changes requested.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review of beaa8ea2bf6e5f300be4ced32505ceb9eb33278c.

I found no additional distinct issues. Existing review threads already cover the limiter-generation, refill/refund, oversized-I/O accounting, logical-operation boundary, provider-retry, CPU-sizing, and ConfigTest snapshot concerns, so I did not duplicate them.

Critical checkpoint conclusions:

  • Goal and proof: the manager/decorator design implements CPU-derived GET/PUT QPS and byte limits, internal-only cloud decoration, non-cloud compatibility, dynamic daemon refresh, cache collision safety, and short-read settlement. Unit, cloud regression, and Docker cgroup tests cover the main intended paths; no tests or builds were run in this review-only runner.
  • Scope and parallel paths: the change is focused on object-storage admission plus directly related config/cache/test plumbing. S3 and Azure use the same decorator, every ObjStorageClient method was traced, and presigning correctly remains local.
  • Concurrency and lifecycle: daemon shutdown joins through the existing latch; refresh is serialized; bucket mutation is spinlock-protected; holder generation replacement is shared-mutex-protected; charged generations are pinned for settlement. No new concern was found beyond the existing reset/refill/sizing threads.
  • Configuration and compatibility: legacy absolute QPS settings remain the -1 fallback, zero disables per-core QPS, caps saturate safely, cgroup/override changes converge through the common daemon in cloud and non-cloud modes, and no FE/BE wire or storage format changes are introduced.
  • Error handling and writes: local admission rejection returns non-OK EXCEEDED_LIMIT with HTTP 0, so readers do not enter provider-429 retry; writer paths propagate failure before performing the rejected provider call. No new transaction, persistence, crash-leak, or data-visibility issue was found.
  • Performance and observability: disabled buckets have lock-free fast-path checks, quiet refreshes preserve state, and separate GET/PUT QPS/byte sleep and rejection bvars plus reset/long-wait logs cover the new behavior. Remaining logical-call versus provider-request tradeoffs are already discussed.
  • Test quality: result arithmetic, production reachability, and global config restoration were checked. The apparent second full_conf_map leak depends on the already-known ConfigTest teardown defect and is therefore not a distinct reportable issue.
  • Documentation: the release note describes the user-visible behavior, but the PR body should be refreshed to match the current config name s3_rate_limiter_cpu_cores_override and HTTP-0 local rejection behavior.

No additional user-provided focus was supplied; the entire PR was reviewed.

@hello-stephen

Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 84.52% (262/310) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 59.12% (25607/43310)
Line Coverage 43.18% (256708/594441)
Region Coverage 38.88% (203443/523318)
Branch Coverage 40.20% (92732/230703)

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 85.98% (276/321) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 75.75% (31996/42241)
Line Coverage 60.36% (356417/590465)
Region Coverage 57.00% (299324/525085)
Branch Coverage 58.35% (134636/230741)

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 29517 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit beaa8ea2bf6e5f300be4ced32505ceb9eb33278c, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17572	3998	4017	3998
q2	2041	387	215	215
q3	10208	1407	809	809
q4	4681	473	339	339
q5	7548	863	580	580
q6	184	170	143	143
q7	756	813	607	607
q8	9332	1494	1583	1494
q9	6083	4304	4331	4304
q10	6758	1760	1470	1470
q11	520	352	324	324
q12	709	573	466	466
q13	18093	3408	2782	2782
q14	263	262	237	237
q15	q16	779	785	714	714
q17	968	930	1076	930
q18	6982	5918	5496	5496
q19	1299	1261	1034	1034
q20	776	663	572	572
q21	6235	2861	2671	2671
q22	458	388	332	332
Total cold run time: 102245 ms
Total hot run time: 29517 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	5076	4762	4773	4762
q2	309	342	218	218
q3	4945	5264	4784	4784
q4	2080	2191	1394	1394
q5	4815	4683	4568	4568
q6	242	183	133	133
q7	1907	1758	1496	1496
q8	2413	2062	2177	2062
q9	7651	7176	7237	7176
q10	4630	4593	4107	4107
q11	521	387	346	346
q12	730	751	529	529
q13	2978	3287	2704	2704
q14	271	280	254	254
q15	q16	692	702	616	616
q17	1279	1246	1231	1231
q18	7342	6827	6694	6694
q19	1083	1031	1044	1031
q20	2187	2199	1924	1924
q21	5244	4540	4397	4397
q22	513	443	419	419
Total cold run time: 56908 ms
Total hot run time: 50845 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 177568 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit beaa8ea2bf6e5f300be4ced32505ceb9eb33278c, data reload: false

query5	4309	635	473	473
query6	466	217	204	204
query7	4939	610	328	328
query8	340	182	166	166
query9	8739	4085	4053	4053
query10	454	348	340	340
query11	5903	2315	2146	2146
query12	160	109	102	102
query13	1331	585	407	407
query14	6220	5183	4841	4841
query14_1	4197	4188	4192	4188
query15	216	199	177	177
query16	1001	466	428	428
query17	904	679	554	554
query18	2408	448	332	332
query19	197	190	143	143
query20	108	108	107	107
query21	224	152	132	132
query22	13499	13535	13292	13292
query23	17326	16463	16149	16149
query23_1	16269	16253	16333	16253
query24	7437	1761	1311	1311
query24_1	1341	1289	1269	1269
query25	540	473	365	365
query26	1335	370	218	218
query27	2620	616	394	394
query28	4537	2024	2027	2024
query29	1052	613	460	460
query30	350	260	225	225
query31	1104	1083	983	983
query32	104	61	59	59
query33	502	316	233	233
query34	1204	1168	657	657
query35	748	768	673	673
query36	1025	1040	896	896
query37	151	102	87	87
query38	1873	1714	1639	1639
query39	866	866	861	861
query39_1	853	839	850	839
query40	243	157	137	137
query41	66	65	62	62
query42	89	90	89	89
query43	316	322	279	279
query44	1414	774	755	755
query45	192	181	175	175
query46	1076	1140	750	750
query47	2133	2171	2074	2074
query48	407	445	287	287
query49	579	417	342	342
query50	1068	443	342	342
query51	10745	10342	10312	10312
query52	84	90	79	79
query53	261	281	208	208
query54	277	238	222	222
query55	74	70	69	69
query56	303	311	295	295
query57	1326	1310	1201	1201
query58	300	279	272	272
query59	1526	1675	1475	1475
query60	310	295	269	269
query61	178	177	171	171
query62	546	499	436	436
query63	250	205	239	205
query64	2807	1006	821	821
query65	4743	4630	4662	4630
query66	1860	507	394	394
query67	29391	29283	29207	29207
query68	3199	1538	945	945
query69	412	313	264	264
query70	916	831	832	831
query71	370	331	341	331
query72	3065	2655	2533	2533
query73	866	721	454	454
query74	5072	4926	4754	4754
query75	2554	2517	2152	2152
query76	2323	1193	795	795
query77	350	389	283	283
query78	11822	11689	11439	11439
query79	1424	1105	776	776
query80	699	596	484	484
query81	461	334	292	292
query82	580	161	121	121
query83	406	334	310	310
query84	343	168	138	138
query85	1041	717	505	505
query86	323	247	235	235
query87	1823	1816	1740	1740
query88	3735	2833	2791	2791
query89	423	366	330	330
query90	1929	193	196	193
query91	195	190	158	158
query92	59	62	54	54
query93	1593	1493	1014	1014
query94	527	332	311	311
query95	802	592	457	457
query96	1115	761	379	379
query97	2644	2611	2474	2474
query98	216	211	199	199
query99	1084	1123	997	997
Total cold run time: 262229 ms
Total hot run time: 177568 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 24.76 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit beaa8ea2bf6e5f300be4ced32505ceb9eb33278c, data reload: false

query1	0.00	0.00	0.00
query2	0.09	0.05	0.05
query3	0.25	0.13	0.14
query4	1.61	0.14	0.14
query5	0.24	0.22	0.21
query6	1.16	0.79	0.81
query7	0.03	0.00	0.00
query8	0.06	0.04	0.04
query9	0.39	0.30	0.32
query10	0.55	0.54	0.59
query11	0.19	0.14	0.13
query12	0.18	0.14	0.15
query13	0.47	0.47	0.46
query14	1.02	1.01	1.01
query15	0.61	0.60	0.60
query16	0.32	0.33	0.31
query17	1.10	1.13	1.11
query18	0.22	0.21	0.21
query19	2.02	2.00	1.96
query20	0.02	0.01	0.02
query21	15.43	0.22	0.14
query22	4.88	0.05	0.04
query23	16.13	0.30	0.13
query24	2.96	0.40	0.31
query25	0.10	0.05	0.05
query26	0.73	0.21	0.16
query27	0.05	0.04	0.03
query28	3.52	0.90	0.52
query29	12.59	4.06	3.22
query30	0.27	0.16	0.15
query31	2.77	0.59	0.31
query32	3.21	0.59	0.50
query33	3.10	3.15	3.24
query34	15.54	4.28	3.55
query35	3.50	3.54	3.54
query36	0.57	0.44	0.45
query37	0.10	0.07	0.06
query38	0.06	0.04	0.04
query39	0.03	0.03	0.03
query40	0.19	0.16	0.16
query41	0.08	0.03	0.03
query42	0.04	0.02	0.02
query43	0.04	0.04	0.04
Total cold run time: 96.42 s
Total hot run time: 24.76 s

@liaoxin01
liaoxin01 merged commit c8b4a1c into apache:master Jul 31, 2026
33 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by one committer. dev/4.1.x dev/4.1.x-conflict

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants