diff options
3 files changed, 25 insertions, 4 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java index 5e3db348e50..f0fcae0d8e2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java @@ -79,7 +79,8 @@ public class VespaMetricSet extends MetricSet { metrics.add(new Metric("mem.heap.total.average")); metrics.add(new Metric("mem.heap.free.average")); metrics.add(new Metric("mem.heap.used.average")); - metrics.add(new Metric("memory_mappings_count.max")); + metrics.add(new Metric("jdisc.memory_mappings.max")); + metrics.add(new Metric("jdisc.open_file_descriptors.max")); return metrics; } @@ -190,7 +191,8 @@ public class VespaMetricSet extends MetricSet { // resource usage metrics.add(new Metric("content.proton.resource_usage.disk.average")); metrics.add(new Metric("content.proton.resource_usage.memory.average")); - metrics.add(new Metric("content.proton.resource_usage.memory_mappings_count.max")); + metrics.add(new Metric("content.proton.resource_usage.memory_mappings.max")); + metrics.add(new Metric("content.proton.resource_usage.open_file_descriptors.max")); metrics.add(new Metric("content.proton.resource_usage.feeding_blocked.last")); metrics.add(new Metric("content.proton.documentdb.attribute.resource_usage.enum_store.average")); metrics.add(new Metric("content.proton.documentdb.attribute.resource_usage.multi_value.average")); diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java index e23844c65b7..1c6e85a177a 100644 --- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java +++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java @@ -3,6 +3,7 @@ package com.yahoo.container.jdisc.metric; import java.util.Timer; import java.util.TimerTask; +import java.nio.file.DirectoryStream; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.Files; @@ -26,7 +27,8 @@ public class MetricUpdater extends AbstractComponent { private static final String MANHATTAN_FREE_MEMORY_BYTES = "mem.heap.free"; private static final String MANHATTAN_USED_MEMORY_BYTES = "mem.heap.used"; private static final String MANHATTAN_TOTAL_MEMORY_BYTES = "mem.heap.total"; - private static final String MEMORY_MAPPINGS_COUNT = "memory_mappings_count"; + private static final String MEMORY_MAPPINGS_COUNT = "jdisc.memory_mappings"; + private static final String OPEN_FILE_DESCRIPTORS = "jdisc.open_file_descriptors"; private final Metric metric; private final Timer timer = new Timer(); @@ -65,6 +67,7 @@ public class MetricUpdater extends AbstractComponent { metric.set(MANHATTAN_USED_MEMORY_BYTES, usedMemory, null); metric.set(MANHATTAN_TOTAL_MEMORY_BYTES, totalMemory, null); metric.set(MEMORY_MAPPINGS_COUNT, count_mappings(), null); + metric.set(OPEN_FILE_DESCRIPTORS, count_open_files(), null); } // Note: Linux-specific @@ -83,6 +86,22 @@ public class MetricUpdater extends AbstractComponent { } return count; } + + // Note: Linux-specific + private long count_open_files() { + long count = 0; + try { + Path p = Paths.get("/proc/self/fd"); + try (DirectoryStream<Path> stream = Files.newDirectoryStream(p)) { + for (Path entry : stream) { + ++count; + } + } + } catch (Exception e) { + System.err.println("Could not read /proc/self/fd: " + e); + } + return count; + } } } 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 908feb79c7f..670bf4d7d87 100644 --- a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp +++ b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp @@ -9,7 +9,7 @@ ResourceUsageMetrics::ResourceUsageMetrics(metrics::MetricSet *parent) : MetricSet("resource_usage", "", "Usage metrics for various resources in this search engine", parent), disk("disk", "", "The relative amount of disk space used on this machine (value in the range [0, 1])", this), memory("memory", "", "The relative amount of memory used by this process (value in the range [0, 1])", this), - memoryMappings("memory_mappings_count", "", "The number of mapped memory areas", this), + memoryMappings("memory_mappings", "", "The number of mapped memory areas", this), feedingBlocked("feeding_blocked", "", "Whether feeding is blocked due to resource limits being reached (value is either 0 or 1)", this) { } |