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]

Reply via email to