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

yiguolei pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new 207327f7417 [pick](branch-3.0) pick #44647 (#45839)
207327f7417 is described below

commit 207327f741705d824752c62314b4482a05dedd57
Author: Xinyi Zou <zouxi...@selectdb.com>
AuthorDate: Wed Dec 25 11:50:30 2024 +0800

    [pick](branch-3.0) pick #44647 (#45839)
---
 be/src/olap/metadata_adder.h       | 140 +++++++++++++++++++++++++++++++++++--
 be/src/olap/rowset/rowset.cpp      |   7 --
 be/src/olap/rowset/rowset.h        |   5 +-
 be/src/runtime/process_profile.cpp |  10 ++-
 4 files changed, 146 insertions(+), 16 deletions(-)

diff --git a/be/src/olap/metadata_adder.h b/be/src/olap/metadata_adder.h
index bdc9e7a398d..559c5db873b 100644
--- a/be/src/olap/metadata_adder.h
+++ b/be/src/olap/metadata_adder.h
@@ -20,11 +20,16 @@
 #include <bvar/bvar.h>
 #include <stdint.h>
 
+#include "util/runtime_profile.h"
+
 namespace doris {
 
 inline bvar::Adder<int64_t> 
g_rowset_meta_mem_bytes("doris_rowset_meta_mem_bytes");
 inline bvar::Adder<int64_t> g_rowset_meta_num("doris_rowset_meta_num");
 
+inline bvar::Adder<int64_t> 
g_all_rowsets_mem_bytes("doris_all_rowsets_mem_bytes");
+inline bvar::Adder<int64_t> g_all_rowsets_num("doris_all_rowsets_num");
+
 inline bvar::Adder<int64_t> 
g_tablet_meta_mem_bytes("doris_tablet_meta_mem_bytes");
 inline bvar::Adder<int64_t> g_tablet_meta_num("doris_tablet_meta_num");
 
@@ -37,8 +42,8 @@ inline bvar::Adder<int64_t> 
g_tablet_index_num("doris_tablet_index_num");
 inline bvar::Adder<int64_t> 
g_tablet_schema_mem_bytes("doris_tablet_schema_mem_bytes");
 inline bvar::Adder<int64_t> g_tablet_schema_num("doris_tablet_schema_num");
 
-inline bvar::Adder<int64_t> g_segment_mem_bytes("doris_segment_mem_bytes");
-inline bvar::Adder<int64_t> g_segment_num("doris_segment_num");
+inline bvar::Adder<int64_t> 
g_all_segments_mem_bytes("doris_all_segments_mem_bytes");
+inline bvar::Adder<int64_t> g_all_segments_num("doris_all_segments_num");
 
 inline bvar::Adder<int64_t> 
g_column_reader_mem_bytes("doris_column_reader_mem_bytes");
 inline bvar::Adder<int64_t> g_column_reader_num("doris_column_reader_num");
@@ -104,6 +109,8 @@ class MetadataAdder {
 public:
     MetadataAdder();
 
+    static void dump_metadata_object(RuntimeProfile* 
object_heap_dump_snapshot);
+
 protected:
     MetadataAdder(const MetadataAdder& other);
 
@@ -159,6 +166,8 @@ void MetadataAdder<T>::add_mem_size(int64_t val) {
     }
     if constexpr (std::is_same_v<T, RowsetMeta>) {
         g_rowset_meta_mem_bytes << val;
+    } else if constexpr (std::is_same_v<T, Rowset>) {
+        g_all_rowsets_mem_bytes << val;
     } else if constexpr (std::is_same_v<T, TabletMeta>) {
         g_tablet_meta_mem_bytes << val;
     } else if constexpr (std::is_same_v<T, TabletColumn>) {
@@ -168,7 +177,7 @@ void MetadataAdder<T>::add_mem_size(int64_t val) {
     } else if constexpr (std::is_same_v<T, TabletSchema>) {
         g_tablet_schema_mem_bytes << val;
     } else if constexpr (std::is_same_v<T, segment_v2::Segment>) {
-        g_segment_mem_bytes << val;
+        g_all_segments_mem_bytes << val;
     } else if constexpr (std::is_same_v<T, segment_v2::ColumnReader>) {
         g_column_reader_mem_bytes << val;
     } else if constexpr (std::is_same_v<T, segment_v2::BitmapIndexReader>) {
@@ -185,6 +194,9 @@ void MetadataAdder<T>::add_mem_size(int64_t val) {
         g_ordinal_index_reader_mem_bytes << val;
     } else if constexpr (std::is_same_v<T, segment_v2::ZoneMapIndexReader>) {
         g_zone_map_index_reader_mem_bytes << val;
+    } else {
+        LOG(FATAL) << "add_mem_size not match class type: " << 
typeid(T).name() << ", " << val;
+        __builtin_unreachable();
     }
 }
 
@@ -195,6 +207,8 @@ void MetadataAdder<T>::add_num(int64_t val) {
     }
     if constexpr (std::is_same_v<T, RowsetMeta>) {
         g_rowset_meta_num << val;
+    } else if constexpr (std::is_same_v<T, Rowset>) {
+        g_all_rowsets_num << val;
     } else if constexpr (std::is_same_v<T, TabletMeta>) {
         g_tablet_meta_num << val;
     } else if constexpr (std::is_same_v<T, TabletColumn>) {
@@ -204,7 +218,7 @@ void MetadataAdder<T>::add_num(int64_t val) {
     } else if constexpr (std::is_same_v<T, TabletSchema>) {
         g_tablet_schema_num << val;
     } else if constexpr (std::is_same_v<T, segment_v2::Segment>) {
-        g_segment_num << val;
+        g_all_segments_num << val;
     } else if constexpr (std::is_same_v<T, segment_v2::ColumnReader>) {
         g_column_reader_num << val;
     } else if constexpr (std::is_same_v<T, segment_v2::BitmapIndexReader>) {
@@ -221,7 +235,123 @@ void MetadataAdder<T>::add_num(int64_t val) {
         g_ordinal_index_reader_num << val;
     } else if constexpr (std::is_same_v<T, segment_v2::ZoneMapIndexReader>) {
         g_zone_map_index_reader_num << val;
+    } else {
+        LOG(FATAL) << "add_num not match class type: " << typeid(T).name() << 
", " << val;
+        __builtin_unreachable();
     }
 }
 
-}; // namespace doris
\ No newline at end of file
+template <typename T>
+void MetadataAdder<T>::dump_metadata_object(RuntimeProfile* 
object_heap_dump_snapshot) {
+    RuntimeProfile::Counter* rowset_meta_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "RowsetMetaMemBytes", 
TUnit::BYTES);
+    RuntimeProfile::Counter* rowset_meta_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "RowsetMetaNum", 
TUnit::UNIT);
+    COUNTER_SET(rowset_meta_mem_bytes_counter, 
g_rowset_meta_mem_bytes.get_value());
+    COUNTER_SET(rowset_meta_num_counter, g_rowset_meta_num.get_value());
+
+    RuntimeProfile::Counter* all_rowsets_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "AllRowsetsMemBytes", 
TUnit::BYTES);
+    RuntimeProfile::Counter* all_rowsets_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "AllRowsetsNum", 
TUnit::UNIT);
+    COUNTER_SET(all_rowsets_mem_bytes_counter, 
g_all_rowsets_mem_bytes.get_value());
+    COUNTER_SET(all_rowsets_num_counter, g_all_rowsets_num.get_value());
+
+    RuntimeProfile::Counter* tablet_meta_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "TabletMetaMemBytes", 
TUnit::BYTES);
+    RuntimeProfile::Counter* tablet_meta_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "TabletMetaNum", 
TUnit::UNIT);
+    COUNTER_SET(tablet_meta_mem_bytes_counter, 
g_tablet_meta_mem_bytes.get_value());
+    COUNTER_SET(tablet_meta_num_counter, g_tablet_meta_num.get_value());
+
+    RuntimeProfile::Counter* tablet_column_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "TabletColumnMemBytes", 
TUnit::BYTES);
+    RuntimeProfile::Counter* tablet_column_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "TabletColumnNum", 
TUnit::UNIT);
+    COUNTER_SET(tablet_column_mem_bytes_counter, 
g_tablet_column_mem_bytes.get_value());
+    COUNTER_SET(tablet_column_num_counter, g_tablet_column_num.get_value());
+
+    RuntimeProfile::Counter* tablet_index_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "TabletIndexMemBytes", 
TUnit::BYTES);
+    RuntimeProfile::Counter* tablet_index_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "TabletIndexNum", 
TUnit::UNIT);
+    COUNTER_SET(tablet_index_mem_bytes_counter, 
g_tablet_index_mem_bytes.get_value());
+    COUNTER_SET(tablet_index_num_counter, g_tablet_index_num.get_value());
+
+    RuntimeProfile::Counter* tablet_schema_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "TabletSchemaMemBytes", 
TUnit::BYTES);
+    RuntimeProfile::Counter* tablet_schema_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "TabletSchemaNum", 
TUnit::UNIT);
+    COUNTER_SET(tablet_schema_mem_bytes_counter, 
g_tablet_schema_mem_bytes.get_value());
+    COUNTER_SET(tablet_schema_num_counter, g_tablet_schema_num.get_value());
+
+    RuntimeProfile::Counter* all_segments_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "AllSegmentsMemBytes", 
TUnit::BYTES);
+    RuntimeProfile::Counter* all_segments_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "AllSegmentsNum", 
TUnit::UNIT);
+    COUNTER_SET(all_segments_mem_bytes_counter, 
g_all_segments_mem_bytes.get_value());
+    COUNTER_SET(all_segments_num_counter, g_all_segments_num.get_value());
+
+    RuntimeProfile::Counter* column_reader_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "ColumnReaderMemBytes", 
TUnit::BYTES);
+    RuntimeProfile::Counter* column_reader_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "ColumnReaderNum", 
TUnit::UNIT);
+    COUNTER_SET(column_reader_mem_bytes_counter, 
g_column_reader_mem_bytes.get_value());
+    COUNTER_SET(column_reader_num_counter, g_column_reader_num.get_value());
+
+    RuntimeProfile::Counter* bitmap_index_reader_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, 
"BitmapIndexReaderMemBytes", TUnit::BYTES);
+    RuntimeProfile::Counter* bitmap_index_reader_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "BitmapIndexReaderNum", 
TUnit::UNIT);
+    COUNTER_SET(bitmap_index_reader_mem_bytes_counter, 
g_bitmap_index_reader_mem_bytes.get_value());
+    COUNTER_SET(bitmap_index_reader_num_counter, 
g_bitmap_index_reader_num.get_value());
+
+    RuntimeProfile::Counter* bloom_filter_index_reader_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, 
"BloomFilterIndexReaderMemBytes", TUnit::BYTES);
+    RuntimeProfile::Counter* filter_index_reader_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, 
"BloomFilterIndexReaderNum", TUnit::UNIT);
+    COUNTER_SET(bloom_filter_index_reader_mem_bytes_counter,
+                g_bloom_filter_index_reader_mem_bytes.get_value());
+    COUNTER_SET(filter_index_reader_num_counter, 
g_bloom_filter_index_reader_num.get_value());
+
+    RuntimeProfile::Counter* index_page_reader_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "IndexPageReaderMemBytes", 
TUnit::BYTES);
+    RuntimeProfile::Counter* index_page_reader_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "IndexPageReaderNum", 
TUnit::UNIT);
+    COUNTER_SET(index_page_reader_mem_bytes_counter, 
g_index_page_reader_mem_bytes.get_value());
+    COUNTER_SET(index_page_reader_num_counter, 
g_index_page_reader_num.get_value());
+
+    RuntimeProfile::Counter* indexed_column_reader_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, 
"IndexedColumnReaderMemBytes", TUnit::BYTES);
+    RuntimeProfile::Counter* indexed_column_reader_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "IndexedColumnReaderNum", 
TUnit::UNIT);
+    COUNTER_SET(indexed_column_reader_mem_bytes_counter,
+                g_indexed_column_reader_mem_bytes.get_value());
+    COUNTER_SET(indexed_column_reader_num_counter, 
g_indexed_column_reader_num.get_value());
+
+    RuntimeProfile::Counter* inverted_index_reader_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, 
"InvertedIndexReaderMemBytes", TUnit::BYTES);
+    RuntimeProfile::Counter* inverted_index_reader_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "InvertedIndexReaderNum", 
TUnit::UNIT);
+    COUNTER_SET(inverted_index_reader_mem_bytes_counter,
+                g_inverted_index_reader_mem_bytes.get_value());
+    COUNTER_SET(inverted_index_reader_num_counter, 
g_inverted_index_reader_num.get_value());
+
+    RuntimeProfile::Counter* ordinal_index_reader_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, 
"OrdinalIndexReaderMemBytes", TUnit::BYTES);
+    RuntimeProfile::Counter* ordinal_index_reader_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "OrdinalIndexReaderNum", 
TUnit::UNIT);
+    COUNTER_SET(ordinal_index_reader_mem_bytes_counter,
+                g_ordinal_index_reader_mem_bytes.get_value());
+    COUNTER_SET(ordinal_index_reader_num_counter, 
g_ordinal_index_reader_num.get_value());
+
+    RuntimeProfile::Counter* zone_map_index_reader_mem_bytes_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, 
"ZoneMapIndexReaderMemBytes", TUnit::BYTES);
+    RuntimeProfile::Counter* zone_map_index_reader_num_counter =
+            ADD_COUNTER(object_heap_dump_snapshot, "ZoneMapIndexReaderNum", 
TUnit::UNIT);
+    COUNTER_SET(zone_map_index_reader_mem_bytes_counter,
+                g_zone_map_index_reader_mem_bytes.get_value());
+    COUNTER_SET(zone_map_index_reader_num_counter, 
g_zone_map_index_reader_num.get_value());
+}
+
+}; // namespace doris
diff --git a/be/src/olap/rowset/rowset.cpp b/be/src/olap/rowset/rowset.cpp
index 256f4d35313..ac3a2a7a1dc 100644
--- a/be/src/olap/rowset/rowset.cpp
+++ b/be/src/olap/rowset/rowset.cpp
@@ -27,8 +27,6 @@
 
 namespace doris {
 
-static bvar::Adder<size_t> g_total_rowset_num("doris_total_rowset_num");
-
 Rowset::Rowset(const TabletSchemaSPtr& schema, RowsetMetaSharedPtr rowset_meta,
                std::string tablet_path)
         : _rowset_meta(std::move(rowset_meta)),
@@ -56,11 +54,6 @@ Rowset::Rowset(const TabletSchemaSPtr& schema, 
RowsetMetaSharedPtr rowset_meta,
     }
     // build schema from RowsetMeta.tablet_schema or Tablet.tablet_schema
     _schema = _rowset_meta->tablet_schema() ? _rowset_meta->tablet_schema() : 
schema;
-    g_total_rowset_num << 1;
-}
-
-Rowset::~Rowset() {
-    g_total_rowset_num << -1;
 }
 
 Status Rowset::load(bool use_cache) {
diff --git a/be/src/olap/rowset/rowset.h b/be/src/olap/rowset/rowset.h
index e1a2347f6ae..98d88ba19f2 100644
--- a/be/src/olap/rowset/rowset.h
+++ b/be/src/olap/rowset/rowset.h
@@ -33,6 +33,7 @@
 
 #include "common/logging.h"
 #include "common/status.h"
+#include "olap/metadata_adder.h"
 #include "olap/olap_common.h"
 #include "olap/rowset/rowset_meta.h"
 #include "olap/tablet_schema.h"
@@ -116,10 +117,8 @@ private:
     RowsetState _rowset_state;
 };
 
-class Rowset : public std::enable_shared_from_this<Rowset> {
+class Rowset : public std::enable_shared_from_this<Rowset>, public 
MetadataAdder<Rowset> {
 public:
-    virtual ~Rowset();
-
     // Open all segment files in this rowset and load necessary metadata.
     // - `use_cache` : whether to use fd cache, only applicable to alpha 
rowset now
     //
diff --git a/be/src/runtime/process_profile.cpp 
b/be/src/runtime/process_profile.cpp
index d91aedbeac2..60b381e9c31 100644
--- a/be/src/runtime/process_profile.cpp
+++ b/be/src/runtime/process_profile.cpp
@@ -19,6 +19,7 @@
 
 #include <memory>
 
+#include "olap/metadata_adder.h"
 #include "runtime/memory/memory_profile.h"
 
 namespace doris {
@@ -37,8 +38,15 @@ void ProcessProfile::refresh_profile() {
     std::unique_ptr<RuntimeProfile> process_profile =
             std::make_unique<RuntimeProfile>("ProcessProfile");
     _memory_profile->make_memory_profile(process_profile.get());
-    _process_profile.set(std::move(process_profile));
     // TODO make other profile
+
+    // 3. dump object heap
+    RuntimeProfile* object_heap_dump_snapshot =
+            process_profile->create_child("ObjectHeapDump", true, false);
+    
MetadataAdder<ProcessProfile>::dump_metadata_object(object_heap_dump_snapshot);
+    // TODO dump other object (block, column, etc.)
+
+    _process_profile.set(std::move(process_profile));
 }
 
 } // namespace doris


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to