You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2023/06/06 00:56:00 UTC
[doris] branch master updated: [fix](executor)Fix duplicate timer and add open timer #20448
This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 1fc48e83f2 [fix](executor)Fix duplicate timer and add open timer #20448
1fc48e83f2 is described below
commit 1fc48e83f207f57d737e77e0dc4a3d776458122d
Author: wangbo <wa...@apache.org>
AuthorDate: Tue Jun 6 08:55:52 2023 +0800
[fix](executor)Fix duplicate timer and add open timer #20448
1 Currently, Node's total timer couter has timed twice(in Open and alloc_resource), this may cause timer in profile is not correct.
2 Add more timer to find more code which may cost much time.
---
be/src/vec/exec/join/vhash_join_node.cpp | 5 ++++-
be/src/vec/exec/join/vhash_join_node.h | 3 +++
be/src/vec/exec/scan/vscan_node.cpp | 6 +++++-
be/src/vec/exec/scan/vscan_node.h | 2 ++
4 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/be/src/vec/exec/join/vhash_join_node.cpp b/be/src/vec/exec/join/vhash_join_node.cpp
index 280a582690..670953252d 100644
--- a/be/src/vec/exec/join/vhash_join_node.cpp
+++ b/be/src/vec/exec/join/vhash_join_node.cpp
@@ -458,6 +458,8 @@ Status HashJoinNode::prepare(RuntimeState* state) {
_probe_side_output_timer = ADD_TIMER(probe_phase_profile, "ProbeWhenProbeSideOutputTime");
_join_filter_timer = ADD_TIMER(runtime_profile(), "JoinFilterTimer");
+ _open_timer = ADD_TIMER(runtime_profile(), "OpenTime");
+ _allocate_resource_timer = ADD_TIMER(runtime_profile(), "AllocateResourceTime");
_push_down_timer = ADD_TIMER(runtime_profile(), "PublishRuntimeFilterTime");
_push_compute_timer = ADD_TIMER(runtime_profile(), "PushDownComputeTime");
@@ -745,14 +747,15 @@ void HashJoinNode::_prepare_probe_block() {
Status HashJoinNode::open(RuntimeState* state) {
SCOPED_TIMER(_runtime_profile->total_time_counter());
+ SCOPED_TIMER(_open_timer);
RETURN_IF_ERROR(VJoinNodeBase::open(state));
RETURN_IF_CANCELLED(state);
return Status::OK();
}
Status HashJoinNode::alloc_resource(doris::RuntimeState* state) {
+ SCOPED_TIMER(_allocate_resource_timer);
RETURN_IF_ERROR(VJoinNodeBase::alloc_resource(state));
- SCOPED_TIMER(_runtime_profile->total_time_counter());
for (size_t i = 0; i < _runtime_filter_descs.size(); i++) {
if (auto bf = _runtime_filters[i]->get_bloomfilter()) {
RETURN_IF_ERROR(bf->init_with_fixed_length());
diff --git a/be/src/vec/exec/join/vhash_join_node.h b/be/src/vec/exec/join/vhash_join_node.h
index 33ae53f923..408dacce02 100644
--- a/be/src/vec/exec/join/vhash_join_node.h
+++ b/be/src/vec/exec/join/vhash_join_node.h
@@ -290,6 +290,9 @@ private:
RuntimeProfile::Counter* _build_side_merge_block_timer;
RuntimeProfile::Counter* _build_runtime_filter_timer;
+ RuntimeProfile::Counter* _open_timer;
+ RuntimeProfile::Counter* _allocate_resource_timer;
+
RuntimeProfile::Counter* _build_blocks_memory_usage;
RuntimeProfile::Counter* _hash_table_memory_usage;
RuntimeProfile::HighWaterMarkCounter* _build_arena_memory_usage;
diff --git a/be/src/vec/exec/scan/vscan_node.cpp b/be/src/vec/exec/scan/vscan_node.cpp
index cf5516471c..692b65376d 100644
--- a/be/src/vec/exec/scan/vscan_node.cpp
+++ b/be/src/vec/exec/scan/vscan_node.cpp
@@ -150,22 +150,26 @@ Status VScanNode::prepare(RuntimeState* state) {
// could add here, not in the _init_profile() function
_get_next_timer = ADD_TIMER(_runtime_profile, "GetNextTime");
_acquire_runtime_filter_timer = ADD_TIMER(_runtime_profile, "AcuireRuntimeFilterTime");
+
+ _open_timer = ADD_TIMER(_runtime_profile, "OpenTime");
+ _alloc_resource_timer = ADD_TIMER(_runtime_profile, "AllocateResourceTime");
return Status::OK();
}
Status VScanNode::open(RuntimeState* state) {
SCOPED_TIMER(_runtime_profile->total_time_counter());
+ SCOPED_TIMER(_open_timer);
RETURN_IF_CANCELLED(state);
return ExecNode::open(state);
}
Status VScanNode::alloc_resource(RuntimeState* state) {
+ SCOPED_TIMER(_alloc_resource_timer);
if (_opened) {
return Status::OK();
}
_input_tuple_desc = state->desc_tbl().get_tuple_descriptor(_input_tuple_id);
_output_tuple_desc = state->desc_tbl().get_tuple_descriptor(_output_tuple_id);
- SCOPED_TIMER(_runtime_profile->total_time_counter());
RETURN_IF_ERROR(ExecNode::alloc_resource(state));
RETURN_IF_ERROR(_acquire_runtime_filter());
RETURN_IF_ERROR(_process_conjuncts());
diff --git a/be/src/vec/exec/scan/vscan_node.h b/be/src/vec/exec/scan/vscan_node.h
index c447505a61..69692b032d 100644
--- a/be/src/vec/exec/scan/vscan_node.h
+++ b/be/src/vec/exec/scan/vscan_node.h
@@ -343,6 +343,8 @@ protected:
RuntimeProfile::Counter* _num_scanners;
RuntimeProfile::Counter* _get_next_timer = nullptr;
+ RuntimeProfile::Counter* _open_timer = nullptr;
+ RuntimeProfile::Counter* _alloc_resource_timer = nullptr;
RuntimeProfile::Counter* _acquire_runtime_filter_timer = nullptr;
// time of get block from scanner
RuntimeProfile::Counter* _scan_timer = nullptr;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org