diff options
author | Håvard Pettersen <havardpe@oath.com> | 2022-01-24 14:14:02 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2022-01-24 14:56:08 +0000 |
commit | 2e569972c83f4d51bfd80bd81c07cc78dde04ef3 (patch) | |
tree | 91e8b592c546bfb0d65f3b03af0e568494cea92d /searchcore | |
parent | e114e209caed815a3e511e78b26e0894c6cec7c1 (diff) |
added cpu util metrics
Diffstat (limited to 'searchcore')
4 files changed, 21 insertions, 1 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp index 9bc20f95d13..6a10dd48f9c 100644 --- a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp +++ b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp @@ -15,7 +15,12 @@ ResourceUsageMetrics::ResourceUsageMetrics(metrics::MetricSet *parent) memoryMappings("memory_mappings", {}, "The number of mapped memory areas", this), openFileDescriptors("open_file_descriptors", {}, "The number of open files", this), feedingBlocked("feeding_blocked", {}, "Whether feeding is blocked due to resource limits being reached (value is either 0 or 1)", this), - mallocArena("malloc_arena", {}, "Size of malloc arena", this) + mallocArena("malloc_arena", {}, "Size of malloc arena", this), + cpu_setup( "cpu_util", {{"category", "setup"}}, "cpu utilization for the given category", this), + cpu_read( "cpu_util", {{"category", "read"}}, "cpu utilization for the given category", this), + cpu_write( "cpu_util", {{"category", "write"}}, "cpu utilization for the given category", this), + cpu_compact("cpu_util", {{"category", "compact"}}, "cpu utilization for the given category", this), + cpu_other( "cpu_util", {{"category", "other"}}, "cpu utilization for the given category", this) { } diff --git a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h index 774bb645c84..ee37cce0ca0 100644 --- a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h +++ b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h @@ -22,6 +22,11 @@ struct ResourceUsageMetrics : metrics::MetricSet metrics::LongValueMetric openFileDescriptors; metrics::LongValueMetric feedingBlocked; metrics::LongValueMetric mallocArena; + metrics::DoubleValueMetric cpu_setup; + metrics::DoubleValueMetric cpu_read; + metrics::DoubleValueMetric cpu_write; + metrics::DoubleValueMetric cpu_compact; + metrics::DoubleValueMetric cpu_other; ResourceUsageMetrics(metrics::MetricSet *parent); ~ResourceUsageMetrics(); diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.cpp b/searchcore/src/vespa/searchcore/proton/server/proton.cpp index b128fe16e5e..f12758345c4 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/proton.cpp @@ -61,6 +61,7 @@ using vespalib::Slime; using vespalib::makeLambdaTask; using vespalib::slime::ArrayInserter; using vespalib::slime::Cursor; +using CpuCategory = vespalib::CpuUsage::Category; using search::transactionlog::DomainStats; using vespa::config::search::core::ProtonConfig; @@ -207,6 +208,7 @@ Proton::Proton(const config::ConfigUri & configUri, StatusProducer(), IPersistenceEngineOwner(), ComponentConfigProducer(), + _cpu_util(), _configUri(configUri), _mutex(), _metricsHook(std::make_unique<MetricsUpdateHook>(*this)), @@ -775,6 +777,12 @@ Proton::updateMetrics(const metrics::MetricLockGuard &) #else metrics.resourceUsage.mallocArena.set(UINT64_C(0)); #endif + auto cpu_util = _cpu_util.get_util(); + metrics.resourceUsage.cpu_setup.set(cpu_util[CpuCategory::SETUP]); + metrics.resourceUsage.cpu_read.set(cpu_util[CpuCategory::READ]); + metrics.resourceUsage.cpu_write.set(cpu_util[CpuCategory::WRITE]); + metrics.resourceUsage.cpu_compact.set(cpu_util[CpuCategory::COMPACT]); + metrics.resourceUsage.cpu_other.set(cpu_util[CpuCategory::OTHER]); } { ContentProtonMetrics::ProtonExecutorMetrics &metrics = _metricsEngine->root().executor; diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.h b/searchcore/src/vespa/searchcore/proton/server/proton.h index 573f215c722..90a257a0aaa 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.h +++ b/searchcore/src/vespa/searchcore/proton/server/proton.h @@ -25,6 +25,7 @@ #include <vespa/vespalib/net/json_handler_repo.h> #include <vespa/vespalib/net/state_explorer.h> #include <vespa/vespalib/util/varholder.h> +#include <vespa/vespalib/util/cpu_usage.h> #include <mutex> #include <shared_mutex> @@ -81,6 +82,7 @@ private: void setClusterName(const vespalib::string &clusterName, const vespalib::string &baseDir); }; + vespalib::CpuUtil _cpu_util; const config::ConfigUri _configUri; mutable std::shared_mutex _mutex; std::unique_ptr<metrics::UpdateHook> _metricsHook; |