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

dataroaring 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 73d47885e8c [enhance](cloud)add log for compaction read time (#51355)
73d47885e8c is described below

commit 73d47885e8cd4b9b30e549105045b72b04e1153a
Author: koarz <[email protected]>
AuthorDate: Tue Jun 17 15:38:08 2025 +0800

    [enhance](cloud)add log for compaction read time (#51355)
    
    Problem Summary:
    
    curl http://ip:8040/api/compaction/show?tablet_id=1748942349697
    ```text
    {
        ......
        "exec compaction time us": "217890",
        "compaction local read time us": "730",
        "compaction remote read time us": "0",
        ......
    }
    ```
---
 be/src/cloud/cloud_base_compaction.cpp       |  2 ++
 be/src/cloud/cloud_cumulative_compaction.cpp |  2 ++
 be/src/cloud/cloud_full_compaction.cpp       |  2 ++
 be/src/cloud/cloud_tablet.cpp                | 16 ++++++++++++++++
 be/src/cloud/cloud_tablet.h                  |  4 ++++
 be/src/olap/compaction.cpp                   |  7 +++++++
 be/src/olap/merger.cpp                       | 13 +++++++++++++
 be/src/olap/merger.h                         |  2 ++
 8 files changed, 48 insertions(+)

diff --git a/be/src/cloud/cloud_base_compaction.cpp 
b/be/src/cloud/cloud_base_compaction.cpp
index 682f7e158dd..99b916b45e5 100644
--- a/be/src/cloud/cloud_base_compaction.cpp
+++ b/be/src/cloud/cloud_base_compaction.cpp
@@ -303,6 +303,8 @@ Status CloudBaseCompaction::execute_compact() {
             .tag("output_rowset_data_size", _output_rowset->data_disk_size())
             .tag("output_rowset_index_size", _output_rowset->index_disk_size())
             .tag("output_rowset_total_size", _output_rowset->total_disk_size())
+            .tag("local_read_time_us", _stats.cloud_local_read_time)
+            .tag("remote_read_time_us", _stats.cloud_remote_read_time)
             .tag("local_read_bytes", _local_read_bytes_total)
             .tag("remote_read_bytes", _remote_read_bytes_total);
 
diff --git a/be/src/cloud/cloud_cumulative_compaction.cpp 
b/be/src/cloud/cloud_cumulative_compaction.cpp
index ed696c8b63d..81c8f78f613 100644
--- a/be/src/cloud/cloud_cumulative_compaction.cpp
+++ b/be/src/cloud/cloud_cumulative_compaction.cpp
@@ -226,6 +226,8 @@ Status CloudCumulativeCompaction::execute_compact() {
             .tag("cumulative_point", cloud_tablet()->cumulative_layer_point())
             .tag("num_rowsets", 
cloud_tablet()->fetch_add_approximate_num_rowsets(0))
             .tag("cumu_num_rowsets", 
cloud_tablet()->fetch_add_approximate_cumu_num_rowsets(0))
+            .tag("local_read_time_us", _stats.cloud_local_read_time)
+            .tag("remote_read_time_us", _stats.cloud_remote_read_time)
             .tag("local_read_bytes", _local_read_bytes_total)
             .tag("remote_read_bytes", _remote_read_bytes_total);
 
diff --git a/be/src/cloud/cloud_full_compaction.cpp 
b/be/src/cloud/cloud_full_compaction.cpp
index 3508b94540c..8aadcf9ffe0 100644
--- a/be/src/cloud/cloud_full_compaction.cpp
+++ b/be/src/cloud/cloud_full_compaction.cpp
@@ -183,6 +183,8 @@ Status CloudFullCompaction::execute_compact() {
             .tag("output_rowset_data_size", _output_rowset->data_disk_size())
             .tag("output_rowset_index_size", _output_rowset->index_disk_size())
             .tag("output_rowset_total_size", _output_rowset->total_disk_size())
+            .tag("local_read_time_us", _stats.cloud_local_read_time)
+            .tag("remote_read_time_us", _stats.cloud_remote_read_time)
             .tag("local_read_bytes", _local_read_bytes_total)
             .tag("remote_read_bytes", _remote_read_bytes_total);
 
diff --git a/be/src/cloud/cloud_tablet.cpp b/be/src/cloud/cloud_tablet.cpp
index 2b86d76cf31..df90408e244 100644
--- a/be/src/cloud/cloud_tablet.cpp
+++ b/be/src/cloud/cloud_tablet.cpp
@@ -18,6 +18,7 @@
 #include "cloud/cloud_tablet.h"
 
 #include <bvar/bvar.h>
+#include <gen_cpp/Types_types.h>
 #include <gen_cpp/olap_file.pb.h>
 #include <rapidjson/document.h>
 #include <rapidjson/encodings.h>
@@ -798,6 +799,21 @@ void CloudTablet::get_compaction_status(std::string* 
json_result) {
                                            
cast_set<uint>(_last_full_compaction_status.length()),
                                            root.GetAllocator());
     root.AddMember("last full status", full_compaction_status_value, 
root.GetAllocator());
+    rapidjson::Value exec_compaction_time;
+    std::string num_str {std::to_string(exec_compaction_time_us.load())};
+    exec_compaction_time.SetString(num_str.c_str(), 
cast_set<uint>(num_str.length()),
+                                   root.GetAllocator());
+    root.AddMember("exec compaction time us", exec_compaction_time, 
root.GetAllocator());
+    rapidjson::Value local_read_time;
+    num_str = std::to_string(local_read_time_us.load());
+    local_read_time.SetString(num_str.c_str(), 
cast_set<uint>(num_str.length()),
+                              root.GetAllocator());
+    root.AddMember("compaction local read time us", local_read_time, 
root.GetAllocator());
+    rapidjson::Value remote_read_time;
+    num_str = std::to_string(remote_read_time_us.load());
+    remote_read_time.SetString(num_str.c_str(), 
cast_set<uint>(num_str.length()),
+                               root.GetAllocator());
+    root.AddMember("compaction remote read time us", remote_read_time, 
root.GetAllocator());
 
     // print all rowsets' version as an array
     rapidjson::Document versions_arr;
diff --git a/be/src/cloud/cloud_tablet.h b/be/src/cloud/cloud_tablet.h
index 3474857b36a..b9cfdea3eb6 100644
--- a/be/src/cloud/cloud_tablet.h
+++ b/be/src/cloud/cloud_tablet.h
@@ -260,6 +260,10 @@ public:
     int64_t last_cumu_no_suitable_version_ms = 0;
     int64_t last_access_time_ms = 0;
 
+    std::atomic<int64_t> local_read_time_us = 0;
+    std::atomic<int64_t> remote_read_time_us = 0;
+    std::atomic<int64_t> exec_compaction_time_us = 0;
+
     // Return merged extended schema
     TabletSchemaSPtr merged_tablet_schema() const override;
 
diff --git a/be/src/olap/compaction.cpp b/be/src/olap/compaction.cpp
index 026daa38c97..c9141e70132 100644
--- a/be/src/olap/compaction.cpp
+++ b/be/src/olap/compaction.cpp
@@ -38,6 +38,7 @@
 
 #include "cloud/cloud_meta_mgr.h"
 #include "cloud/cloud_storage_engine.h"
+#include "cloud/cloud_tablet.h"
 #include "common/config.h"
 #include "common/status.h"
 #include "cpp/sync_point.h"
@@ -1439,6 +1440,12 @@ Status 
CloudCompactionMixin::execute_compact_impl(int64_t permits) {
     // 4. modify rowsets in memory
     RETURN_IF_ERROR(modify_rowsets());
 
+    // update compaction status data
+    auto tablet = std::static_pointer_cast<CloudTablet>(_tablet);
+    tablet->local_read_time_us.fetch_add(_stats.cloud_local_read_time);
+    tablet->remote_read_time_us.fetch_add(_stats.cloud_remote_read_time);
+    tablet->exec_compaction_time_us.fetch_add(watch.get_elapse_time_us());
+
     return Status::OK();
 }
 
diff --git a/be/src/olap/merger.cpp b/be/src/olap/merger.cpp
index 2797318c625..0467c011ab2 100644
--- a/be/src/olap/merger.cpp
+++ b/be/src/olap/merger.cpp
@@ -33,6 +33,7 @@
 #include <utility>
 #include <vector>
 
+#include "cloud/config.h"
 #include "common/config.h"
 #include "common/logging.h"
 #include "common/status.h"
@@ -147,6 +148,12 @@ Status Merger::vmerge_rowsets(BaseTabletSPtr tablet, 
ReaderType reader_type,
         stats_output->bytes_read_from_remote =
                 reader.stats().file_cache_stats.bytes_read_from_remote;
         stats_output->cached_bytes_total = 
reader.stats().file_cache_stats.bytes_write_into_cache;
+        if (config::is_cloud_mode()) {
+            stats_output->cloud_local_read_time =
+                    reader.stats().file_cache_stats.local_io_timer / 1000;
+            stats_output->cloud_remote_read_time =
+                    reader.stats().file_cache_stats.remote_io_timer / 1000;
+        }
     }
 
     RETURN_NOT_OK_STATUS_WITH_WARN(dst_rowset_writer->flush(),
@@ -327,6 +334,12 @@ Status Merger::vertical_compact_one_group(
         stats_output->bytes_read_from_remote =
                 reader.stats().file_cache_stats.bytes_read_from_remote;
         stats_output->cached_bytes_total = 
reader.stats().file_cache_stats.bytes_write_into_cache;
+        if (config::is_cloud_mode()) {
+            stats_output->cloud_local_read_time =
+                    reader.stats().file_cache_stats.local_io_timer / 1000;
+            stats_output->cloud_remote_read_time =
+                    reader.stats().file_cache_stats.remote_io_timer / 1000;
+        }
     }
     RETURN_IF_ERROR(dst_rowset_writer->flush_columns(is_key));
 
diff --git a/be/src/olap/merger.h b/be/src/olap/merger.h
index 76d053a7a79..302e606371a 100644
--- a/be/src/olap/merger.h
+++ b/be/src/olap/merger.h
@@ -43,6 +43,8 @@ class VerticalBlockReader;
 class Merger {
 public:
     struct Statistics {
+        int64_t cloud_local_read_time = 0;
+        int64_t cloud_remote_read_time = 0;
         // number of rows written to the destination rowset after merge
         int64_t output_rows = 0;
         int64_t merged_rows = 0;


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

Reply via email to