You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2021/04/23 13:23:43 UTC
[incubator-doris] branch master updated: [Metric] Add metrics of
tablet version num distribution (#5665)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
The following commit(s) were added to refs/heads/master by this push:
new ad3a0fb [Metric] Add metrics of tablet version num distribution (#5665)
ad3a0fb is described below
commit ad3a0fb79dc61309a277cf2db8f382ca751bc93e
Author: weizuo93 <68...@users.noreply.github.com>
AuthorDate: Fri Apr 23 21:23:22 2021 +0800
[Metric] Add metrics of tablet version num distribution (#5665)
Add metrics (P50, P75, P90, P95, P99, etc.) to show the distribution of tablets version count.
```
# TYPE doris_be_tablet_version_num_distribution histogram
doris_be_tablet_version_num_distribution{quantile="0.50"} 9.21429
doris_be_tablet_version_num_distribution{quantile="0.75"} 11.7949
doris_be_tablet_version_num_distribution{quantile="0.90"} 13
doris_be_tablet_version_num_distribution{quantile="0.95"} 13
doris_be_tablet_version_num_distribution{quantile="0.99"} 13
doris_be_tablet_version_num_distribution_sum 950
doris_be_tablet_version_num_distribution_count 100
```
---
be/src/olap/tablet_manager.cpp | 7 ++++++-
be/src/util/doris_metrics.cpp | 4 ++++
be/src/util/doris_metrics.h | 2 ++
be/src/util/metrics.cpp | 6 ++++++
be/src/util/metrics.h | 7 +++++++
5 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/be/src/olap/tablet_manager.cpp b/be/src/olap/tablet_manager.cpp
index cedeabb..c35c5c8 100644
--- a/be/src/olap/tablet_manager.cpp
+++ b/be/src/olap/tablet_manager.cpp
@@ -47,6 +47,7 @@
#include "olap/utils.h"
#include "util/doris_metrics.h"
#include "util/file_utils.h"
+#include "util/histogram.h"
#include "util/path_util.h"
#include "util/pretty_printer.h"
#include "util/scoped_cleanup.h"
@@ -964,7 +965,7 @@ OLAPStatus TabletManager::build_all_report_tablets_info(std::map<TTabletId, TTab
LOG(INFO) << "find expired transactions for " << expire_txn_map.size() << " tablets";
DorisMetrics::instance()->report_all_tablets_requests_total->increment(1);
-
+ HistogramStat tablet_version_num_hist;
for (const auto& tablets_shard : _tablets_shards) {
ReadLock rlock(tablets_shard.lock.get());
for (const auto& item : tablets_shard.tablet_map) {
@@ -986,6 +987,9 @@ OLAPStatus TabletManager::build_all_report_tablets_info(std::map<TTabletId, TTab
expire_txn_map.erase(find);
}
t_tablet.tablet_infos.push_back(tablet_info);
+ if (tablet_ptr->tablet_id() == tablet_id) {
+ tablet_version_num_hist.add(tablet_ptr->version_count());
+ }
}
if (!t_tablet.tablet_infos.empty()) {
@@ -993,6 +997,7 @@ OLAPStatus TabletManager::build_all_report_tablets_info(std::map<TTabletId, TTab
}
}
}
+ DorisMetrics::instance()->tablet_version_num_distribution->set_histogram(tablet_version_num_hist);
LOG(INFO) << "success to build all report tablets info. tablet_count=" << tablets_info->size();
return OLAP_SUCCESS;
}
diff --git a/be/src/util/doris_metrics.cpp b/be/src/util/doris_metrics.cpp
index 4d267da..a1d6763 100644
--- a/be/src/util/doris_metrics.cpp
+++ b/be/src/util/doris_metrics.cpp
@@ -143,6 +143,8 @@ DEFINE_GAUGE_METRIC_PROTOTYPE_2ARG(tablet_base_max_compaction_score, MetricUnit:
DEFINE_GAUGE_METRIC_PROTOTYPE_2ARG(compaction_used_permits, MetricUnit::NOUNIT);
DEFINE_GAUGE_METRIC_PROTOTYPE_2ARG(compaction_waitting_permits, MetricUnit::NOUNIT);
+DEFINE_HISTOGRAM_METRIC_PROTOTYPE_2ARG(tablet_version_num_distribution, MetricUnit::NOUNIT);
+
DEFINE_GAUGE_CORE_METRIC_PROTOTYPE_2ARG(push_request_write_bytes_per_second, MetricUnit::BYTES);
DEFINE_GAUGE_CORE_METRIC_PROTOTYPE_2ARG(query_scan_bytes_per_second, MetricUnit::BYTES);
DEFINE_GAUGE_CORE_METRIC_PROTOTYPE_2ARG(max_disk_io_util_percent, MetricUnit::PERCENT);
@@ -250,6 +252,8 @@ DorisMetrics::DorisMetrics() : _metric_registry(_s_registry_name) {
INT_GAUGE_METRIC_REGISTER(_server_metric_entity, compaction_used_permits);
INT_GAUGE_METRIC_REGISTER(_server_metric_entity, compaction_waitting_permits);
+ HISTOGRAM_METRIC_REGISTER(_server_metric_entity, tablet_version_num_distribution);
+
INT_GAUGE_METRIC_REGISTER(_server_metric_entity, push_request_write_bytes_per_second);
INT_GAUGE_METRIC_REGISTER(_server_metric_entity, query_scan_bytes_per_second);
INT_GAUGE_METRIC_REGISTER(_server_metric_entity, max_disk_io_util_percent);
diff --git a/be/src/util/doris_metrics.h b/be/src/util/doris_metrics.h
index cab2873..f5164f7 100644
--- a/be/src/util/doris_metrics.h
+++ b/be/src/util/doris_metrics.h
@@ -140,6 +140,8 @@ public:
// permits required by the compaction task which is waitting for permits
IntGauge* compaction_waitting_permits;
+ HistogramMetric* tablet_version_num_distribution;
+
// The following metrics will be calculated
// by metric calculator
IntGauge* push_request_write_bytes_per_second;
diff --git a/be/src/util/metrics.cpp b/be/src/util/metrics.cpp
index fda8873..816fb3d 100644
--- a/be/src/util/metrics.cpp
+++ b/be/src/util/metrics.cpp
@@ -138,6 +138,12 @@ void HistogramMetric::merge(const HistogramMetric& other) {
_stats.merge(other._stats);
}
+void HistogramMetric::set_histogram(const HistogramStat& stats) {
+ std::lock_guard<SpinLock> l(_lock);
+ _stats.clear();
+ _stats.merge(stats);
+}
+
double HistogramMetric::median() const {
return _stats.median();
}
diff --git a/be/src/util/metrics.h b/be/src/util/metrics.h
index bffc46c..fca08cf 100644
--- a/be/src/util/metrics.h
+++ b/be/src/util/metrics.h
@@ -177,6 +177,7 @@ public:
bool is_empty() const;
void add(const uint64_t& value);
void merge(const HistogramMetric& other);
+ void set_histogram(const HistogramStat& stats);
uint64_t min() const { return _stats.min(); }
uint64_t max() const { return _stats.max(); }
@@ -286,6 +287,9 @@ public:
#define DEFINE_GAUGE_METRIC_PROTOTYPE_5ARG(name, unit, desc, group, labels) \
DEFINE_METRIC_PROTOTYPE(name, MetricType::GAUGE, unit, desc, #group, labels, false)
+#define DEFINE_HISTOGRAM_METRIC_PROTOTYPE_2ARG(name, unit) \
+ DEFINE_METRIC_PROTOTYPE(name, MetricType::HISTOGRAM, unit, "", "", Labels(), false)
+
#define INT_COUNTER_METRIC_REGISTER(entity, metric) \
metric = (IntCounter*)(entity->register_metric<IntCounter>(&METRIC_##metric))
@@ -301,6 +305,9 @@ public:
#define INT_ATOMIC_COUNTER_METRIC_REGISTER(entity, metric) \
metric = (IntAtomicCounter*)(entity->register_metric<IntAtomicCounter>(&METRIC_##metric))
+#define HISTOGRAM_METRIC_REGISTER(entity, metric) \
+ metric = (HistogramMetric*)(entity->register_metric<HistogramMetric>(&METRIC_##metric))
+
#define METRIC_DEREGISTER(entity, metric) entity->deregister_metric(&METRIC_##metric)
// For 'metrics' in MetricEntity.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org