diff options
Diffstat (limited to 'searchcore')
3 files changed, 9 insertions, 2 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 85b2a7a4b99..c56db96ee8d 100644 --- a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp +++ b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp @@ -14,10 +14,11 @@ ResourceUsageMetrics::ResourceUsageMetrics(metrics::MetricSet *parent) transient_disk("transient_disk", {}, "The relative amount of transient disk needed for running disk index fusion. Max value among all disk indexes (value in the range [0, 1])", this), 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) + 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) { } -ResourceUsageMetrics::~ResourceUsageMetrics() {} +ResourceUsageMetrics::~ResourceUsageMetrics() = default; } // namespace proton 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 038d9149b3b..acadeba8372 100644 --- a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h +++ b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h @@ -21,6 +21,7 @@ struct ResourceUsageMetrics : metrics::MetricSet metrics::LongValueMetric memoryMappings; metrics::LongValueMetric openFileDescriptors; metrics::LongValueMetric feedingBlocked; + metrics::LongValueMetric mallocArena; 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 26e1bc8b951..139df7f8799 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/proton.cpp @@ -40,6 +40,7 @@ #include <vespa/vespalib/util/mmap_file_allocator_factory.h> #include <vespa/vespalib/util/random.h> #include <vespa/vespalib/util/size_literals.h> +#include <malloc.h> #include <vespa/searchlib/aggregation/forcelink.hpp> #include <vespa/searchlib/expression/forcelink.hpp> @@ -763,6 +764,10 @@ Proton::updateMetrics(const metrics::MetricLockGuard &) metrics.resourceUsage.memoryMappings.set(usageFilter.getMemoryStats().getMappingsCount()); metrics.resourceUsage.openFileDescriptors.set(FastOS_File::count_open_files()); metrics.resourceUsage.feedingBlocked.set((usageFilter.acceptWriteOperation() ? 0.0 : 1.0)); + struct mallinfo mallocInfo = mallinfo(); + // Vespamalloc reports arena in 1M blocks as an 'int' is too small. + // If we use something else than vespamalloc this must be changed. + metrics.resourceUsage.mallocArena.set(uint64_t(mallocInfo.arena) << 20); } { ContentProtonMetrics::ProtonExecutorMetrics &metrics = _metricsEngine->root().executor; |