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

panxiaolei pushed a commit to branch refactor_rf
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 6c6033c0fc9f02796976ff40d3c98031c73e6290
Author: BiteTheDDDDt <x...@selectdb.com>
AuthorDate: Tue Mar 11 15:45:22 2025 +0800

    add some metrics
---
 be/src/runtime_filter/runtime_filter_consumer.cpp |  4 ++++
 be/src/runtime_filter/runtime_filter_consumer.h   |  2 ++
 be/src/util/doris_metrics.cpp                     | 11 +++++++++++
 be/src/util/doris_metrics.h                       |  5 +++++
 4 files changed, 22 insertions(+)

diff --git a/be/src/runtime_filter/runtime_filter_consumer.cpp 
b/be/src/runtime_filter/runtime_filter_consumer.cpp
index a33ea9580b7..927fdf40da9 100644
--- a/be/src/runtime_filter/runtime_filter_consumer.cpp
+++ b/be/src/runtime_filter/runtime_filter_consumer.cpp
@@ -56,6 +56,7 @@ Status 
RuntimeFilterConsumer::acquire_expr(std::vector<vectorized::VRuntimeFilte
     }
     if (_rf_state != State::APPLIED && _rf_state != State::TIMEOUT) {
         _set_state(State::TIMEOUT);
+        
DorisMetrics::instance()->runtime_filter_consumer_timeout_num->increment(1);
         _profile->add_info_string("ReachTimeoutLimit", "true");
     }
     return Status::OK();
@@ -69,6 +70,9 @@ void RuntimeFilterConsumer::signal(RuntimeFilter* other) {
                           RuntimeFilterWrapper::State::READY});
     _check_state({State::NOT_READY, State::TIMEOUT});
     _set_state(State::READY);
+    DorisMetrics::instance()->runtime_filter_consumer_ready_num->increment(1);
+    
DorisMetrics::instance()->runtime_filter_consumer_wait_ready_ms->increment(MonotonicMillis()
 -
+                                                                               
_registration_time);
     if (!_filter_timer.empty()) {
         for (auto& timer : _filter_timer) {
             timer->call_ready();
diff --git a/be/src/runtime_filter/runtime_filter_consumer.h 
b/be/src/runtime_filter/runtime_filter_consumer.h
index e67278c3813..cd06b5924c8 100644
--- a/be/src/runtime_filter/runtime_filter_consumer.h
+++ b/be/src/runtime_filter/runtime_filter_consumer.h
@@ -98,6 +98,8 @@ private:
         _profile->add_child(_storage_profile.get(), true, nullptr);
         _profile->add_child(_execution_profile.get(), true, nullptr);
         _wait_timer = ADD_TIMER(_profile, "WaitTime");
+
+        DorisMetrics::instance()->runtime_filter_consumer_num->increment(1);
     }
 
     Status _apply_ready_expr(std::vector<vectorized::VRuntimeFilterPtr>& 
push_exprs);
diff --git a/be/src/util/doris_metrics.cpp b/be/src/util/doris_metrics.cpp
index 48b88cd5727..ee5d54536d3 100644
--- a/be/src/util/doris_metrics.cpp
+++ b/be/src/util/doris_metrics.cpp
@@ -197,6 +197,12 @@ DEFINE_COUNTER_METRIC_PROTOTYPE_2ARG(scanner_ctx_cnt, 
MetricUnit::NOUNIT);
 DEFINE_COUNTER_METRIC_PROTOTYPE_2ARG(scanner_cnt, MetricUnit::NOUNIT);
 DEFINE_COUNTER_METRIC_PROTOTYPE_2ARG(scanner_task_cnt, MetricUnit::NOUNIT);
 
+DEFINE_GAUGE_CORE_METRIC_PROTOTYPE_2ARG(runtime_filter_consumer_num, 
MetricUnit::NOUNIT);
+DEFINE_GAUGE_CORE_METRIC_PROTOTYPE_2ARG(runtime_filter_consumer_ready_num, 
MetricUnit::NOUNIT);
+DEFINE_COUNTER_METRIC_PROTOTYPE_2ARG(runtime_filter_consumer_wait_ready_ms,
+                                     MetricUnit::MILLISECONDS);
+DEFINE_GAUGE_CORE_METRIC_PROTOTYPE_2ARG(runtime_filter_consumer_timeout_num, 
MetricUnit::NOUNIT);
+
 const std::string DorisMetrics::_s_registry_name = "doris_be";
 const std::string DorisMetrics::_s_hook_name = "doris_metrics";
 
@@ -326,6 +332,11 @@ DorisMetrics::DorisMetrics() : 
_metric_registry(_s_registry_name) {
     INT_COUNTER_METRIC_REGISTER(_server_metric_entity, scanner_ctx_cnt);
     INT_COUNTER_METRIC_REGISTER(_server_metric_entity, scanner_cnt);
     INT_COUNTER_METRIC_REGISTER(_server_metric_entity, scanner_task_cnt);
+
+    INT_GAUGE_METRIC_REGISTER(_server_metric_entity, 
runtime_filter_consumer_num);
+    INT_GAUGE_METRIC_REGISTER(_server_metric_entity, 
runtime_filter_consumer_ready_num);
+    INT_COUNTER_METRIC_REGISTER(_server_metric_entity, 
runtime_filter_consumer_wait_ready_ms);
+    INT_GAUGE_METRIC_REGISTER(_server_metric_entity, 
runtime_filter_consumer_timeout_num);
 }
 
 void DorisMetrics::initialize(bool init_system_metrics, const 
std::set<std::string>& disk_devices,
diff --git a/be/src/util/doris_metrics.h b/be/src/util/doris_metrics.h
index 6fbc24d6922..2193777d44f 100644
--- a/be/src/util/doris_metrics.h
+++ b/be/src/util/doris_metrics.h
@@ -231,6 +231,11 @@ public:
     IntCounter* scanner_cnt = nullptr;
     IntCounter* scanner_task_cnt = nullptr;
 
+    IntGauge* runtime_filter_consumer_num = nullptr;
+    IntGauge* runtime_filter_consumer_ready_num = nullptr;
+    IntCounter* runtime_filter_consumer_wait_ready_ms = nullptr;
+    IntGauge* runtime_filter_consumer_timeout_num = nullptr;
+
     static DorisMetrics* instance() {
         static DorisMetrics instance;
         return &instance;


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

Reply via email to