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 6ed443c7e8 [enhancement](profile) add instanceNum, tableIds to
profile. (#13985)
6ed443c7e8 is described below
commit 6ed443c7e848091be9f94875acd2021872d6e5e2
Author: luozenglin <[email protected]>
AuthorDate: Tue Nov 8 08:49:16 2022 +0800
[enhancement](profile) add instanceNum, tableIds to profile. (#13985)
---
be/src/vec/exec/scan/new_olap_scan_node.cpp | 19 +++++++++++++++++--
.../org/apache/doris/common/util/ProfileManager.java | 5 +++++
.../main/java/org/apache/doris/qe/Coordinator.java | 13 ++++++++++++-
.../main/java/org/apache/doris/qe/StmtExecutor.java | 6 ++++++
4 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/be/src/vec/exec/scan/new_olap_scan_node.cpp
b/be/src/vec/exec/scan/new_olap_scan_node.cpp
index a4253fe1cc..a1a52a72ff 100644
--- a/be/src/vec/exec/scan/new_olap_scan_node.cpp
+++ b/be/src/vec/exec/scan/new_olap_scan_node.cpp
@@ -132,6 +132,17 @@ static std::string olap_filters_to_string(const
std::vector<doris::TCondition>&
return filters_string;
}
+static std::string tablets_id_to_string(
+ const std::vector<std::unique_ptr<TPaloScanRange>>& scan_ranges) {
+ std::stringstream ss;
+ ss << "[" << scan_ranges[0]->tablet_id;
+ for (int i = 1; i < scan_ranges.size(); ++i) {
+ ss << ", " << scan_ranges[i]->tablet_id;
+ }
+ ss << "]";
+ return ss.str();
+}
+
Status NewOlapScanNode::_process_conjuncts() {
RETURN_IF_ERROR(VScanNode::_process_conjuncts());
if (_eos) {
@@ -190,8 +201,12 @@ Status NewOlapScanNode::_build_key_ranges_and_filters() {
range);
}
- _runtime_profile->add_info_string("PushDownPredicates",
olap_filters_to_string(_olap_filters));
- _runtime_profile->add_info_string("KeyRanges", _scan_keys.debug_string());
+ if (_state->enable_profile()) {
+ _runtime_profile->add_info_string("PushDownPredicates",
+
olap_filters_to_string(_olap_filters));
+ _runtime_profile->add_info_string("KeyRanges",
_scan_keys.debug_string());
+ _runtime_profile->add_info_string("TabletIds",
tablets_id_to_string(_scan_ranges));
+ }
VLOG_CRITICAL << _scan_keys.debug_string();
return Status::OK();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/common/util/ProfileManager.java
b/fe/fe-core/src/main/java/org/apache/doris/common/util/ProfileManager.java
index 5d22ed5197..1dc0125707 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/util/ProfileManager.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/ProfileManager.java
@@ -67,6 +67,11 @@ public class ProfileManager {
public static final String DEFAULT_DB = "Default Db";
public static final String SQL_STATEMENT = "Sql Statement";
public static final String IS_CACHED = "Is Cached";
+
+ public static final String TOTAL_INSTANCES_NUM = "Total Instances Num";
+
+ public static final String INSTANCES_NUM_PER_BE = "Instances Num Per BE";
+
public static final String TRACE_ID = "Trace ID";
public enum ProfileType {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
index 2d3f26c170..2bec399553 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
@@ -185,6 +185,9 @@ public class Coordinator {
private final Map<PlanFragmentId, FragmentExecParams>
fragmentExecParamsMap = Maps.newHashMap();
private final List<PlanFragment> fragments;
+
+ private Map<Long, BackendExecStates> beToExecStates = Maps.newHashMap();
+
// backend execute state
private final List<BackendExecState> backendExecStates =
Lists.newArrayList();
// backend which state need to be checked when joining this coordinator.
@@ -405,6 +408,14 @@ public class Coordinator {
return errorTabletInfos;
}
+ public Map<String, Integer> getBeToInstancesNum() {
+ Map<String, Integer> result = Maps.newTreeMap();
+ for (BackendExecStates states : beToExecStates.values()) {
+ result.put(states.brpcAddr.hostname.concat(":").concat("" +
states.brpcAddr.port), states.states.size());
+ }
+ return result;
+ }
+
// Initialize
private void prepare() {
for (PlanFragment fragment : fragments) {
@@ -578,7 +589,7 @@ public class Coordinator {
int backendIdx = 0;
int profileFragmentId = 0;
long memoryLimit = queryOptions.getMemLimit();
- Map<Long, BackendExecStates> beToExecStates = Maps.newHashMap();
+ beToExecStates.clear();
// If #fragments >=2, use twoPhaseExecution with
exec_plan_fragments_prepare and exec_plan_fragments_start,
// else use exec_plan_fragments directly.
// we choose #fragments >=2 because in some cases
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
index ae2a321b94..f326cc146c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
@@ -307,6 +307,12 @@ public class StmtExecutor implements ProfileWriter {
infos.put(ProfileManager.DEFAULT_DB, context.getDatabase());
infos.put(ProfileManager.SQL_STATEMENT, originStmt.originStmt);
infos.put(ProfileManager.IS_CACHED, isCached ? "Yes" : "No");
+
+ Map<String, Integer> beToInstancesNum =
+ coord == null ? Maps.newTreeMap() :
coord.getBeToInstancesNum();
+ infos.put(ProfileManager.TOTAL_INSTANCES_NUM,
+ String.valueOf(beToInstancesNum.values().stream().reduce(0,
Integer::sum)));
+ infos.put(ProfileManager.INSTANCES_NUM_PER_BE,
beToInstancesNum.toString());
return infos;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]