This is an automated email from the ASF dual-hosted git repository.

jakevin 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 bfa50f08c1e [enhancement](Nereids): add nereids profile (#26935)
bfa50f08c1e is described below

commit bfa50f08c1e1cd48e68901cc5684c8ca6dc8385f
Author: jakevin <[email protected]>
AuthorDate: Tue Nov 14 16:43:17 2023 +0800

    [enhancement](Nereids): add nereids profile (#26935)
---
 .../doris/common/profile/SummaryProfile.java       | 87 ++++++++++++++++++----
 .../org/apache/doris/nereids/NereidsPlanner.java   | 12 +++
 2 files changed, 83 insertions(+), 16 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java 
b/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java
index 41c062cf3bc..856e575e91f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java
@@ -69,13 +69,20 @@ public class SummaryProfile {
     public static final String WRITE_RESULT_TIME = "Write Result Time";
     public static final String WAIT_FETCH_RESULT_TIME = "Wait and Fetch Result 
Time";
 
+    public static final String NEREIDS_ANALYSIS_TIME = "Nereids Analysis Time";
+    public static final String NEREIDS_REWRITE_TIME = "Nereids Rewrite Time";
+    public static final String NEREIDS_OPTIMIZE_TIME = "Nereids Optimize Time";
+    public static final String NEREIDS_TRANSLATE_TIME = "Nereids Translate 
Time";
+
     // These info will display on FE's web ui table, every one will be 
displayed as
     // a column, so that should not
     // add many columns here. Add to ExcecutionSummary list.
     public static final ImmutableList<String> SUMMARY_KEYS = 
ImmutableList.of(PROFILE_ID, TASK_TYPE,
             START_TIME, END_TIME, TOTAL_TIME, TASK_STATE, USER, DEFAULT_DB, 
SQL_STATEMENT);
 
-    public static final ImmutableList<String> EXECUTION_SUMMARY_KEYS = 
ImmutableList.of(WORKLOAD_GROUP, ANALYSIS_TIME,
+    public static final ImmutableList<String> EXECUTION_SUMMARY_KEYS = 
ImmutableList.of(
+            NEREIDS_ANALYSIS_TIME, NEREIDS_REWRITE_TIME, 
NEREIDS_OPTIMIZE_TIME, NEREIDS_TRANSLATE_TIME,
+            WORKLOAD_GROUP, ANALYSIS_TIME,
             PLAN_TIME, JOIN_REORDER_TIME, CREATE_SINGLE_NODE_TIME, 
QUERY_DISTRIBUTED_TIME,
             INIT_SCAN_NODE_TIME, FINALIZE_SCAN_NODE_TIME, GET_SPLITS_TIME, 
GET_PARTITIONS_TIME,
             GET_PARTITION_FILES_TIME, CREATE_SCAN_RANGE_TIME, SCHEDULE_TIME, 
FETCH_RESULT_TIME,
@@ -84,25 +91,25 @@ public class SummaryProfile {
 
     // Ident of each item. Default is 0, which doesn't need to present in this 
Map.
     // Please set this map for new profile items if they need ident.
-    public static ImmutableMap<String, Integer> 
EXECUTION_SUMMARY_KEYS_IDENTATION = ImmutableMap.of();
-
-    {
-        ImmutableMap.Builder builder = new ImmutableMap.Builder();
-        builder.put(JOIN_REORDER_TIME, 1);
-        builder.put(CREATE_SINGLE_NODE_TIME, 1);
-        builder.put(QUERY_DISTRIBUTED_TIME, 1);
-        builder.put(INIT_SCAN_NODE_TIME, 1);
-        builder.put(FINALIZE_SCAN_NODE_TIME, 1);
-        builder.put(GET_SPLITS_TIME, 2);
-        builder.put(GET_PARTITIONS_TIME, 3);
-        builder.put(GET_PARTITION_FILES_TIME, 3);
-        builder.put(CREATE_SCAN_RANGE_TIME, 2);
-        EXECUTION_SUMMARY_KEYS_IDENTATION = builder.build();
-    }
+    public static ImmutableMap<String, Integer> 
EXECUTION_SUMMARY_KEYS_IDENTATION = ImmutableMap.of(
+            JOIN_REORDER_TIME, 1,
+            CREATE_SINGLE_NODE_TIME, 1,
+            QUERY_DISTRIBUTED_TIME, 1,
+            INIT_SCAN_NODE_TIME, 1,
+            FINALIZE_SCAN_NODE_TIME, 1,
+            GET_SPLITS_TIME, 2,
+            GET_PARTITIONS_TIME, 3,
+            GET_PARTITION_FILES_TIME, 3,
+            CREATE_SCAN_RANGE_TIME, 2
+    );
 
     private RuntimeProfile summaryProfile;
     private RuntimeProfile executionSummaryProfile;
 
+    private long nereidsAnalysisFinishTime = -1;
+    private long nereidsRewriteFinishTime = -1;
+    private long nereidsOptimizeFinishTime = -1;
+    private long nereidsTranslateFinishTime = -1;
     // timestamp of query begin
     private long queryBeginTime = -1;
     // Analysis end time
@@ -167,6 +174,10 @@ public class SummaryProfile {
     }
 
     private void updateExecutionSummaryProfile() {
+        executionSummaryProfile.addInfoString(NEREIDS_ANALYSIS_TIME, 
getPrettyNereidsAnalysisTime());
+        executionSummaryProfile.addInfoString(NEREIDS_REWRITE_TIME, 
getPrettyNereidsRewriteTime());
+        executionSummaryProfile.addInfoString(NEREIDS_OPTIMIZE_TIME, 
getPrettyNereidsOptimizeTime());
+        executionSummaryProfile.addInfoString(NEREIDS_TRANSLATE_TIME, 
getPrettyNereidsTranslateTime());
         executionSummaryProfile.addInfoString(ANALYSIS_TIME, 
getPrettyQueryAnalysisFinishTime());
         executionSummaryProfile.addInfoString(PLAN_TIME, 
getPrettyQueryPlanFinishTime());
         executionSummaryProfile.addInfoString(JOIN_REORDER_TIME, 
getPrettyQueryJoinReorderFinishTime());
@@ -186,6 +197,22 @@ public class SummaryProfile {
         executionSummaryProfile.addInfoString(WAIT_FETCH_RESULT_TIME, 
getPrettyQueryFetchResultFinishTime());
     }
 
+    public void setNereidsAnalysisTime() {
+        this.nereidsAnalysisFinishTime = TimeUtils.getStartTimeMs();
+    }
+
+    public void setNereidsRewriteTime() {
+        this.nereidsRewriteFinishTime = TimeUtils.getStartTimeMs();
+    }
+
+    public void setNereidsOptimizeTime() {
+        this.nereidsOptimizeFinishTime = TimeUtils.getStartTimeMs();
+    }
+
+    public void setNereidsTranslateTime() {
+        this.nereidsTranslateFinishTime = TimeUtils.getStartTimeMs();
+    }
+
     public void setQueryBeginTime() {
         this.queryBeginTime = TimeUtils.getStartTimeMs();
     }
@@ -368,6 +395,34 @@ public class SummaryProfile {
         }
     }
 
+    private String getPrettyNereidsAnalysisTime() {
+        if (nereidsAnalysisFinishTime == -1 || queryAnalysisFinishTime == -1) {
+            return "N/A";
+        }
+        return RuntimeProfile.printCounter(nereidsAnalysisFinishTime - 
queryBeginTime, TUnit.TIME_MS);
+    }
+
+    private String getPrettyNereidsRewriteTime() {
+        if (nereidsRewriteFinishTime == -1 || nereidsAnalysisFinishTime == -1) 
{
+            return "N/A";
+        }
+        return RuntimeProfile.printCounter(nereidsRewriteFinishTime - 
nereidsAnalysisFinishTime, TUnit.TIME_MS);
+    }
+
+    private String getPrettyNereidsOptimizeTime() {
+        if (nereidsOptimizeFinishTime == -1 || nereidsRewriteFinishTime == -1) 
{
+            return "N/A";
+        }
+        return RuntimeProfile.printCounter(nereidsOptimizeFinishTime - 
nereidsRewriteFinishTime, TUnit.TIME_MS);
+    }
+
+    private String getPrettyNereidsTranslateTime() {
+        if (nereidsTranslateFinishTime == -1 || nereidsOptimizeFinishTime == 
-1) {
+            return "N/A";
+        }
+        return RuntimeProfile.printCounter(nereidsTranslateFinishTime - 
nereidsOptimizeFinishTime, TUnit.TIME_MS);
+    }
+
     private String getPrettyQueryAnalysisFinishTime() {
         if (queryBeginTime == -1 || queryAnalysisFinishTime == -1) {
             return "N/A";
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
index c9c9e7b67b7..bf870f9dd6b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
@@ -122,6 +122,9 @@ public class NereidsPlanner extends Planner {
         PlanTranslatorContext planTranslatorContext = new 
PlanTranslatorContext(cascadesContext);
         PhysicalPlanTranslator physicalPlanTranslator = new 
PhysicalPlanTranslator(planTranslatorContext,
                 statementContext.getConnectContext().getStatsErrorEstimator());
+        if (statementContext.getConnectContext().getExecutor() != null) {
+            
statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsTranslateTime();
+        }
         if 
(cascadesContext.getConnectContext().getSessionVariable().isEnableNereidsTrace())
 {
             CounterEvent.clearCounter();
         }
@@ -191,6 +194,7 @@ public class NereidsPlanner extends Planner {
 
             if (statementContext.getConnectContext().getExecutor() != null) {
                 
statementContext.getConnectContext().getExecutor().getSummaryProfile().setQueryAnalysisFinishTime();
+                
statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsAnalysisTime();
             }
 
             if (explainLevel == ExplainLevel.ANALYZED_PLAN || explainLevel == 
ExplainLevel.ALL_PLAN) {
@@ -209,7 +213,15 @@ public class NereidsPlanner extends Planner {
                 }
             }
 
+            if (statementContext.getConnectContext().getExecutor() != null) {
+                
statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsRewriteTime();
+            }
+
             optimize();
+            if (statementContext.getConnectContext().getExecutor() != null) {
+                
statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsOptimizeTime();
+            }
+
             // print memo before choose plan.
             // if chooseNthPlan failed, we could get memo to debug
             if 
(cascadesContext.getConnectContext().getSessionVariable().dumpNereidsMemo) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to