aboutsummaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@verizonmedia.com>2020-04-02 12:54:18 +0000
committerTor Brede Vekterli <vekterli@verizonmedia.com>2020-04-02 13:26:01 +0000
commit2d3acf264fd3a8661d21d5b3f36bc6d8a65ab895 (patch)
treecb833f5bbb1a20c80062575e672d88d5cf732eb6 /metrics
parentbe3c2e7f0f1f3edc07973dccb05b13bf30c75de1 (diff)
Add memory usage metrics for distributor bucket databases
Diffstat (limited to 'metrics')
-rw-r--r--metrics/CMakeLists.txt1
-rw-r--r--metrics/src/vespa/metrics/CMakeLists.txt1
-rw-r--r--metrics/src/vespa/metrics/common/CMakeLists.txt6
-rw-r--r--metrics/src/vespa/metrics/common/memory_usage_metrics.cpp28
-rw-r--r--metrics/src/vespa/metrics/common/memory_usage_metrics.h26
5 files changed, 62 insertions, 0 deletions
diff --git a/metrics/CMakeLists.txt b/metrics/CMakeLists.txt
index 6cf1eadd6f7..6f854fed7c6 100644
--- a/metrics/CMakeLists.txt
+++ b/metrics/CMakeLists.txt
@@ -9,6 +9,7 @@ vespa_define_module(
LIBS
src/vespa/metrics
+ src/vespa/metrics/common
TESTS
src/tests
diff --git a/metrics/src/vespa/metrics/CMakeLists.txt b/metrics/src/vespa/metrics/CMakeLists.txt
index 96156dc84b0..0d7eeba3601 100644
--- a/metrics/src/vespa/metrics/CMakeLists.txt
+++ b/metrics/src/vespa/metrics/CMakeLists.txt
@@ -20,6 +20,7 @@ vespa_add_library(metrics
valuemetric.cpp
valuemetricvalues.cpp
xmlwriter.cpp
+ $<TARGET_OBJECTS:metrics_common>
INSTALL lib64
DEPENDS
diff --git a/metrics/src/vespa/metrics/common/CMakeLists.txt b/metrics/src/vespa/metrics/common/CMakeLists.txt
new file mode 100644
index 00000000000..50183655dad
--- /dev/null
+++ b/metrics/src/vespa/metrics/common/CMakeLists.txt
@@ -0,0 +1,6 @@
+# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_library(metrics_common OBJECT
+ SOURCES
+ memory_usage_metrics.cpp
+ DEPENDS
+)
diff --git a/metrics/src/vespa/metrics/common/memory_usage_metrics.cpp b/metrics/src/vespa/metrics/common/memory_usage_metrics.cpp
new file mode 100644
index 00000000000..4848c96aea6
--- /dev/null
+++ b/metrics/src/vespa/metrics/common/memory_usage_metrics.cpp
@@ -0,0 +1,28 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "memory_usage_metrics.h"
+#include <vespa/vespalib/util/memoryusage.h>
+
+namespace metrics {
+
+MemoryUsageMetrics::MemoryUsageMetrics(metrics::MetricSet* parent)
+ : MetricSet("memory_usage", {}, "The memory usage for a given component", parent),
+ _allocated_bytes("allocated_bytes", {}, "The number of allocated bytes", this),
+ _used_bytes("used_bytes", {}, "The number of used bytes (<= allocatedbytes)", this),
+ _dead_bytes("dead_bytes", {}, "The number of dead bytes (<= usedbytes)", this),
+ _on_hold_bytes("onhold_bytes", {}, "The number of bytes on hold", this)
+{
+}
+
+MemoryUsageMetrics::~MemoryUsageMetrics() = default;
+
+void
+MemoryUsageMetrics::update(const vespalib::MemoryUsage& usage)
+{
+ _allocated_bytes.set(usage.allocatedBytes());
+ _used_bytes.set(usage.usedBytes());
+ _dead_bytes.set(usage.deadBytes());
+ _on_hold_bytes.set(usage.allocatedBytesOnHold());
+}
+
+}
diff --git a/metrics/src/vespa/metrics/common/memory_usage_metrics.h b/metrics/src/vespa/metrics/common/memory_usage_metrics.h
new file mode 100644
index 00000000000..7030db8c163
--- /dev/null
+++ b/metrics/src/vespa/metrics/common/memory_usage_metrics.h
@@ -0,0 +1,26 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/metrics/metrics.h>
+
+namespace vespalib { class MemoryUsage; }
+
+namespace metrics {
+
+/**
+ * Metric set for memory usage metrics.
+ */
+class MemoryUsageMetrics : public metrics::MetricSet {
+ metrics::LongValueMetric _allocated_bytes;
+ metrics::LongValueMetric _used_bytes;
+ metrics::LongValueMetric _dead_bytes;
+ metrics::LongValueMetric _on_hold_bytes;
+
+public:
+ explicit MemoryUsageMetrics(metrics::MetricSet* parent);
+ ~MemoryUsageMetrics() override;
+ void update(const vespalib::MemoryUsage& usage);
+};
+
+} // namespace metrics