zhiqiang-hhhh commented on code in PR #46640:
URL: https://github.com/apache/doris/pull/46640#discussion_r1908108818


##########
be/src/runtime/workload_group/workload_group_metrics.h:
##########
@@ -30,6 +31,11 @@ class WorkloadGroup;
 template <typename T>
 class AtomicCounter;
 using IntCounter = AtomicCounter<int64_t>;
+
+template <typename T>
+class AtomicGauge;
+using IntGuage = AtomicGauge<int64_t>;

Review Comment:
   Why need this?



##########
be/src/runtime/workload_group/workload_group_metrics.cpp:
##########
@@ -36,35 +43,23 @@ WorkloadGroupMetrics::WorkloadGroupMetrics(WorkloadGroup* 
wg) {
     _entity = DorisMetrics::instance()->metric_registry()->register_entity(
             "workload_group." + std::to_string(wg->id()), {{"workload_group", 
wg->name()}});

Review Comment:
   对于重复创建的同名的wg,这里的 wg->id()  是否会一样?



##########
be/src/runtime/workload_group/workload_group_metrics.cpp:
##########
@@ -36,35 +43,23 @@ WorkloadGroupMetrics::WorkloadGroupMetrics(WorkloadGroup* 
wg) {
     _entity = DorisMetrics::instance()->metric_registry()->register_entity(
             "workload_group." + std::to_string(wg->id()), {{"workload_group", 
wg->name()}});
 
-    _cpu_time_metric = std::make_unique<doris::MetricPrototype>(
-            doris::MetricType::COUNTER, doris::MetricUnit::SECONDS, 
"workload_group_cpu_time_sec");
-    _cpu_time_counter = 
(IntCounter*)(_entity->register_metric<IntCounter>(_cpu_time_metric.get()));
-
-    _mem_used_bytes_metric = std::make_unique<doris::MetricPrototype>(
-            doris::MetricType::COUNTER, doris::MetricUnit::BYTES, 
"workload_group_mem_used_bytes");
-    _mem_used_bytes_counter =
-            
(IntCounter*)(_entity->register_metric<IntCounter>(_mem_used_bytes_metric.get()));
-
-    _local_scan_bytes_metric = std::make_unique<doris::MetricPrototype>(
-            doris::MetricType::COUNTER, doris::MetricUnit::BYTES,
-            "workload_group_local_scan_bytes");
-    _local_scan_bytes_counter =
-            
(IntCounter*)(_entity->register_metric<IntCounter>(_local_scan_bytes_metric.get()));
-
-    _remote_scan_bytes_metric = std::make_unique<doris::MetricPrototype>(
-            doris::MetricType::COUNTER, doris::MetricUnit::BYTES,
-            "workload_group_remote_scan_bytes");
-    _remote_scan_bytes_counter =
-            
(IntCounter*)(_entity->register_metric<IntCounter>(_remote_scan_bytes_metric.get()));
+    INT_COUNTER_METRIC_REGISTER(_entity, workload_group_cpu_time_sec);
+    INT_GAUGE_METRIC_REGISTER(_entity, workload_group_mem_used_bytes);
+    INT_COUNTER_METRIC_REGISTER(_entity, workload_group_remote_scan_bytes);
+    INT_COUNTER_METRIC_REGISTER(_entity, 
workload_group_total_local_scan_bytes);
 
     std::vector<DataDirInfo>& data_dir_list = 
io::BeConfDataDirReader::be_config_data_dir_list;
     for (const auto& data_dir : data_dir_list) {
-        std::unique_ptr<doris::MetricPrototype> metric = 
std::make_unique<doris::MetricPrototype>(
-                doris::MetricType::COUNTER, doris::MetricUnit::BYTES,
-                "workload_group_local_scan_bytes_" + data_dir.metric_name);
-        _local_scan_bytes_counter_map.insert(
-                {data_dir.path, 
(IntCounter*)(_entity->register_metric<IntCounter>(metric.get()))});
-        _local_scan_bytes_metric_map.insert({data_dir.path, 
std::move(metric)});
+        std::string data_dir_metric_name =
+                "workload_group_io_" + data_dir.metric_name + "." + 
std::to_string(wg->id());
+        std::shared_ptr<MetricEntity> io_entity =
+                DorisMetrics::instance()->metric_registry()->register_entity(
+                        data_dir_metric_name,
+                        {{"workload_group", wg->name()}, {"path", 
data_dir.metric_name}});

Review Comment:
   对于重复创建的同名的 wg,这里是否会生成具有相同 name 以及 label 的entity?



##########
be/src/runtime/workload_group/workload_group_metrics.h:
##########
@@ -86,6 +84,7 @@ class WorkloadGroupMetrics {
     std::atomic<uint64_t> _memory_used {0};
 
     std::shared_ptr<MetricEntity> _entity {nullptr};
+    std::vector<std::shared_ptr<MetricEntity>> _io_entity_list;

Review Comment:
   Why shared_ptr? may be unique_ptr is enough.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to