summaryrefslogtreecommitdiffstats
path: root/container-disc
diff options
context:
space:
mode:
Diffstat (limited to 'container-disc')
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java21
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;
+ }
}
}