diff options
Diffstat (limited to 'container-disc')
-rw-r--r-- | container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java | 21 |
1 files changed, 20 insertions, 1 deletions
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; + } } } |