From d2ad0038911622f8365a07945725e0728c5f1666 Mon Sep 17 00:00:00 2001 From: Ameya Lokare Date: Wed, 23 Apr 2025 11:09:38 -0700 Subject: [PATCH] Remove free memory and OS memory gauges --- .../metrics/FreeMemoryGauge.java | 32 ------- .../textsecuregcm/metrics/MetricsUtil.java | 3 - .../metrics/OperatingSystemMemoryGauge.java | 56 ------------ .../OperatingSystemMemoryGaugeTest.java | 91 ------------------- spam-filter | 2 +- 5 files changed, 1 insertion(+), 183 deletions(-) delete mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/metrics/FreeMemoryGauge.java delete mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/metrics/OperatingSystemMemoryGauge.java delete mode 100644 service/src/test/java/org/whispersystems/textsecuregcm/metrics/OperatingSystemMemoryGaugeTest.java diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/FreeMemoryGauge.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/FreeMemoryGauge.java deleted file mode 100644 index 38d8f2823..000000000 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/FreeMemoryGauge.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2013-2020 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.whispersystems.textsecuregcm.metrics; - -import static org.whispersystems.textsecuregcm.metrics.MetricsUtil.name; - -import com.sun.management.OperatingSystemMXBean; -import io.micrometer.core.instrument.Gauge; -import io.micrometer.core.instrument.MeterRegistry; -import io.micrometer.core.instrument.binder.MeterBinder; -import java.lang.management.ManagementFactory; - -public class FreeMemoryGauge implements MeterBinder { - - private final OperatingSystemMXBean operatingSystemMXBean; - - public FreeMemoryGauge() { - this.operatingSystemMXBean = (com.sun.management.OperatingSystemMXBean) - ManagementFactory.getOperatingSystemMXBean(); - } - - @Override - public void bindTo(final MeterRegistry registry) { - Gauge.builder(name(FreeMemoryGauge.class, "freeMemory"), operatingSystemMXBean, - OperatingSystemMXBean::getFreeMemorySize) - .register(registry); - - } -} diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java index bfa10b9b6..df6b88988 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java @@ -120,10 +120,7 @@ public class MetricsUtil { public static void registerSystemResourceMetrics(final Environment environment) { new ProcessorMetrics().bindTo(Metrics.globalRegistry); - new FreeMemoryGauge().bindTo(Metrics.globalRegistry); new FileDescriptorMetrics().bindTo(Metrics.globalRegistry); - new OperatingSystemMemoryGauge("Buffers").bindTo(Metrics.globalRegistry); - new OperatingSystemMemoryGauge("Cached").bindTo(Metrics.globalRegistry); new JvmMemoryMetrics().bindTo(Metrics.globalRegistry); new JvmThreadMetrics().bindTo(Metrics.globalRegistry); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/OperatingSystemMemoryGauge.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/OperatingSystemMemoryGauge.java deleted file mode 100644 index 3afad2180..000000000 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/OperatingSystemMemoryGauge.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2013-2020 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.whispersystems.textsecuregcm.metrics; - -import static org.whispersystems.textsecuregcm.metrics.MetricsUtil.name; - -import com.google.common.annotations.VisibleForTesting; -import io.micrometer.core.instrument.Gauge; -import io.micrometer.core.instrument.MeterRegistry; -import io.micrometer.core.instrument.binder.MeterBinder; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.Locale; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Stream; - -public class OperatingSystemMemoryGauge implements MeterBinder { - - private final String metricName; - - private static final File MEMINFO_FILE = new File("/proc/meminfo"); - private static final Pattern MEMORY_METRIC_PATTERN = Pattern.compile("^([^:]+):\\s+([0-9]+).*$"); - - public OperatingSystemMemoryGauge(final String metricName) { - this.metricName = metricName; - } - - @Override - public void bindTo(MeterRegistry registry) { - final String metricName = this.metricName; - Gauge.builder(name(OperatingSystemMemoryGauge.class, metricName.toLowerCase(Locale.ROOT)), () -> { - try (final BufferedReader bufferedReader = new BufferedReader(new FileReader(MEMINFO_FILE))) { - return getValue(bufferedReader.lines(), metricName); - } catch (final IOException e) { - return 0L; - } - }) - .register(registry); - } - - @VisibleForTesting - static double getValue(final Stream lines, final String metricName) { - return lines.map(MEMORY_METRIC_PATTERN::matcher) - .filter(Matcher::matches) - .filter(matcher -> metricName.equalsIgnoreCase(matcher.group(1))) - .map(matcher -> Double.parseDouble(matcher.group(2))) - .findFirst() - .orElse(0d); - } -} diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/metrics/OperatingSystemMemoryGaugeTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/metrics/OperatingSystemMemoryGaugeTest.java deleted file mode 100644 index 2ea86cc91..000000000 --- a/service/src/test/java/org/whispersystems/textsecuregcm/metrics/OperatingSystemMemoryGaugeTest.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2013-2022 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.whispersystems.textsecuregcm.metrics; - - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.util.stream.Stream; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -class OperatingSystemMemoryGaugeTest { - - private static final String MEMINFO = - """ - MemTotal: 16052208 kB - MemFree: 4568468 kB - MemAvailable: 7702848 kB - Buffers: 636372 kB - Cached: 5019116 kB - SwapCached: 6692 kB - Active: 7746436 kB - Inactive: 2729876 kB - Active(anon): 5580980 kB - Inactive(anon): 1648108 kB - Active(file): 2165456 kB - Inactive(file): 1081768 kB - Unevictable: 443948 kB - Mlocked: 4924 kB - SwapTotal: 1003516 kB - SwapFree: 935932 kB - Dirty: 28308 kB - Writeback: 0 kB - AnonPages: 5258396 kB - Mapped: 1530740 kB - Shmem: 2419340 kB - KReclaimable: 229392 kB - Slab: 408156 kB - SReclaimable: 229392 kB - SUnreclaim: 178764 kB - KernelStack: 17360 kB - PageTables: 50436 kB - NFS_Unstable: 0 kB - Bounce: 0 kB - WritebackTmp: 0 kB - CommitLimit: 9029620 kB - Committed_AS: 16681884 kB - VmallocTotal: 34359738367 kB - VmallocUsed: 41944 kB - VmallocChunk: 0 kB - Percpu: 4240 kB - HardwareCorrupted: 0 kB - AnonHugePages: 0 kB - ShmemHugePages: 0 kB - ShmemPmdMapped: 0 kB - FileHugePages: 0 kB - FilePmdMapped: 0 kB - CmaTotal: 0 kB - CmaFree: 0 kB - HugePages_Total: 0 - HugePages_Free: 7 - HugePages_Rsvd: 0 - HugePages_Surp: 0 - Hugepagesize: 2048 kB - Hugetlb: 0 kB - DirectMap4k: 481804 kB - DirectMap2M: 14901248 kB - DirectMap1G: 2097152 kB - """; - - @ParameterizedTest - @MethodSource - void testGetValue(final String metricName, final long expectedValue) { - assertEquals(expectedValue, OperatingSystemMemoryGauge.getValue(MEMINFO.lines(), metricName)); - } - - @SuppressWarnings("unused") - private static Stream testGetValue() { - return Stream.of( - Arguments.of("MemTotal", 16052208L), - Arguments.of("Active(anon)", 5580980L), - Arguments.of("Committed_AS", 16681884L), - Arguments.of("HugePages_Free", 7L), - Arguments.of("NonsenseMetric", 0L) - ); - } -} diff --git a/spam-filter b/spam-filter index d9852e294..9b664d54d 160000 --- a/spam-filter +++ b/spam-filter @@ -1 +1 @@ -Subproject commit d9852e294a853b88c7feaa748e17fee38acbf849 +Subproject commit 9b664d54d5d9a04a2c005ad376910001c11e47e4