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