Skip to content

[improvement](build) Run Parquet microbenchmarks in performance CI - #65936

Draft
hello-stephen wants to merge 19 commits into
masterfrom
ci/parquet-microbenchmark-performance
Draft

[improvement](build) Run Parquet microbenchmarks in performance CI#65936
hello-stephen wants to merge 19 commits into
masterfrom
ci/parquet-microbenchmark-performance

Conversation

@hello-stephen

@hello-stephen hello-stephen commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Related PR: #65921

The native Parquet decoder and reader microbenchmark matrix is available in the
repository, but the community performance admission pipeline neither runs it
nor rejects a PR that causes a measurable regression.

What is changed?

  • Keep execution in a dedicated parquet-microbenchmark TeamCity step after
    compile and before deploy.
  • Build FE, BE, and the PR benchmark in the existing performance compile. Reuse
    that benchmark as the head binary, then build only the benchmark target once
    for the exact base SHA in a detached worktree.
  • Add a benchmark-only build.sh --benchmark --output ... path. This is why
    build.sh and the BE CMake files change: the base comparison does not need a
    second doris_be executable.
  • Use Docker only to reproduce the existing performance toolchain and runtime
    dependencies. Both binaries run sequentially on the same TeamCity agent and
    pinned CPU.
  • Smoke every discovered PR benchmark (the validated build found 228 decoder
    and 167 reader cases), with minimum-count guards for matrix truncation.
  • Run 22 representative decoder/reader canaries in ABBA order
    (base -> PR -> PR -> base), with warmup and five repetitions per phase.
  • Compare median ns/raw_row; require identical raw_rows and selected_rows
    counters before results are comparable.
  • Keep policy in JSON and publish base/head SHAs, build logs, case lists, all
    raw phases, machine-readable comparison JSON, and a Markdown summary.
  • Support both Python 2 and Python 3 because the current performance image
    provides Python 2.

Admission policy

A case blocks the PR only when all of these conditions hold:

  • base and PR coefficient of variation are both at most 3%;
  • the PR median regresses by at least 15%;
  • the bootstrap 95% confidence interval lower bound is at least 10%;
  • both ABBA halves independently regress by at least 10%.

A stable 5%-15% regression is reported as a warning. If an apparent regression
of at least 5% exceeds the 3% CV limit, the complete ABBA measurement is retried
once; if it remains inconclusive, the performance step fails as a
measurement/infrastructure failure instead of treating the PR as healthy.
Other unstable cases are reported as noisy.

The full-matrix smoke run is an executability gate only and is not used for a
performance verdict.

After collecting 20-30 clean same-revision A/A runs, the global threshold can be
replaced by per-case thresholds derived from observed noise, for example
max(5%, p99 A/A noise + 2 percentage points).

Cache cost decision

The trusted validation measured one benchmark_test at 5.97 GB raw and 2.305 GB
with gzip level 1. Compressing the head and base binaries took 249 seconds in
total, while rebuilding the benchmark-only base on the existing remote ccache
took about 6 minutes. A separate binary cache would therefore add a 2.305 GB
artifact per base plus transfer, decompression, keying, and retention logic to
save at most about 6 minutes on a hit. This PR keeps the existing ccache and
does not add a second binary cache. The one-off compression measurement was
removed from the final gate, reducing the microbenchmark step from 13m08s to
8m59s.

Validation

Trusted TeamCity PerformanceTmp build:

  • Build: http://43.132.222.7:8111/viewLog.html?buildId=1008489&buildTypeId=Doris_DorisPerformance_PerformanceTmp
  • Terminal result: finished / SUCCESS
  • PR revision: 39a54af30babc56f08fdd411176f6515de91597c
  • Pinned base: 042e613b1347540e4baf9dc7a395f7009f2a451e
  • Compile: 16m12s with warm ccache; Parquet step: 8m59s; whole pipeline: 36m00s
  • Smoke: 228 decoder and 167 reader cases
  • Canary verdicts: 21 PASS, 1 NOISY, 0 warning, 0 failure
  • Largest measured regression: +2.16%; the noisy case had base CV 3.27% and
    remained below the 5% suspicious-regression threshold
  • The Parquet gate and every following performance step exited successfully

The formal Doris_DorisPerformance_Performance configuration remains unchanged.
Only Doris_DorisPerformance_PerformanceTmp has the ninth
parquet-microbenchmark step for this validation. Formal promotion should
follow A/A calibration and explicit pipeline-owner review.

Check List (For Author)

  • Shell syntax checks for the modified performance pipeline scripts
  • Python 2 grammar and Python 3 syntax checks
  • Comparator pass/regression/inconclusive behavior tests
  • Verified all 22 canary names against the expanded matrix
  • git diff --check
  • Added parquet-microbenchmark after compile and before deploy in PerformanceTmp
  • Final-PR-SHA terminal TeamCity validation
  • Collect 20-30 A/A samples before formal Performance promotion

### What problem does this PR solve?

Issue Number: N/A

Related PR: #65921

Problem Summary: The native Parquet decoder and reader benchmark matrix added by #65921 is not built or executed by the community performance admission pipeline. Build the Release benchmark target after the normal performance artifacts, execute all 152 decoder and 137 reader cases as a 1 ms smoke gate, validate the JSON outputs, and publish the raw results as TeamCity artifacts. The smoke samples are diagnostic only and are not treated as performance regression measurements.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - `bash -n` for the three performance pipeline scripts
    - Stubbed benchmark runner validation for the 152/137 case counts and JSON checks
    - `git diff --check`
- Behavior changed: Yes. The community performance pipeline now builds and smoke-runs the native Parquet microbenchmark matrix.
- Does this need documentation: No
@hello-stephen

Copy link
Copy Markdown
Contributor Author

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?

@hello-stephen

Copy link
Copy Markdown
Contributor Author

run performance

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Security Notice: This PR modifies pipeline scripts that are executed by TeamCity with credentials access (ak/sk, tokens, etc.).

To prevent injection attacks, single test triggers (run p0, run feut, etc.) are blocked when pipeline scripts are modified.

Please review the pipeline script changes carefully. If they are safe, a committer can use run buildall to explicitly acknowledge and trigger the pipeline.

### What problem does this PR solve?

Issue Number: N/A

Related PR: #65921

Problem Summary: The initial integration executed the native Parquet microbenchmark matrix inside the performance compile step. That mixed benchmark runtime failures with compilation failures and hid the benchmark duration and artifacts inside the compile stage. Keep only the Release benchmark target build in compile so it can reuse the existing toolchain and dependency setup, and move execution into a dedicated TeamCity step between compile and deploy.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - `bash -n` for the performance compile and microbenchmark scripts
    - Stubbed container-side validation for all 152 decoder and 137 reader results
    - `git diff --check`
- Behavior changed: Yes. Parquet microbenchmark execution now has an independent performance pipeline step.
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: N/A

Related PR: #65921

Problem Summary: The dedicated Parquet microbenchmark step used the triggering commit as a Docker name fallback. Make that fallback safe when the runner is invoked manually outside TeamCity parameters.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - `bash -n regression-test/pipeline/performance/run-parquet-microbenchmark.sh`
    - `git diff --check`
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: close #65936

Related PR: #65921

Problem Summary: The performance tmp validation built the shared benchmark_test target with GCC and failed before the Parquet step because a pre-existing binary_cast memcpy warning was promoted to an error. Apply the GCC-specific warning downgrade only inside the Parquet benchmark build helper so the base and PR benchmark binaries use identical flags while all other Doris targets retain strict warnings.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - bash syntax, ShellCheck, and git diff checks
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: close #65936

Related PR: #65921

Problem Summary: A clean target-branch worktree successfully built benchmark_test but build.sh --benchmark --output then failed while copying full BE bin files that benchmark-only builds do not produce. Export only the benchmark binary for benchmark builds so both the PR and base revisions can be packaged from clean worktrees.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - bash syntax, build.sh help, ShellCheck, and git diff checks
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: close #65936

Related PR: #65921

Problem Summary: Repeated calibration builds could start minutes apart and merge the PR onto different target-branch revisions, making cross-run noise estimates incomparable. Allow calibration jobs to provide a validated target-branch ancestor SHA while preserving the existing latest-target behavior when the variable is absent.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - bash syntax, pinned SHA ancestry, and git diff checks
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: close #xxx

Related PR: #65921

Problem Summary: The performance runtime image does not contain jq, so the Parquet microbenchmark step exited before smoke execution even though the benchmark binaries built successfully. Validate the smoke JSON with Python 3, which is already required by the comparison tool, and suppress shell tracing while publishing the TeamCity artifact service message so it is parsed only once.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - bash syntax, Python validator positive and negative fixtures, and git diff checks
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: close #xxx

Related PR: #65921

Problem Summary: The current performance build image provides Python 2.7 but neither jq nor a python3 command. The Parquet microbenchmark therefore exited before smoke execution after both benchmark binaries had built successfully. Make the JSON validator and ABBA comparator run on both Python 2.7 and Python 3, preferring python3 when available and falling back to python without changing the gate policy.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - Shell syntax and Python 3 bytecode compilation
    - Python 2 grammar parsing with 2to3
    - Synthetic PASS and stable 20% regression cases
    - Comparator JSON parity within 1e-12 and byte-identical Markdown output
- Behavior changed: Yes, the performance gate now runs in the current Python 2.7 build image
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: close #xxx

Related PR: #65921

Problem Summary: The Parquet benchmark binaries link against libjvm.so, but the runtime build container does not include the JDK server library directory in its dynamic linker path. The benchmark therefore exited before listing or running any smoke cases. Locate libjvm.so from the container JDK and prepend its directory to LD_LIBRARY_PATH before executing either benchmark binary.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - Shell syntax, linker-path construction with empty and existing LD_LIBRARY_PATH, and git diff checks
- Behavior changed: Yes, the benchmark binary can resolve libjvm.so in the performance runtime container
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: close #xxx

Related PR: #65921

Problem Summary: The current native Parquet benchmark registers 228 decoder and 167 reader cases, while the CI runner still required the earlier exact 152 and 137 counts. Reader benchmark names also gained an explicit value-type dimension. Keep the original counts as minimum coverage floors, validate every currently registered case in the smoke run, report the actual counts, and update the 11 reader performance canaries to their current int32 names.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - Verified all 22 gate canaries against build 1006730 cases.txt
    - Verified the unique 228/167 matrix satisfies the 152/137 coverage floors
    - Shell syntax and git diff checks
- Behavior changed: Yes, legitimate benchmark matrix additions are included in smoke instead of failing an exact stale count
- Does this need documentation: No
@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17668	4093	4092	4092
q2	2115	314	204	204
q3	10252	1383	818	818
q4	4691	470	337	337
q5	7491	852	571	571
q6	180	174	134	134
q7	781	807	610	610
q8	9320	1536	1493	1493
q9	5583	4358	4322	4322
q10	6773	1710	1473	1473
q11	505	342	313	313
q12	733	575	447	447
q13	18180	3406	2710	2710
q14	266	261	250	250
q15	q16	791	787	701	701
q17	1019	1076	911	911
q18	6944	5812	5529	5529
q19	1310	1247	1038	1038
q20	778	664	588	588
q21	5959	2532	2375	2375
q22	435	355	304	304
Total cold run time: 101774 ms
Total hot run time: 29220 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4345	4276	4284	4276
q2	287	318	213	213
q3	4564	4978	4362	4362
q4	2041	2157	1378	1378
q5	4347	4223	4206	4206
q6	226	177	127	127
q7	1758	1640	1907	1640
q8	2641	2249	2109	2109
q9	7964	8133	7562	7562
q10	4644	4671	4261	4261
q11	587	414	381	381
q12	760	756	531	531
q13	3194	3591	2926	2926
q14	313	317	285	285
q15	q16	715	720	650	650
q17	1356	1330	1351	1330
q18	8055	7127	7484	7127
q19	1151	1175	1150	1150
q20	2194	2184	1925	1925
q21	5225	4552	4373	4373
q22	521	466	404	404
Total cold run time: 56888 ms
Total hot run time: 51216 ms

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17621	4065	4039	4039
q2	2078	326	215	215
q3	10236	1450	866	866
q4	4681	468	338	338
q5	7511	851	579	579
q6	182	171	138	138
q7	746	816	608	608
q8	9337	1503	1569	1503
q9	5542	4348	4334	4334
q10	6750	1715	1491	1491
q11	516	347	329	329
q12	727	582	444	444
q13	18150	3408	2679	2679
q14	261	260	245	245
q15	q16	785	780	719	719
q17	1037	966	960	960
q18	7219	5986	5569	5569
q19	1310	1201	1039	1039
q20	817	673	604	604
q21	5888	2627	2470	2470
q22	433	359	301	301
Total cold run time: 101827 ms
Total hot run time: 29470 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4496	4330	4352	4330
q2	294	322	218	218
q3	4585	4981	4439	4439
q4	2078	2137	1383	1383
q5	4375	4310	4340	4310
q6	230	176	127	127
q7	1759	1963	1774	1774
q8	2575	2200	2243	2200
q9	7954	8027	7747	7747
q10	4721	4647	4200	4200
q11	574	435	418	418
q12	771	745	560	560
q13	3244	3573	2960	2960
q14	321	305	294	294
q15	q16	732	753	646	646
q17	1379	1330	1333	1330
q18	8380	7457	7237	7237
q19	1175	1129	1125	1125
q20	2198	2203	1940	1940
q21	5272	4598	4402	4402
q22	506	470	425	425
Total cold run time: 57619 ms
Total hot run time: 52065 ms

@hello-stephen

Copy link
Copy Markdown
Contributor Author
TPC-DS: Total hot run time: 177419 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 0cfc9fc4e6ba5c48d5e27604d6d2f9ee12b0d777, data reload: false

query5	4339	627	507	507
query6	480	223	213	213
query7	4885	625	341	341
query8	342	181	166	166
query9	8774	4010	4022	4010
query10	475	367	309	309
query11	5940	2331	2118	2118
query12	164	105	100	100
query13	1248	583	428	428
query14	6257	5169	4851	4851
query14_1	4210	4187	4200	4187
query15	222	203	197	197
query16	1048	471	441	441
query17	1132	741	589	589
query18	2719	480	357	357
query19	217	199	160	160
query20	113	112	118	112
query21	235	168	140	140
query22	13522	13564	13302	13302
query23	17531	16557	16156	16156
query23_1	16351	16243	16271	16243
query24	7577	1784	1268	1268
query24_1	1299	1293	1300	1293
query25	571	468	390	390
query26	1363	381	220	220
query27	2508	597	372	372
query28	4341	1981	1963	1963
query29	1094	640	504	504
query30	344	266	249	249
query31	1118	1094	983	983
query32	122	72	73	72
query33	532	324	259	259
query34	1159	1137	640	640
query35	782	780	663	663
query36	1218	1189	1070	1070
query37	159	96	127	96
query38	1864	1696	1621	1621
query39	899	880	850	850
query39_1	821	826	845	826
query40	242	169	141	141
query41	66	63	65	63
query42	93	88	92	88
query43	323	322	281	281
query44	1417	760	747	747
query45	195	188	167	167
query46	1080	1197	701	701
query47	2141	2182	2030	2030
query48	402	389	298	298
query49	591	417	325	325
query50	1062	432	360	360
query51	11105	11115	10989	10989
query52	87	85	75	75
query53	269	271	209	209
query54	295	233	222	222
query55	75	70	65	65
query56	298	310	289	289
query57	1319	1271	1199	1199
query58	300	272	266	266
query59	1558	1679	1430	1430
query60	299	262	261	261
query61	159	157	151	151
query62	553	496	438	438
query63	241	202	199	199
query64	2775	1034	864	864
query65	4695	4638	4614	4614
query66	1795	503	429	429
query67	29205	29106	29031	29031
query68	3094	1614	1031	1031
query69	406	301	257	257
query70	1053	948	953	948
query71	358	349	310	310
query72	2995	2417	2352	2352
query73	807	754	434	434
query74	5080	4870	4670	4670
query75	2521	2482	2105	2105
query76	2309	1152	780	780
query77	356	365	269	269
query78	11778	11875	11144	11144
query79	1366	1118	733	733
query80	1315	536	464	464
query81	523	346	288	288
query82	617	151	121	121
query83	375	315	302	302
query84	282	156	130	130
query85	966	601	513	513
query86	457	293	293	293
query87	1811	1826	1736	1736
query88	3698	2794	2761	2761
query89	455	386	330	330
query90	2075	196	192	192
query91	202	188	158	158
query92	63	60	53	53
query93	1740	1508	1012	1012
query94	745	350	320	320
query95	798	587	462	462
query96	1113	811	346	346
query97	2634	2605	2507	2507
query98	209	205	201	201
query99	1080	1111	975	975
Total cold run time: 264218 ms
Total hot run time: 177419 ms

@hello-stephen

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

query1	0.01	0.00	0.00
query2	0.10	0.05	0.04
query3	0.26	0.13	0.15
query4	1.60	0.14	0.13
query5	0.24	0.22	0.22
query6	1.26	1.07	1.06
query7	0.03	0.01	0.01
query8	0.06	0.03	0.04
query9	0.37	0.31	0.31
query10	0.57	0.56	0.60
query11	0.20	0.14	0.14
query12	0.17	0.14	0.14
query13	0.47	0.48	0.47
query14	1.01	0.99	1.00
query15	0.61	0.59	0.60
query16	0.32	0.34	0.30
query17	1.07	1.12	1.13
query18	0.21	0.20	0.20
query19	2.01	1.97	1.89
query20	0.02	0.01	0.01
query21	15.44	0.24	0.13
query22	4.66	0.05	0.06
query23	16.11	0.30	0.13
query24	3.06	0.42	0.32
query25	0.12	0.04	0.05
query26	0.74	0.21	0.16
query27	0.05	0.04	0.03
query28	3.49	0.91	0.58
query29	12.51	4.18	3.33
query30	0.28	0.15	0.16
query31	2.77	0.59	0.31
query32	3.22	0.59	0.48
query33	3.12	3.28	3.31
query34	15.47	4.30	3.52
query35	3.51	3.55	3.55
query36	0.55	0.44	0.44
query37	0.08	0.06	0.07
query38	0.05	0.04	0.04
query39	0.05	0.03	0.03
query40	0.18	0.16	0.15
query41	0.08	0.03	0.03
query42	0.04	0.02	0.02
query43	0.04	0.03	0.03
Total cold run time: 96.21 s
Total hot run time: 25.2 s

@hello-stephen

Copy link
Copy Markdown
Contributor Author
TPC-DS: Total hot run time: 176852 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 0cfc9fc4e6ba5c48d5e27604d6d2f9ee12b0d777, data reload: false

query5	4315	640	506	506
query6	502	233	204	204
query7	4847	570	354	354
query8	347	198	173	173
query9	8795	4096	4027	4027
query10	505	360	316	316
query11	5973	2355	2111	2111
query12	158	107	104	104
query13	1270	603	436	436
query14	6254	5205	4907	4907
query14_1	4255	4252	4231	4231
query15	215	206	177	177
query16	995	478	455	455
query17	986	670	562	562
query18	2428	466	338	338
query19	202	185	142	142
query20	108	107	104	104
query21	234	159	136	136
query22	13560	13614	13451	13451
query23	17362	16397	16169	16169
query23_1	16230	16269	16236	16236
query24	7486	1716	1288	1288
query24_1	1292	1274	1275	1274
query25	537	445	357	357
query26	1317	352	212	212
query27	2643	627	397	397
query28	4498	1992	2013	1992
query29	1073	603	482	482
query30	342	269	228	228
query31	1121	1089	983	983
query32	107	63	62	62
query33	501	320	248	248
query34	1174	1153	626	626
query35	794	763	659	659
query36	1217	1197	1041	1041
query37	153	105	89	89
query38	1868	1716	1632	1632
query39	864	871	858	858
query39_1	829	843	831	831
query40	268	166	145	145
query41	71	68	72	68
query42	97	93	88	88
query43	325	323	279	279
query44	1426	763	769	763
query45	200	206	175	175
query46	1063	1186	743	743
query47	2139	2153	2017	2017
query48	417	391	292	292
query49	604	429	312	312
query50	1105	439	329	329
query51	10855	10984	10909	10909
query52	88	91	78	78
query53	257	282	206	206
query54	307	254	232	232
query55	78	72	72	72
query56	322	301	319	301
query57	1321	1316	1234	1234
query58	300	276	261	261
query59	1581	1635	1409	1409
query60	321	286	282	282
query61	182	175	174	174
query62	555	504	439	439
query63	249	207	203	203
query64	3005	1159	852	852
query65	4678	4639	4628	4628
query66	1837	506	380	380
query67	29206	29159	28428	28428
query68	3328	1558	903	903
query69	413	309	271	271
query70	1073	946	948	946
query71	360	330	314	314
query72	3022	2783	2377	2377
query73	801	826	425	425
query74	5086	4922	4699	4699
query75	2529	2512	2156	2156
query76	2361	1163	769	769
query77	351	381	281	281
query78	11896	11927	11329	11329
query79	2622	1189	732	732
query80	1706	547	469	469
query81	558	327	286	286
query82	620	156	120	120
query83	369	326	294	294
query84	334	154	136	136
query85	997	606	518	518
query86	429	288	282	282
query87	1834	1814	1754	1754
query88	3753	2798	2766	2766
query89	434	386	324	324
query90	1900	199	204	199
query91	205	195	161	161
query92	61	61	57	57
query93	1771	1542	926	926
query94	744	359	323	323
query95	805	503	481	481
query96	1078	824	343	343
query97	2652	2658	2495	2495
query98	220	209	215	209
query99	1110	1111	978	978
Total cold run time: 266139 ms
Total hot run time: 176852 ms

@hello-stephen

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

query1	0.01	0.01	0.01
query2	0.09	0.06	0.05
query3	0.25	0.14	0.13
query4	1.60	0.14	0.14
query5	0.24	0.23	0.23
query6	1.25	1.05	1.05
query7	0.04	0.01	0.01
query8	0.05	0.04	0.04
query9	0.39	0.31	0.30
query10	0.59	0.55	0.55
query11	0.19	0.14	0.14
query12	0.18	0.15	0.14
query13	0.46	0.47	0.46
query14	1.02	1.00	1.01
query15	0.62	0.62	0.60
query16	0.31	0.31	0.32
query17	1.11	1.08	1.12
query18	0.25	0.22	0.22
query19	2.00	1.94	1.94
query20	0.01	0.02	0.01
query21	15.44	0.23	0.14
query22	4.78	0.05	0.05
query23	16.12	0.30	0.12
query24	2.95	0.43	0.31
query25	0.12	0.06	0.04
query26	0.75	0.21	0.15
query27	0.05	0.04	0.03
query28	3.48	0.90	0.53
query29	12.48	4.20	3.32
query30	0.27	0.15	0.16
query31	2.76	0.58	0.32
query32	3.23	0.59	0.49
query33	3.13	3.27	3.15
query34	15.52	4.26	3.53
query35	3.56	3.54	3.49
query36	0.56	0.44	0.41
query37	0.09	0.07	0.07
query38	0.05	0.04	0.03
query39	0.04	0.03	0.03
query40	0.18	0.17	0.16
query41	0.09	0.04	0.04
query42	0.03	0.03	0.03
query43	0.04	0.04	0.04
Total cold run time: 96.38 s
Total hot run time: 25.04 s

### What problem does this PR solve?

Issue Number: close #65936

Related PR: #65921

Problem Summary: The Parquet performance integration mixed Docker orchestration, matrix smoke validation, ABBA execution, retry policy, and threshold configuration in one shell script, and rebuilt the PR benchmark after the normal performance compile. Keep the shell step as a thin container and artifact wrapper, move the test workflow into a Python 2/3 runner, centralize cases and policy in JSON, build doris_be and benchmark_test together for the PR revision, and record raw and gzip-level-1 binary sizes for cache sizing. The target-branch benchmark remains an exact-SHA build; no shared binary cache is enabled before reuse data is available.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - Shell syntax for build and performance pipeline scripts
    - Python 3 bytecode compilation and Python 2 grammar parsing
    - Synthetic PASS, stable 20% regression, and persistent INCONCLUSIVE retry paths
    - JSON validation and git diff checks
- Behavior changed: Yes. The performance compile reuses its PR benchmark binary and the gate reports explicit infrastructure versus regression exit codes and binary size metrics.
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: close #65936

Related PR: #65921

Problem Summary: PerformanceTmp injects the liblance_c.a download by matching the existing build.sh --fe --be --clean command. Keep that compatibility anchor while retaining --benchmark as the trailing option, so the injection succeeds and the same build invocation still produces doris_be and benchmark_test.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - Shell syntax and git diff checks
    - Simulated the TeamCity sed injection and verified the resulting command retains --benchmark
- Behavior changed: No
- Does this need documentation: No
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant