aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2022-01-24 14:14:02 +0000
committerHåvard Pettersen <havardpe@oath.com>2022-01-24 14:56:08 +0000
commit2e569972c83f4d51bfd80bd81c07cc78dde04ef3 (patch)
tree91e8b592c546bfb0d65f3b03af0e568494cea92d /searchcore
parente114e209caed815a3e511e78b26e0894c6cec7c1 (diff)
added cpu util metrics
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp7
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h5
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton.cpp8
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton.h2
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;