diff options
Diffstat (limited to 'metrics')
-rw-r--r-- | metrics/CMakeLists.txt | 1 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/CMakeLists.txt | 1 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/common/CMakeLists.txt | 6 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/common/memory_usage_metrics.cpp | 28 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/common/memory_usage_metrics.h | 26 |
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 |