Skip to content

[opt](build) 1/4: Speed up BE full build ~22% by cutting hot-header include edges - #66400

Open
morningman wants to merge 17 commits into
apache:masterfrom
morningman:wt-compile-be
Open

[opt](build) 1/4: Speed up BE full build ~22% by cutting hot-header include edges#66400
morningman wants to merge 17 commits into
apache:masterfrom
morningman:wt-compile-be

Conversation

@morningman

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: close #xxx

Related PR: #xxx

Problem Summary:

A cold full BE build spends most of its wall clock re-parsing a handful of
hub headers in nearly every TU. runtime/exec_env.h, runtime/runtime_state.h
and runtime/thread_context.h each reached ~1000 of the ~1400 be/src TUs and
dragged multi-MB include subtrees (thrift/protobuf type universes, the AWS SDK
surface, the workload_management family) into every one of them.

This PR adds a measurement harness and then cuts the high-payload include
edges from those hub headers, in four prepare+cut commit pairs. Measured with
the included bench mode (cold, cache-free, -j5, Apple M5 Pro, clang 20):

wave build wall delta
baseline 38m54s
workload_group isolation 35m33s -8.4%
file cache / frontend info / cluster info out of exec_env.h 32m34s -8.3%
olap_file.pb / threadpool / options out of exec_env.h 32m40s neutral (incremental blast-radius + guards)
s3_file_system / resource_context / data.pb out of runtime_state.h + thread_context.h 30m21s -7.1%

Total: 39m21s -> 30m48s wall (-21.7%). Per-file compare shows 672-1065
files faster per wave and zero per-file compile-time regressions.

Key touch-count reductions (TUs that stop parsing a header):
FrontendService_types.h 1086->459, BackendService_types.h ->225,
io/fs/s3_file_system.h + AWS SDK 769->58, gen_cpp/cloud.pb.h ->192,
workload_management/resource_context.h 1015->214, gen_cpp/data.pb.h ->443,
util/threadpool.h -515 TUs, storage/options.h -837 TUs.

What is in the series (10 commits, meant to be read pairwise):

  1. build.sh --compile-bench: cold cache-free BE bench with per-TU
    wall/user/maxrss capture, report and A/B compare tooling
    (build-support/compile-bench/)
  2. include-edge analysis tools: cut_impact.py (blast-radius and reseed
    estimation from ninja -t deps + parsed include graph) and
    syntax_sweep.py (parallel -fsyntax-only replay of all TUs)
  3. four prepare+cut pairs. Every "prepare" commit is pure-additive (forward
    declarations, out-of-line sinks of cold method bodies, direct includes for
    TUs that free-rode the edge about to be cut); every "cut" commit only
    removes the edges and locks them with new rules in
    build-support/check-header-deps.py (15 rules total), so none of the
    cut edges can silently return.

The only code moved out of line: assigning ThreadPool setters,
ThreadContext::attach_task, the orphan ResourceContext fallback of
resource_ctx() (hot attached path stays inline), ScanTask ctor/dtor and
DataTypeTimeStampTz::to_pb_column_meta -- all cold paths.

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
      • build-support/compile-bench/syntax_sweep.py: 1358/1358 be/src TUs
        pass -fsyntax-only after every cut wave
      • build-support/check-header-deps.py: 15/15 layering rules pass
      • full sh build.sh --compile-bench builds succeed after every wave
        (five complete cold builds); per-file A/B compare via
        build-support/compile-bench/report.py compare <old> <new> shows
        zero compile-time regressions
    • 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.
  • 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

🤖 Generated with Claude Code

morningman and others added 10 commits August 3, 2026 13:00
Add a timing framework to locate where BE build time goes:

- build.sh --compile-bench: cold, cache-free, BE-only benchmark build.
  Uses a dedicated build dir (recreated every run), disables ccache by
  replacing the compiler launcher with a timing wrapper, skips FE/cloud/
  java-extensions/packaging, and records per-phase timings (gensrc,
  submodules, configure, build).
- build-support/compile-bench/cc-timing-wrapper.py: compiler/linker
  launcher that records wall/user/sys time and peak RSS per invocation
  with exit codes and diagnostics passed through untouched.
- build-support/compile-bench/report.py: generates report.txt and
  summary.json per run (slowest TUs, per-directory rollups, critical-path
  tail from .ninja_log, optional clang -ftime-trace aggregation of header
  parse and template instantiation costs; handles both clang<20 complete
  Source events and clang>=20 begin/end pairs), plus a compare subcommand
  to quantify the effect of changes between two runs.
- COMPILE_BENCH_TRACE=ON additionally compiles with -ftime-trace.

Results land in be/compile-bench-results/<timestamp>/ (gitignored).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
cut_impact.py: simulate removing one or more #include edges against the real
ninja dep closure of the last bench build. Reports which TUs lose which
headers, which files textually reference lost symbols (seeding advice), and
supports edge / audit / why subcommands.

syntax_sweep.py: parallel -fsyntax-only replay of compile_commands.json to
validate include-structure changes across every TU without touching the ninja
build state.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ne sinks

Pure-additive preparation so that workload_group.h (which carries
gen_cpp/BackendService_types.h — the whole thrift type universe — plus
backend_options.h and network_util.h) can later be cut out of the hot headers
that reach ~1000 TUs. No include edge is removed in this commit and there is
no behavior change:

- Add runtime/workload_group/workload_group_fwd.h; move the WorkloadGroupPtr
  alias there (workload_group.h now includes it)
- Sink ThreadMemTrackerMgr::try_reserve/shrink_reserved bodies to the .cpp
  (they dereference WorkloadGroup in inline code)
- Sink MemTableWriter::workload_group_id() body to the .cpp (same reason)
- Forward-declare QueryContext / TQueryStatistics / TReportExecStatusParams
  in the headers that were freeloading the declarations transitively
- Seed direct includes (workload_group.h / backend_options.h /
  FrontendService_types.h) into every TU that actually uses those types but
  received them only through the soon-to-be-cut chains, including the
  LIMIT_LOCAL_SCAN_IO / LIMIT_REMOTE_SCAN_IO macro expansion sites

Verified with build-support/compile-bench/syntax_sweep.py: 1358/1358 TUs pass
-fsyntax-only with the full patch series applied.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Cut nine include edges that spread the thrift type universe and the schema
scanner stack into nearly every TU (all seeds landed in the previous commit;
this commit only removes edges and locks them):

- exec_env.h: drop information_schema/schema_routine_load_job_scanner.h.
  Zero references in exec_env.h (RoutineLoadTaskExecutor is already
  forward-declared); the line was carried over mechanically in 2eef794.
- Swap workload_group.h -> workload_group_fwd.h in thread_mem_tracker_mgr.h,
  resource_context.h, runtime_state.h, query_context.h and
  memtable_memory_limiter.h (signature-only users).
- Drop dead workload_group.h includes from cpu_context.h, task_scheduler.h
  and vdata_stream_recvr.h (zero references).
- Add three check-header-deps.py rules so the edges cannot silently return:
  exec_env.h !-> information_schema/, thread_context.h !-> workload_group/,
  runtime_state.h !-> workload_group/.

Simulated against the last compile-bench dependency graph (cut_impact.py):
workload_group.h leaves 1051 TUs; backend_options.h 979; network_util.h 975;
BackendService/DorisExternalService_types.h 865; FrontendService/
MasterService_types.h 638; schema scanner headers ~1050.

Verified with syntax_sweep.py: 1358/1358 TUs pass -fsyntax-only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pure-additive preparation so that four include edges can later be cut from
runtime/exec_env.h, which reaches ~1060 TUs: io/cache/fs_file_cache_storage.h
(carries gen_cpp/internal_service.pb.h, descriptors.pb.h and the io/fs
family), runtime/frontend_info.h (carries gen_cpp/HeartbeatService_types.h
and AgentService_types.h), runtime/cluster_info.h and
load/memtable/memtable_memory_limiter.h. No include edge is removed in this
commit and there is no behavior change:

- exec_env.h: forward-declare io::FDCache, MemTableMemoryLimiter,
  ClusterInfo, FrontendInfo and the thrift-generated TFrontendInfo /
  TNetworkAddress; include <set> directly (init()'s std::set parameter was
  riding on the thrift headers)
- Sink set_file_cache_open_fd_cache / set_memtable_memory_limiter bodies to
  the .cpp: assigning/resetting the unique_ptr destroys the old pointee,
  which would require the complete type in every includer (same reasoning as
  the existing out-of-line set_tmp_file_dir)
- Hold the frontends map behind std::unique_ptr<std::map<...>>: std::map
  requires a complete mapped type, and FrontendInfo embeds TFrontendInfo by
  value; the map is allocated in the (already out-of-line) constructor
- fragment_mgr.h, vdata_stream_recvr.h: forward-declare FrontendInfo /
  PTransmitDataParams (declaration-only uses that freeloaded off exec_env.h)
- format/parquet/parquet_predicate.h, storage/rowset/rowset_writer_context.h:
  include io/fs/file_reader.h / local_file_system.h their inline code
  dereferences
- inverted_index_common_impl.h: wrap <CLucene.h> in a -Wconversion
  suppression; whether its first expansion lands inside someone else's
  suppressed region depends on include order, so suppress it deliberately
- Seed direct includes (runtime/cluster_info.h x44,
  load/memtable/memtable_memory_limiter.h, io/fs/local_file_system.h,
  io/cache/block_file_cache_factory.h, fs_file_cache_storage.h,
  <concurrentqueue.h>) into every TU that uses those types but received
  them only through the soon-to-be-cut chains

Verified with build-support/compile-bench/syntax_sweep.py: 1358/1358 TUs
pass -fsyntax-only with the full patch series applied.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ec_env.h

Cut four include edges from runtime/exec_env.h (all seeds landed in the
previous commit; this commit only removes edges and locks them):

- io/cache/fs_file_cache_storage.h: ExecEnv holds io::FDCache behind a
  unique_ptr with the setter defined out of line, and FileCacheFactory /
  PBackendService_Stub were already forward-declared. Simulated on the
  post-P1.1a dependency graph (cut_impact.py): 1057 TUs stop seeing the
  header; gen_cpp/internal_service.pb.h leaves 656 TUs, descriptors.pb.h
  650, io/fs/local_file_system.h 886, io/fs/file_writer.h 850, the
  block_file_cache family ~526 each
- runtime/frontend_info.h: the frontends map now lives behind a unique_ptr,
  everything else is declaration-only. HeartbeatService_types.h leaves 242
  TUs, AgentService_types.h 214
- load/memtable/memtable_memory_limiter.h (1048 TUs) and
  runtime/cluster_info.h (1056 TUs): pointer/accessor-only uses,
  forward-declared
- Add four check-header-deps.py rules so the edges cannot silently return:
  exec_env.h !-> io/cache/ (except file_cache_common.h, which
  storage/options.h legitimately needs for CachePath), !-> load/memtable/,
  !-> runtime/frontend_info.h, !-> runtime/cluster_info.h

storage/tablet/tablet_fwd.h was audited and deliberately kept: it is a pure
forward-declaration header, cutting it saves nothing.

Verified with build-support/compile-bench/syntax_sweep.py: 1358/1358 TUs
pass -fsyntax-only; build-support/check-header-deps.py: 8/8 rules pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pure-additive preparation so that three include edges can later be cut
from runtime/exec_env.h, which reaches ~1060 TUs: gen_cpp/olap_file.pb.h
(carries olap_common.pb.h), util/threadpool.h (carries thread.h,
common/metrics/metrics.h, agent/cgroup_cpu_ctl.h and the blocking-queue
family) and storage/options.h (carries gen_cpp/Types_types.h and
io/cache/file_cache_common.h). No include edge is removed in this commit
and there is no behavior change:

- exec_env.h: forward-declare ThreadPool, StorePath and CachePath. Every
  pool member is a unique_ptr<ThreadPool> with a .get() accessor, and the
  store paths live in std::vector members behind reference-returning
  accessors, so declarations suffice
- Sink set_non_block_close_thread_pool / set_s3_file_upload_thread_pool
  bodies to the .cpp: assigning the unique_ptr destroys the old pointee,
  which would require ThreadPool to be complete in every includer (same
  reasoning as the existing out-of-line setters); exec_env.cpp includes
  util/threadpool.h directly
- storage/segment/segment.h: include io/cache/file_cache_common.h --
  file_cache_key() returns io::UInt128Wrapper by value
- workload_sched_policy_mgr.h: include <shared_mutex> and forward-declare
  Thread (both rode in through exec_env.h -> util/threadpool.h); the .cpp
  includes util/thread.h for Thread::create
- common/signal_handler.h: include <butil/macros.h> for ARRAYSIZE_UNSAFE
- util/brpc_client_cache.h: include util/defer_op.h for Defer
- function_java_udf.cpp (ThreadPool::submit_func), paimon_jni_reader.cpp
  and wal_manager.cpp (StorePath member access), python_udf_meta.cpp
  (<rapidjson/document.h>): include what their code dereferences

Verified with build-support/compile-bench/syntax_sweep.py: 1358/1358 TUs
pass -fsyntax-only with the full patch series applied.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ec_env.h

Cut three include edges from runtime/exec_env.h (all seeds landed in the
previous commit; this commit only removes edges and locks them):

- gen_cpp/olap_file.pb.h: dead include -- ExecEnv names nothing from it.
  Simulated on the post-P1.2 dependency graph (cut_impact.py): 226 TUs
  stop seeing olap_file.pb.h and olap_common.pb.h
- util/threadpool.h: every pool is a unique_ptr<ThreadPool> with .get()
  accessors, the assigning setters are now out of line. 515 TUs stop
  seeing threadpool.h, agent/cgroup_cpu_ctl.h, work_thread_pool.hpp,
  thread_group.h and the blocking-queue family; util/thread.h leaves 500
  TUs, common/metrics/metrics.h and util/histogram.h leave 248 each
- storage/options.h: StorePath/CachePath appear only inside std::vector
  members and reference-returning accessors, so forward declarations
  suffice. 837 TUs stop seeing options.h; io/cache/file_cache_common.h
  leaves 519 TUs, gen_cpp/Types_types.h stops riding this edge
- check-header-deps.py: also capture angle-bracket <gen_cpp/...> includes
  so a rule can name generated headers; add three rules -- exec_env.h
  !-> util/threadpool.h, !-> storage/options.h and !-> gen_cpp/ (except
  the two carriers of Status, Status_types.h and types.pb.h) -- and drop
  the io/cache/file_cache_common.h exception, which the options.h cut
  makes unnecessary

After the cut, exec_env.h's own include closure is 13 project headers
(config.h, multi_version.h, status.h, tablet_fwd.h and their subtrees).

Verified with build-support/compile-bench/syntax_sweep.py: 1358/1358 TUs
pass -fsyntax-only; build-support/check-header-deps.py: 11/11 rules pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…sinks, seeds

Pure-additive preparation so that three include edges can later be cut
from runtime/runtime_state.h (~1067 TUs) and runtime/thread_context.h
(~1008 TUs): io/fs/s3_file_system.h (carries util/s3_util.h, the AWS SDK
surface and gen_cpp/cloud.pb.h -- 5.8MB of preprocessed payload per TU),
runtime/workload_management/resource_context.h (carries the whole
workload_management family plus gen_cpp/data.pb.h -- 1.4MB) and
runtime/exec_env.h. No include edge is removed in this commit and there
is no behavior change:

- runtime_state.h: forward-declare io::S3FileSystem. _s3_error_fs is a
  shared_ptr member whose every dereference already lives in
  runtime_state.cpp (which already includes s3_file_system.h)
- thread_context.h: forward-declare ResourceContext; sink
  ThreadContext::attach_task to the .cpp (called once per task attach);
  split ThreadContext::resource_ctx() -- the attached hot path stays
  inline (copying a shared_ptr of an incomplete type is legal), the
  orphan fallback moves out of line as _make_orphan_resource_ctx(),
  which was the only place this header dereferenced ResourceContext and
  ExecEnv outside macro bodies
- thread_context.cpp: include exec_env.h and resource_context.h directly
- scanner_context.h: sink ScanTask ctor/dtor to scanner_context.cpp --
  their bodies dereference ResourceContext via thread_context() and rode
  both thread_context.h and resource_context.h transitively;
  forward-declare ResourceContext for the shared_ptr members
- data_type_timestamptz.h: sink to_pb_column_meta to the .cpp -- its
  body dereferences PColumnMeta, which rode in through
  resource_context.h -> gen_cpp/data.pb.h
- LIMIT_LOCAL/REMOTE_SCAN_IO expansion sites (buffered_reader.cpp,
  local_file_reader.cpp, s3_file_reader.cpp, hdfs_file_reader.cpp,
  peer_file_cache_reader.cpp): include resource_context.h (and
  io_throttle.h where missing) -- the macros dereference
  resource_ctx()->workload_group() at the expansion point
- vectorized_agg_fn.h (ENABLE_FACTORY_CREATOR needs
  common/factory_creator.h), query_cache.h (TScanRangeParams /
  TQueryCacheParam need gen_cpp/PaloInternalService_types.h and
  QueryCache_types.h), function_java_udf.cpp (<future> for
  std::packaged_task, which rode the AWS SDK headers), memtable.cpp /
  memtable_flush_executor.cpp / memtable_writer.cpp (ResourceContext
  dereferences): include what the code actually uses instead of riding
  the soon-to-be-cut edges

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…hot headers

Cut four include edges (all seeds landed in the previous commit; this
commit only removes edges and locks them). Edge priority came from
differential payload measurement: preprocess a probe TU with and without
each edge and rank by affected-TUs x payload-bytes -- which also showed
that the other fat-looking edges of these two headers
(thread_mem_tracker_mgr.h at 1006 TUs, task_execution_context.h at 635,
debug_util.h at 746) share their whole subtree with other paths and are
not worth cutting (0.00-0.03MB differential):

- runtime_state.h -/-> io/fs/s3_file_system.h: _s3_error_fs is a
  forward-declared shared_ptr, dereferenced only in runtime_state.cpp.
  Differential payload 5.8MB of preprocessed source per TU; on the
  post-P1.3 graph 711 TUs stop seeing s3_file_system.h, util/s3_util.h
  and cpp/aws_common.h (685 TUs, the AWS SDK surface),
  obj_storage_client.h (683), token_bucket_rate_limiter.h (684),
  gen_cpp/cloud.pb.h (585) and io/fs/remote_file_system.h (414).
  runtime_state.h's preprocessed size drops 22.1MB -> 16.3MB
- thread_context.h -/-> runtime/workload_management/resource_context.h:
  ResourceContext is forward-declared; attach_task and the orphan
  fallback are out of line. Differential payload 1.4MB; 809 TUs stop
  seeing the workload_management family (resource/cpu/io/memory context,
  task_controller, io_throttle), 586 stop seeing gen_cpp/data.pb.h and
  189 stop seeing gen_cpp/PaloInternalService_types.h.
  thread_context.h's preprocessed size drops 16.5MB -> 15.1MB
- thread_context.h -/-> runtime/exec_env.h: after the resource_ctx()
  split the header only names ExecEnv inside macro bodies, which expand
  at call sites (audit: zero TUs lose exec_env.h through this cut --
  every includer has another path; the edge only cost graph structure).
  The transitive path via thread_mem_tracker_mgr.h remains, so no
  layering rule is added for this edge
- resource_context.h -/-> gen_cpp/data.pb.h: dead include -- the header
  references no data.pb symbol (TQueryStatistics is thrift and already
  forward-declared). Independently of the thread_context cut, 595 TUs
  stop seeing data.pb.h (and 26 gen_cpp/segment_v2.pb.h) through this
  edge
- check-header-deps.py: four new rules -- runtime_state.h !->
  io/fs/s3_file_system.h; thread_context.h !->
  runtime/workload_management/; thread_context.h !-> gen_cpp/ (except
  the six status/types/profile carriers Status_types.h, types.pb.h,
  Types_types.h, Metrics_types.h, RuntimeProfile_types.h,
  runtime_profile.pb.h); resource_context.h !-> gen_cpp/data.pb.h

Verified with build-support/compile-bench/syntax_sweep.py: 1358/1358 TUs
pass -fsyntax-only; build-support/check-header-deps.py: 15/15 rules pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@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?

@morningman morningman changed the title [opt](build) Speed up BE full build ~22% by cutting hot-header include edges [opt](build) 1/4: Speed up BE full build ~22% by cutting hot-header include edges Aug 3, 2026
@morningman

Copy link
Copy Markdown
Contributor Author

run buildall

Header slimming cut the transitive include chain that used to bring
<condition_variable> into global_memory_arbitrator.h on Linux libstdc++
(macOS libc++ provides it transitively via <mutex>/<thread>, which is
why local builds passed). Add the std headers each file uses directly;
also fix six more headers with the same latent issue.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@morningman

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17584	4016	4025	4016
q2	2008	323	200	200
q3	10315	1447	825	825
q4	4684	466	336	336
q5	7504	832	569	569
q6	179	170	138	138
q7	751	805	604	604
q8	9322	1453	1566	1453
q9	5323	4109	4084	4084
q10	6778	1646	1347	1347
q11	491	364	321	321
q12	750	584	453	453
q13	18071	3352	2837	2837
q14	270	261	241	241
q15	q16	737	740	672	672
q17	973	1034	929	929
q18	6898	5684	5674	5674
q19	1304	1214	979	979
q20	823	712	583	583
q21	5838	2663	2443	2443
q22	435	354	302	302
Total cold run time: 101038 ms
Total hot run time: 29006 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4260	4198	4191	4191
q2	272	312	202	202
q3	4558	4940	4401	4401
q4	2213	2279	1436	1436
q5	4250	4092	4145	4092
q6	225	175	130	130
q7	1723	1576	1402	1402
q8	2843	2192	2066	2066
q9	7466	7541	7662	7541
q10	4330	4469	3968	3968
q11	579	406	364	364
q12	725	727	513	513
q13	3234	3654	3009	3009
q14	314	318	279	279
q15	q16	682	706	638	638
q17	1307	1304	1275	1275
q18	7831	7205	7140	7140
q19	1136	1133	1131	1131
q20	2197	2202	1903	1903
q21	5235	4615	4435	4435
q22	520	450	403	403
Total cold run time: 55900 ms
Total hot run time: 50519 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 169145 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 70977159e53039d6f0363f4bed41230c43271013, data reload: false

query5	4459	598	474	474
query6	501	230	206	206
query7	4861	598	345	345
query8	334	182	172	172
query9	8792	3967	4011	3967
query10	479	354	311	311
query11	5793	2222	2003	2003
query12	158	100	96	96
query13	1272	565	431	431
query14	6243	4657	4351	4351
query14_1	3827	3780	3813	3780
query15	210	202	183	183
query16	1036	488	461	461
query17	1128	714	561	561
query18	2709	484	354	354
query19	219	192	154	154
query20	108	108	103	103
query21	235	155	132	132
query22	13001	12969	12825	12825
query23	17356	16482	16030	16030
query23_1	16057	16061	16110	16061
query24	7433	1675	1217	1217
query24_1	1250	1253	1205	1205
query25	538	423	343	343
query26	1340	343	205	205
query27	2476	529	383	383
query28	4342	1990	2012	1990
query29	1084	598	463	463
query30	340	260	225	225
query31	1120	1075	956	956
query32	107	59	58	58
query33	519	303	239	239
query34	1174	1104	635	635
query35	714	744	648	648
query36	813	826	713	713
query37	154	105	86	86
query38	1824	1644	1593	1593
query39	820	812	771	771
query39_1	773	797	780	780
query40	245	156	142	142
query41	64	66	61	61
query42	90	94	91	91
query43	311	323	279	279
query44	1400	768	734	734
query45	187	175	164	164
query46	1009	1178	702	702
query47	1531	1546	1439	1439
query48	391	432	260	260
query49	572	397	305	305
query50	1044	425	338	338
query51	10765	10436	10512	10436
query52	88	87	75	75
query53	255	274	195	195
query54	282	226	229	226
query55	74	72	63	63
query56	285	281	272	272
query57	1002	1011	936	936
query58	285	250	258	250
query59	1587	1640	1400	1400
query60	302	265	257	257
query61	157	150	154	150
query62	395	310	276	276
query63	237	196	201	196
query64	2809	1056	899	899
query65	3885	3826	3720	3720
query66	1788	471	361	361
query67	28244	28193	28079	28079
query68	3327	1583	977	977
query69	407	311	257	257
query70	907	811	788	788
query71	380	346	323	323
query72	2978	2627	2304	2304
query73	839	777	427	427
query74	4597	4474	4297	4297
query75	2394	2337	1986	1986
query76	2332	1140	735	735
query77	328	366	270	270
query78	11093	11182	10537	10537
query79	1182	1124	708	708
query80	593	528	439	439
query81	444	325	279	279
query82	232	153	115	115
query83	310	322	290	290
query84	278	156	130	130
query85	906	586	511	511
query86	278	239	224	224
query87	1783	1793	1692	1692
query88	3693	2768	2751	2751
query89	360	323	287	287
query90	2188	190	192	190
query91	201	188	157	157
query92	63	59	54	54
query93	1625	1486	997	997
query94	535	356	335	335
query95	814	505	493	493
query96	1077	806	336	336
query97	2448	2453	2326	2326
query98	213	201	202	201
query99	717	733	621	621
Total cold run time: 254648 ms
Total hot run time: 169145 ms

@hello-stephen

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

query1	0.01	0.01	0.00
query2	0.09	0.05	0.05
query3	0.25	0.14	0.14
query4	1.61	0.14	0.14
query5	0.24	0.22	0.22
query6	1.15	0.82	0.81
query7	0.04	0.00	0.00
query8	0.06	0.03	0.03
query9	0.38	0.32	0.30
query10	0.54	0.54	0.58
query11	0.19	0.13	0.13
query12	0.17	0.14	0.14
query13	0.46	0.46	0.46
query14	0.99	1.00	0.98
query15	0.60	0.58	0.59
query16	0.32	0.33	0.31
query17	1.04	1.08	1.06
query18	0.21	0.19	0.20
query19	2.03	1.96	1.99
query20	0.02	0.01	0.01
query21	15.43	0.21	0.13
query22	4.89	0.04	0.05
query23	16.12	0.30	0.12
query24	2.95	0.43	0.32
query25	0.12	0.05	0.05
query26	0.75	0.20	0.16
query27	0.03	0.04	0.03
query28	3.50	0.78	0.36
query29	12.51	3.99	3.17
query30	0.27	0.16	0.15
query31	2.77	0.57	0.32
query32	3.22	0.58	0.48
query33	3.11	3.29	3.23
query34	15.64	3.96	3.28
query35	3.25	3.23	3.18
query36	0.55	0.45	0.42
query37	0.08	0.07	0.06
query38	0.06	0.04	0.04
query39	0.03	0.04	0.03
query40	0.17	0.16	0.14
query41	0.08	0.03	0.03
query42	0.03	0.02	0.03
query43	0.04	0.04	0.03
Total cold run time: 96 s
Total hot run time: 23.84 s

morningman and others added 2 commits August 4, 2026 11:39
Same root cause as 7097715: these tests used S3Conf and
io::S3FileSystem via transitive includes that header slimming removed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
std::condition_variable in block_file_cache_test and std::shared_mutex
in scanner_context_test relied on transitive includes that differ
between libc++ (macOS) and libstdc++ (Linux CI).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@morningman

Copy link
Copy Markdown
Contributor Author

run buildall

The BE UT build failed on two TUs using io::global_local_filesystem()
without including io/fs/local_file_system.h, previously reachable via
runtime_state.h -> s3_file_system.h. Since the failed build stopped
before compiling ~780 test TUs, diffed every remaining TU's include
closure against the pre-cut tree and checked the symbols it uses,
fixing the whole family in one pass:

- io/fs/local_file_system.h: 9 files (incl. both CI failures)
- load/memtable/memtable_memory_limiter.h: 7 files (new ... needs
  the complete type; the exec_env.h edge is gone)
- runtime/workload_management/resource_context.h: 2 files
- io/cache/fs_file_cache_storage.h (FDCache), service/backend_options.h:
  2 files each
- runtime/cluster_info.h, runtime/frontend_info.h, util/threadpool.h
  (run_all_tests.cpp), runtime/workload_group/workload_group_fwd.h:
  1 file each

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@morningman
morningman requested a review from luwei16 as a code owner August 4, 2026 05:55
@morningman

Copy link
Copy Markdown
Contributor Author

run buildall

…complete types

FileWriterPtr (unique_ptr<FileWriter>) and FileReaderSPtr
(shared_ptr<FileReader>) are declared in file_reader_writer_fwd.h, so
the names resolve, but destroying the unique_ptr or calling members
through either alias needs the complete type, which used to arrive
transitively via runtime_state.h -> s3_file_system.h before that edge
was cut. Swept the remaining not-yet-compiled test TUs for both alias
kinds (unique_ptr: any use; shared_ptr: declared variable later
dereferenced) and calibrated the scan against the 588 TUs that already
compile clean:

- io/fs/file_writer.h: native_reader_writer_test (the CI failure),
  vorc_transformer_test, format_v2 native_reader_test,
  metadata_adder_test
- io/fs/file_reader.h: io/client/s3_file_system_test (the local
  run-be-ut.sh failure; the file already included file_writer.h and
  file_system.h but relied on the cut chain for file_reader.h)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@morningman

Copy link
Copy Markdown
Contributor Author

run buildall

@HappenLee

Copy link
Copy Markdown
Contributor

/review

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17640	4022	3946	3946
q2	2031	340	208	208
q3	10257	1409	827	827
q4	4678	470	341	341
q5	7490	889	552	552
q6	183	166	132	132
q7	746	811	589	589
q8	9343	1803	1525	1525
q9	5325	4102	4076	4076
q10	6728	1607	1362	1362
q11	536	357	326	326
q12	705	570	453	453
q13	18077	3290	2689	2689
q14	262	265	244	244
q15	q16	739	724	661	661
q17	1001	981	977	977
q18	6626	5654	5572	5572
q19	1156	1235	1090	1090
q20	783	653	582	582
q21	5656	2630	2441	2441
q22	441	362	298	298
Total cold run time: 100403 ms
Total hot run time: 28891 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4258	4193	4165	4165
q2	283	321	209	209
q3	4554	4998	4397	4397
q4	2185	2254	1397	1397
q5	4239	4098	4097	4097
q6	224	173	124	124
q7	1691	1672	1407	1407
q8	2718	2219	2097	2097
q9	7433	7481	7571	7481
q10	4347	4287	3910	3910
q11	541	414	371	371
q12	716	764	519	519
q13	3297	3536	2926	2926
q14	323	310	270	270
q15	q16	687	749	656	656
q17	1317	1274	1264	1264
q18	12090	11027	11984	11027
q19	1177	1211	1134	1134
q20	2262	2213	1914	1914
q21	5623	4777	4766	4766
q22	537	483	413	413
Total cold run time: 60502 ms
Total hot run time: 54544 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 166735 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 b74fb2b1417b764715a5efd9862f6e8676a6079b, data reload: false

query5	4347	586	445	445
query6	470	216	200	200
query7	4968	585	315	315
query8	334	165	148	148
query9	8756	4035	4026	4026
query10	483	349	301	301
query11	5824	2215	2024	2024
query12	155	98	93	93
query13	1271	605	440	440
query14	6051	4269	3979	3979
query14_1	3880	3774	3768	3768
query15	199	199	175	175
query16	964	443	375	375
query17	893	670	545	545
query18	2415	453	323	323
query19	197	182	141	141
query20	101	100	100	100
query21	227	154	129	129
query22	12922	13192	12835	12835
query23	15810	15051	14527	14527
query23_1	15483	15097	15079	15079
query24	7912	1765	1224	1224
query24_1	1222	1247	1229	1229
query25	561	465	404	404
query26	1314	351	216	216
query27	2619	621	379	379
query28	4551	1983	1991	1983
query29	1059	608	507	507
query30	347	261	225	225
query31	1185	1105	1040	1040
query32	110	64	57	57
query33	550	312	247	247
query34	1178	1107	643	643
query35	761	745	641	641
query36	794	761	703	703
query37	148	107	90	90
query38	1815	1795	1671	1671
query39	821	854	804	804
query39_1	831	775	787	775
query40	250	167	151	151
query41	67	67	68	67
query42	92	90	90	90
query43	315	329	283	283
query44	1417	756	755	755
query45	187	174	162	162
query46	1036	1224	724	724
query47	1557	1552	1473	1473
query48	359	418	296	296
query49	597	411	290	290
query50	1081	438	355	355
query51	10533	10628	10634	10628
query52	87	92	76	76
query53	260	301	207	207
query54	292	254	266	254
query55	72	70	68	68
query56	299	301	309	301
query57	1028	1022	934	934
query58	288	266	250	250
query59	1537	1644	1370	1370
query60	302	276	259	259
query61	147	144	150	144
query62	401	317	260	260
query63	235	189	193	189
query64	2873	1021	844	844
query65	3874	3743	3830	3743
query66	1852	459	353	353
query67	28122	28045	27934	27934
query68	3194	1572	979	979
query69	460	291	264	264
query70	872	805	774	774
query71	386	359	323	323
query72	2992	2686	2509	2509
query73	866	766	439	439
query74	4631	4489	4311	4311
query75	2391	2330	1985	1985
query76	2367	1100	772	772
query77	343	362	279	279
query78	11242	11182	10536	10536
query79	1396	1171	731	731
query80	1226	531	466	466
query81	544	327	288	288
query82	661	171	137	137
query83	400	314	312	312
query84	322	163	132	132
query85	975	607	512	512
query86	407	232	223	223
query87	1982	2096	1833	1833
query88	3699	2817	2754	2754
query89	374	319	290	290
query90	2027	203	193	193
query91	204	189	163	163
query92	64	60	59	59
query93	1703	1538	995	995
query94	704	343	318	318
query95	781	619	491	491
query96	1035	823	367	367
query97	2481	2458	2303	2303
query98	191	185	185	185
query99	742	723	613	613
Total cold run time: 254543 ms
Total hot run time: 166735 ms

@hello-stephen

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

query1	0.01	0.01	0.00
query2	0.09	0.05	0.05
query3	0.25	0.14	0.13
query4	1.61	0.13	0.13
query5	0.24	0.22	0.22
query6	1.16	0.82	0.81
query7	0.03	0.01	0.00
query8	0.06	0.04	0.04
query9	0.39	0.31	0.31
query10	0.56	0.53	0.54
query11	0.19	0.14	0.13
query12	0.18	0.14	0.14
query13	0.48	0.46	0.46
query14	1.01	0.99	1.00
query15	0.62	0.60	0.59
query16	0.33	0.33	0.32
query17	1.11	1.07	1.04
query18	0.21	0.19	0.20
query19	2.06	2.04	1.94
query20	0.02	0.01	0.01
query21	15.44	0.21	0.14
query22	4.96	0.06	0.05
query23	16.14	0.35	0.12
query24	2.86	0.43	0.31
query25	0.09	0.06	0.04
query26	0.73	0.20	0.15
query27	0.04	0.04	0.03
query28	3.54	0.76	0.33
query29	12.48	4.08	3.19
query30	0.27	0.15	0.16
query31	2.76	0.56	0.32
query32	3.22	0.59	0.49
query33	3.12	3.19	3.20
query34	15.51	3.99	3.26
query35	3.24	3.21	3.22
query36	0.55	0.44	0.43
query37	0.09	0.06	0.06
query38	0.05	0.04	0.04
query39	0.03	0.02	0.02
query40	0.17	0.16	0.14
query41	0.07	0.03	0.03
query42	0.03	0.03	0.03
query43	0.04	0.04	0.03
Total cold run time: 96.04 s
Total hot run time: 23.79 s

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 92.17% (106/115) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 75.86% (32106/42324)
Line Coverage 60.50% (358067/591876)
Region Coverage 56.94% (299785/526474)
Branch Coverage 58.35% (135090/231522)

@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.

Request changes. The production header slimming and out-of-line moves appear behavior-preserving at the exact head: Linux COMPILE and BE UT pass, the 15 dependency rules pass when invoked manually, and the macOS job compiled all affected TUs before an unrelated final-link --exclude-libs failure. The new benchmark/validation tooling still has seven correctness gaps covering documented clean behavior and path isolation, target normalization, silent empty/failed analyses, comparison integrity, and actual enforcement of the dependency guard; each is detailed inline.

Critical checkpoints: the include-cut goal is implemented with direct seeds and complete-type boundaries, and no transaction, storage format, wire protocol, configuration, or FE/BE variable compatibility change is present. Existing runtime concurrency, _frontends_lock protection, memory-reservation rollback, scan-task cleanup, and object lifecycles remain intact. The source changes are broad but mechanically focused; current compile/unit-test evidence covers runtime linkage and platform-sensitive headers. The cold-build performance claim is appropriately a build-time claim, but the new tools must reject invalid or incomparable inputs before their results can serve as evidence. No additional user review focus was provided. All mandated reviewer lanes converged on this frozen finding set with no unresolved candidate.

Comment thread build.sh
CLOUD_EXTRA_CMAKE_ARGS+=("-D${feature_name}_MODULE_DIR=${CLOUD_EXTRA_MODULE_PATHS[i]}")
done

if [[ "${COMPILE_BENCH}" -eq 1 ]]; then

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.

[P2] Normalize compile-bench before the clean-only path

The documented ./build.sh --compile-bench --clean reaches the clean-only branch at lines 520-524 before this block, so it deletes the normal gensrc/BE/FE artifacts and exits without running a benchmark. Adding --be avoids that exit but still calls clean_be() at line 839 before the benchmark directory is selected, deleting the normal be/build_<Type> and be/output. Please move compile-bench normalization ahead of the clean-only dispatch and ensure benchmark cleanup never targets the ordinary build/output paths.

else: # block header "<target>: #deps N, ... (VALID|STALE)" or noise
expect_source = line.rstrip().endswith("(VALID)")
cur = None
proc.wait()

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.

[P2] Fail when the dependency graph cannot be loaded

ninja -t deps stderr is suppressed and this return code is ignored, so a missing, stale, or Make-generated build directory is reported as 0 TUs / 0 affected with exit code 0. I reproduced that with an explicitly missing --build-dir. That false-negative result can make an unsafe include cut look harmless; please reject a failed dependency command and an empty valid-TU set instead of emitting a successful report.

help="write full stderr of every failing TU to this file")
args = ap.parse_args()

src_prefix = os.path.join(REPO_ROOT, "be", "src") + os.sep

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.

[P2] Do not report an empty source-only sweep as full validation

This selection excludes every be/test TU, while compile-bench also configures MAKE_TEST=OFF; it then returns success even when the selection is empty (for example, after a misspelled --filter). Header cuts affect test-only consumers too—this PR itself adds many required test includes—so the advertised all-TU validation can pass without checking them. Please fail on zero selected TUs and either include a BE-UT compile database or explicitly scope the tool and require the prescribed test build for test consumers.

return lines, summary


def cmd_report(args):

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.

[P2] Fail a successful benchmark when timing data is absent

This only verifies that run_dir exists. With missing metadata/phases/compile log, the readers return empty values, the report says build status : ok with zero compile units, and the command exits 0. Because timing-log writes and report failures are also intentionally swallowed upstream, a successful build can therefore produce no usable benchmark while the overall command still succeeds. Please validate the required inputs/nonempty TU data and propagate report failure when the benchmark build itself succeeded.

return json.load(fh)


def cmd_compare(args):

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.

[P2] Reject failed or incompatible benchmark comparisons

cmd_compare() ignores each summary's build_status and recorded invariants such as toolchain, build type, parallelism, PCH, generator, and AVX. It can therefore present a partial failed build—or a materially different configuration—as a speedup. Please reject incomplete/failed runs and mismatched compile-affecting metadata by default, record the currently omitted target/extra-module flags, and require an explicit override for intentional heterogeneous comparisons.

Comment thread build.sh
BUILD_HIVE_UDF=0
BUILD_BE_JAVA_EXTENSIONS=0
BUILD_BE_CDC_CLIENT=0
OUTPUT_BE_BINARY=0

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.

[P2] Normalize every target selector in compile-bench mode

This block clears FE/cloud/package flags but leaves BUILD_BENCHMARK, the meta/index/cache tool flags, and BUILD_TASK_EXECUTOR_SIMULATOR active. For example, --compile-bench --benchmark defines BE_TEST/BE_BENCHMARK, omits doris_be, and builds benchmark_test, so it is no longer measuring the advertised normal BE target and cannot be compared with the baseline. Please reject these combinations or reset all auxiliary target selectors, and record the effective target set in the run metadata.

"index writer stack (and CLucene) in front of most of the backend",
),
(
"runtime/exec_env.h",

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.

[P2] Wire the dependency guard into an enforced check

These new rules pass when the script is run manually, but a repository-wide search finds no build, presubmit, or workflow invocation of check-header-deps.py; its only reference is its own usage text. As a result, the forbidden edges can return silently despite the stated goal of locking the cuts. Please invoke this checker from an always-run validation path (and ideally add focused rule tests) so a regression actually fails CI.

morningman and others added 2 commits August 4, 2026 23:18
Apple's ld rejects --exclude-libs (a GNU ld option), so the final link of
doris_be fails on macOS with 'ld: unknown options: --exclude-libs' since
the flag was introduced. macOS also does not need the symbol hiding: dyld's
two-level namespace already binds each loaded library to the copy it was
linked against.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@morningman

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17688	3983	4000	3983
q2	1994	320	212	212
q3	10291	1352	777	777
q4	4683	474	340	340
q5	7482	828	557	557
q6	186	173	139	139
q7	735	819	596	596
q8	9848	1586	1549	1549
q9	5760	4071	4071	4071
q10	6780	1646	1341	1341
q11	514	353	320	320
q12	763	584	459	459
q13	18146	3285	2754	2754
q14	261	262	246	246
q15	q16	745	717	664	664
q17	996	939	1033	939
q18	6592	5569	5549	5549
q19	1401	1200	1008	1008
q20	779	667	634	634
q21	5863	2581	2472	2472
q22	428	359	308	308
Total cold run time: 101935 ms
Total hot run time: 28918 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4480	4201	4185	4185
q2	277	333	209	209
q3	4566	4910	4324	4324
q4	2183	2251	1412	1412
q5	4258	4134	4173	4134
q6	224	179	129	129
q7	1659	1615	1421	1421
q8	2695	2140	2124	2124
q9	7281	7241	7309	7241
q10	4310	4249	3870	3870
q11	552	403	374	374
q12	715	730	511	511
q13	3199	3682	2878	2878
q14	289	310	284	284
q15	q16	689	720	640	640
q17	1343	1244	1322	1244
q18	12192	10999	11883	10999
q19	1162	1136	1132	1132
q20	2236	2207	1961	1961
q21	5632	5054	4813	4813
q22	530	487	409	409
Total cold run time: 60472 ms
Total hot run time: 54294 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 166267 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 cb9cd81b815e7ef4feb5e577631a700e362b1be6, data reload: false

query5	4319	588	466	466
query6	470	210	202	202
query7	4902	559	328	328
query8	323	159	147	147
query9	8787	4050	4025	4025
query10	447	361	324	324
query11	5856	2176	2028	2028
query12	154	98	95	95
query13	1227	639	421	421
query14	6133	4241	3970	3970
query14_1	3838	3789	3775	3775
query15	197	194	176	176
query16	990	493	469	469
query17	922	680	517	517
query18	2419	446	353	353
query19	206	218	163	163
query20	108	102	105	102
query21	239	158	146	146
query22	12992	12984	12779	12779
query23	15774	14925	14613	14613
query23_1	14694	14770	14442	14442
query24	7533	1713	1231	1231
query24_1	1236	1266	1233	1233
query25	565	464	422	422
query26	1056	335	210	210
query27	2625	587	381	381
query28	4506	2005	1995	1995
query29	1058	588	466	466
query30	345	259	225	225
query31	1161	1119	1064	1064
query32	109	60	57	57
query33	517	298	240	240
query34	1168	1117	671	671
query35	754	745	639	639
query36	771	775	708	708
query37	155	111	98	98
query38	1817	1776	1663	1663
query39	817	828	779	779
query39_1	782	796	779	779
query40	255	158	138	138
query41	62	62	64	62
query42	100	95	93	93
query43	317	316	276	276
query44	1428	765	749	749
query45	184	181	171	171
query46	1005	1215	701	701
query47	1587	1548	1484	1484
query48	391	417	292	292
query49	562	439	294	294
query50	1086	435	335	335
query51	10759	10690	10542	10542
query52	91	94	73	73
query53	258	266	198	198
query54	274	223	229	223
query55	77	71	66	66
query56	316	295	282	282
query57	1024	987	930	930
query58	293	291	258	258
query59	1548	1583	1418	1418
query60	307	267	253	253
query61	153	157	150	150
query62	385	315	265	265
query63	235	195	208	195
query64	2525	1032	876	876
query65	3865	3790	3764	3764
query66	1794	473	367	367
query67	28203	28118	27975	27975
query68	3021	1549	960	960
query69	399	313	272	272
query70	891	764	811	764
query71	372	344	315	315
query72	3288	2867	2488	2488
query73	819	748	417	417
query74	4566	4516	4275	4275
query75	2383	2327	2023	2023
query76	2332	1133	736	736
query77	338	365	270	270
query78	11094	11090	10578	10578
query79	1364	1145	742	742
query80	1268	537	470	470
query81	544	324	281	281
query82	652	168	130	130
query83	370	322	294	294
query84	325	159	135	135
query85	963	609	508	508
query86	423	228	223	223
query87	1972	1953	1833	1833
query88	3753	2808	2836	2808
query89	404	313	278	278
query90	2043	195	212	195
query91	204	195	164	164
query92	61	61	56	56
query93	1663	1533	968	968
query94	722	346	319	319
query95	793	490	471	471
query96	1037	793	353	353
query97	2442	2458	2362	2362
query98	193	182	188	182
query99	738	733	611	611
Total cold run time: 252673 ms
Total hot run time: 166267 ms

@hello-stephen

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

query1	0.00	0.00	0.00
query2	0.10	0.05	0.05
query3	0.25	0.13	0.16
query4	1.61	0.13	0.14
query5	0.24	0.21	0.22
query6	1.16	0.85	0.82
query7	0.04	0.01	0.01
query8	0.05	0.03	0.03
query9	0.36	0.30	0.31
query10	0.55	0.54	0.55
query11	0.19	0.14	0.14
query12	0.17	0.15	0.14
query13	0.47	0.47	0.46
query14	1.02	0.99	0.99
query15	0.60	0.57	0.59
query16	0.31	0.34	0.34
query17	1.11	1.09	1.06
query18	0.21	0.21	0.20
query19	2.02	1.96	1.87
query20	0.01	0.01	0.01
query21	15.45	0.21	0.13
query22	4.88	0.06	0.05
query23	16.13	0.30	0.13
query24	2.97	0.38	0.31
query25	0.11	0.05	0.04
query26	0.73	0.21	0.15
query27	0.03	0.04	0.03
query28	3.52	0.80	0.34
query29	12.47	4.09	3.19
query30	0.27	0.16	0.15
query31	2.76	0.54	0.32
query32	3.22	0.58	0.48
query33	3.13	3.28	3.19
query34	15.53	3.93	3.29
query35	3.23	3.22	3.21
query36	0.56	0.44	0.41
query37	0.08	0.06	0.06
query38	0.05	0.04	0.04
query39	0.03	0.03	0.03
query40	0.18	0.15	0.15
query41	0.08	0.03	0.02
query42	0.04	0.02	0.03
query43	0.05	0.03	0.03
Total cold run time: 95.97 s
Total hot run time: 23.77 s

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.

3 participants