Skip to content

Commit 1b99126

Browse files
authored
Merge pull request #78 from avaje/feature/rename-cgroup-mem-limit
Tidy up private access
2 parents ebad823 + 683ee04 commit 1b99126

File tree

8 files changed

+110
-42
lines changed

8 files changed

+110
-42
lines changed

metrics/src/main/java/io/avaje/metrics/JvmMetrics.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,31 +41,91 @@ public interface JvmMetrics {
4141

4242
/**
4343
* Register a metric for OS load.
44+
*
45+
* <h4>Base metrics</h4>
46+
* <ul>
47+
* <li>jvm.os.loadAverage</li>
48+
* </ul>
4449
*/
4550
JvmMetrics registerJvmOsLoadMetric();
4651

4752
/**
4853
* Register metrics for GC activity.
54+
*
55+
* <h4>Base metrics</h4>
56+
* <ul>
57+
* <li>jvm.gc.time</li>
58+
* </ul>
59+
*
60+
* <h4>Extra metrics with {@link #withDetails()} enabled</h4>
61+
* <p>
62+
* count and time for each Garbage Collector being used.
63+
* </p>
4964
*/
5065
JvmMetrics registerJvmGCMetrics();
5166

5267
/**
5368
* Register metrics for the total number of threads allocated.
69+
*
70+
* <h4>Base metrics</h4>
71+
* <ul>
72+
* <li>jvm.threads.current</li>
73+
* </ul>
74+
*
75+
* <h4>Extra metrics with {@link #withDetails()} enabled</h4>
76+
* <ul>
77+
* <li>jvm.thread.daemon</li>
78+
* <li>jvm.threads.peak</li>
79+
* </ul>
5480
*/
5581
JvmMetrics registerJvmThreadMetrics();
5682

5783
/**
5884
* Register metrics for heap and non-heap memory.
85+
*
86+
* <h4>Base metrics</h4>
87+
* <ul>
88+
* <li>jvm.memory.heap.used</li>
89+
* <li>jvm.memory.heap.committed</li>
90+
* <li>jvm.memory.heap.max</li>
91+
* <li>jvm.memory.nonheap.used</li>
92+
* <li>jvm.memory.nonheap.committed</li>
93+
* <li>jvm.memory.nonheap.max</li>
94+
* </ul>
5995
*/
6096
JvmMetrics registerJvmMemoryMetrics();
6197

6298
/**
6399
* Register metrics for VMRSS process memory (if supported on the platform).
100+
*
101+
* <h4>Base metrics</h4>
102+
* <ul>
103+
* <li>jvm.memory.process.vmrss</li>
104+
* <li>jvm.memory.process.vmhwm</li>
105+
* </ul>
64106
*/
65107
JvmMetrics registerProcessMemoryMetrics();
66108

67109
/**
68110
* Register CGroup metrics for CPU usage time, throttle time, requests and limits.
111+
*
112+
* <h4>Base metrics</h4>
113+
* <ul>
114+
* <li>jvm.cgroup.cpu.requests</li>
115+
* <li>jvm.cgroup.cpu.limit (if a limit is applied)</li>
116+
* <li>jvm.cgroup.cpu.usageMicros</li>
117+
* <li>jvm.cgroup.cpu.throttleMicros</li>
118+
* <li>jvm.cgroup.memory.usage</li>
119+
* <li>jvm.cgroup.memory.limit/li>
120+
* <li>jvm.cgroup.memory.pctUsage/li>
121+
* </ul>
122+
*
123+
* <h4>Extra metrics with {@link #withDetails()} enabled</h4>
124+
* <ul>
125+
* <li>jvm.cgroup.cpu.numPeriod</li>
126+
* <li>jvm.cgroup.cpu.numThrottle</li>
127+
* <li>jvm.cgroup.cpu.pctThrottle/li>
128+
* </ul>
69129
*/
70130
JvmMetrics registerCGroupMetrics();
71131

metrics/src/main/java/io/avaje/metrics/core/DefaultMetricProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public JvmMetrics registerProcessMemoryMetrics() {
129129

130130
@Override
131131
public JvmMetrics registerCGroupMetrics() {
132-
JvmCGroupCpu.createGauges(this, reportChangesOnly);
132+
JvmCGroupCpu.createGauges(this, reportChangesOnly, withDetails);
133133
JvmCGroupMemory.createGauges(this, reportChangesOnly);
134134
return this;
135135
}
@@ -158,8 +158,8 @@ public JvmMetrics registerJvmGCMetrics() {
158158

159159
@Override
160160
public JvmMetrics registerJvmMemoryMetrics() {
161-
JvmMemory.createHeapGroup(this, reportChangesOnly);
162-
JvmMemory.createNonHeapGroup(this, reportChangesOnly);
161+
JvmMemory.createHeapGroup(this, reportChangesOnly, withDetails);
162+
JvmMemory.createNonHeapGroup(this, reportChangesOnly, withDetails);
163163
return this;
164164
}
165165

metrics/src/main/java/io/avaje/metrics/core/JvmCGroupCpu.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@
1111

1212
final class JvmCGroupCpu {
1313

14-
static void createGauges(MetricRegistry registry, boolean reportChangesOnly) {
15-
new JvmCGroupCpu().create(registry, reportChangesOnly);
14+
static void createGauges(MetricRegistry registry, boolean reportChangesOnly, boolean withDetails) {
15+
new JvmCGroupCpu().create(registry, reportChangesOnly, withDetails);
1616
}
1717

18-
void create(MetricRegistry registry, boolean reportChangesOnly) {
18+
void create(MetricRegistry registry, boolean reportChangesOnly, boolean withDetails) {
1919
FileLines cpu = new FileLines("/sys/fs/cgroup/cpu,cpuacct/cpuacct.usage");
2020
if (cpu.exists()) {
2121
createCGroupCpuUsage(registry, cpu);
2222
}
2323
FileLines cpuStat = new FileLines("/sys/fs/cgroup/cpu,cpuacct/cpu.stat");
2424
if (cpuStat.exists()) {
25-
createCGroupCpuThrottle(registry, cpuStat, reportChangesOnly);
25+
createCGroupCpuThrottle(registry, cpuStat, reportChangesOnly, withDetails);
2626
}
2727
FileLines cpuShares = new FileLines("/sys/fs/cgroup/cpu,cpuacct/cpu.shares");
2828
if (cpuStat.exists()) {
@@ -72,12 +72,14 @@ private void createCGroupCpuUsage(MetricRegistry registry, FileLines cpu) {
7272
registry.gauge("jvm.cgroup.cpu.usageMicros", GaugeLong.incrementing(new CpuUsageMicros(cpu)));
7373
}
7474

75-
private void createCGroupCpuThrottle(MetricRegistry registry, FileLines cpuStat, boolean reportChangesOnly) {
76-
CpuStatsSource source = new CpuStatsSource(cpuStat);
75+
private void createCGroupCpuThrottle(MetricRegistry registry, FileLines cpuStat, boolean reportChangesOnly, boolean withDetails) {
76+
final var source = new CpuStatsSource(cpuStat);
7777
registry.register(gauge("jvm.cgroup.cpu.throttleMicros", source::getThrottleMicros, reportChangesOnly));
78-
registry.register(gauge("jvm.cgroup.cpu.numPeriod", source::getNumPeriod, reportChangesOnly));
79-
registry.register(gauge("jvm.cgroup.cpu.numThrottle", source::getNumThrottle, reportChangesOnly));
80-
registry.register(gauge("jvm.cgroup.cpu.pctThrottle", source::getPctThrottle, reportChangesOnly));
78+
if (withDetails) {
79+
registry.register(gauge("jvm.cgroup.cpu.numPeriod", source::getNumPeriod, reportChangesOnly));
80+
registry.register(gauge("jvm.cgroup.cpu.numThrottle", source::getNumThrottle, reportChangesOnly));
81+
registry.register(gauge("jvm.cgroup.cpu.pctThrottle", source::getPctThrottle, reportChangesOnly));
82+
}
8183
}
8284

8385
private GaugeLong gauge(String name, LongSupplier gauge, boolean reportChangesOnly) {

metrics/src/main/java/io/avaje/metrics/core/JvmGarbageCollection.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ private static String name(String prefix, String gcName) {
4040

4141
private static final class Count implements LongSupplier {
4242

43-
final GarbageCollectorMXBean gcMXBean;
43+
private final GarbageCollectorMXBean gcMXBean;
4444

4545
Count(GarbageCollectorMXBean gcMXBean) {
4646
this.gcMXBean = gcMXBean;
@@ -54,7 +54,7 @@ public long getAsLong() {
5454

5555
private static final class Time implements LongSupplier {
5656

57-
final GarbageCollectorMXBean gcMXBean;
57+
private final GarbageCollectorMXBean gcMXBean;
5858

5959
Time(GarbageCollectorMXBean gcMXBean) {
6060
this.gcMXBean = gcMXBean;
@@ -68,7 +68,7 @@ public long getAsLong() {
6868

6969
private static final class TotalTime implements LongSupplier {
7070

71-
final GarbageCollectorMXBean[] gcMXBeans;
71+
private final GarbageCollectorMXBean[] gcMXBeans;
7272

7373
TotalTime(GarbageCollectorMXBean[] gcMXBeans) {
7474
this.gcMXBeans = gcMXBeans;

metrics/src/main/java/io/avaje/metrics/core/JvmMemory.java

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ static final class HeapMemoryUsageSource implements MemoryUsageSource {
2828
this.memoryMXBean = memoryMXBean;
2929
}
3030

31+
@Override
3132
public MemoryUsage usage() {
3233
return memoryMXBean.getHeapMemoryUsage();
3334
}
@@ -43,6 +44,7 @@ static final class NonHeapMemoryUsageSource implements MemoryUsageSource {
4344
this.memoryMXBean = memoryMXBean;
4445
}
4546

47+
@Override
4648
public MemoryUsage usage() {
4749
return memoryMXBean.getNonHeapMemoryUsage();
4850
}
@@ -51,21 +53,21 @@ public MemoryUsage usage() {
5153
/**
5254
* Create the Heap Memory based GaugeMetricGroup.
5355
*/
54-
static void createHeapGroup(MetricRegistry registry, boolean reportChangesOnly) {
56+
static void createHeapGroup(MetricRegistry registry, boolean reportChangesOnly, boolean withDetails) {
5557
HeapMemoryUsageSource source = new HeapMemoryUsageSource(ManagementFactory.getMemoryMXBean());
56-
createGroup(registry, "jvm.memory.heap", source, reportChangesOnly);
58+
createGroup(registry, "jvm.memory.heap", source, reportChangesOnly, withDetails);
5759
}
5860

5961
/**
6062
* Create the NonHeap Memory based GaugeDoubleMetricGroup.
6163
*/
62-
static void createNonHeapGroup(MetricRegistry registry, boolean reportChangesOnly) {
64+
static void createNonHeapGroup(MetricRegistry registry, boolean reportChangesOnly, boolean withDetails) {
6365
NonHeapMemoryUsageSource source = new NonHeapMemoryUsageSource(ManagementFactory.getMemoryMXBean());
64-
createGroup(registry, "jvm.memory.nonheap", source, reportChangesOnly);
66+
createGroup(registry, "jvm.memory.nonheap", source, reportChangesOnly, withDetails);
6567
}
6668

67-
private static void createGroup(MetricRegistry registry, String baseName, MemoryUsageSource source, boolean reportChangesOnly) {
68-
new MemUsageGauages(source, baseName).createMetric(registry, reportChangesOnly);
69+
private static void createGroup(MetricRegistry registry, String baseName, MemoryUsageSource source, boolean reportChangesOnly, boolean withDetails) {
70+
new MemUsageGauages(source, baseName).createMetric(registry, reportChangesOnly, withDetails);
6971
}
7072

7173
static final class MemUsageGauages {
@@ -77,16 +79,20 @@ private MemUsageGauages(MemoryUsageSource source, String baseName) {
7779
this.baseName = baseName;
7880
}
7981

80-
void createMetric(MetricRegistry registry, boolean reportChangesOnly) {
81-
registry.register(DGaugeLong.once(name("init"), new Init(source)));
82+
void createMetric(MetricRegistry registry, boolean reportChangesOnly, boolean withDetails) {
83+
if (withDetails) {
84+
registry.register(DGaugeLong.once(name("init"), new Init(source)));
85+
}
8286
registry.register(DGaugeLong.of(name("used"), new Used(source), reportChangesOnly));
8387
registry.register(DGaugeLong.of(name("committed"), new Committed(source), reportChangesOnly));
8488
// JRE 8 is not reporting max for non-heap memory
8589
boolean hasMax = (source.usage().getMax() > 0);
8690
if (hasMax) {
8791
// also collect Max and Percentage
8892
registry.register(DGaugeLong.once(name("max"), new Max(source)));
89-
registry.register(DGaugeLong.of(name("pct"), new Pct(source), reportChangesOnly));
93+
if (withDetails) {
94+
registry.register(DGaugeLong.of(name("pct"), new Pct(source), reportChangesOnly));
95+
}
9096
}
9197
}
9298

@@ -95,15 +101,15 @@ private String name(String name) {
95101
}
96102

97103
private abstract static class Base {
98-
MemoryUsageSource source;
104+
final MemoryUsageSource source;
99105

100-
Base(MemoryUsageSource source) {
106+
private Base(MemoryUsageSource source) {
101107
this.source = source;
102108
}
103109
}
104110

105111
private static final class Init extends Base implements LongSupplier {
106-
Init(MemoryUsageSource source) {
112+
private Init(MemoryUsageSource source) {
107113
super(source);
108114
}
109115

@@ -114,7 +120,7 @@ public long getAsLong() {
114120
}
115121

116122
private static final class Used extends Base implements LongSupplier {
117-
Used(MemoryUsageSource source) {
123+
private Used(MemoryUsageSource source) {
118124
super(source);
119125
}
120126

@@ -125,7 +131,7 @@ public long getAsLong() {
125131
}
126132

127133
private static final class Committed extends Base implements LongSupplier {
128-
Committed(MemoryUsageSource source) {
134+
private Committed(MemoryUsageSource source) {
129135
super(source);
130136
}
131137

@@ -136,7 +142,7 @@ public long getAsLong() {
136142
}
137143

138144
private static class Max extends Base implements LongSupplier {
139-
Max(MemoryUsageSource source) {
145+
private Max(MemoryUsageSource source) {
140146
super(source);
141147
}
142148

@@ -147,7 +153,7 @@ public long getAsLong() {
147153
}
148154

149155
private static class Pct extends Base implements LongSupplier {
150-
Pct(MemoryUsageSource source) {
156+
private Pct(MemoryUsageSource source) {
151157
super(source);
152158
}
153159

metrics/src/main/java/io/avaje/metrics/core/JvmOsLoad.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ private static final class OsLoadGauge implements LongSupplier {
2424

2525
private final OperatingSystemMXBean osMXbean;
2626

27-
OsLoadGauge(OperatingSystemMXBean osMXbean) {
27+
private OsLoadGauge(OperatingSystemMXBean osMXbean) {
2828
this.osMXbean = osMXbean;
2929
}
3030

metrics/src/main/java/io/avaje/metrics/core/JvmThreads.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,22 @@ private static final class ThreadGauges {
1717

1818
private final ThreadMXBean threadMXBean;
1919

20-
ThreadGauges(ThreadMXBean threadMXBean) {
20+
private ThreadGauges(ThreadMXBean threadMXBean) {
2121
this.threadMXBean = threadMXBean;
2222
}
2323

24-
void createMetrics(MetricRegistry registry, boolean reportChangesOnly, boolean withDetails) {
24+
private void createMetrics(MetricRegistry registry, boolean reportChangesOnly, boolean withDetails) {
2525
registry.register(DGaugeLong.of("jvm.threads.current", new Count(threadMXBean), reportChangesOnly));
2626
if (withDetails) {
2727
registry.register(DGaugeLong.of("jvm.threads.peak", new Peak(threadMXBean), reportChangesOnly));
2828
registry.register(DGaugeLong.of("jvm.threads.daemon", new Daemon(threadMXBean), reportChangesOnly));
2929
}
3030
}
3131

32-
static final class Count implements LongSupplier {
32+
private static final class Count implements LongSupplier {
3333
private final ThreadMXBean threadMXBean;
3434

35-
Count(ThreadMXBean threadMXBean) {
35+
private Count(ThreadMXBean threadMXBean) {
3636
this.threadMXBean = threadMXBean;
3737
}
3838

@@ -42,10 +42,10 @@ public long getAsLong() {
4242
}
4343
}
4444

45-
static final class Peak implements LongSupplier {
45+
private static final class Peak implements LongSupplier {
4646
private final ThreadMXBean threadMXBean;
4747

48-
Peak(ThreadMXBean threadMXBean) {
48+
private Peak(ThreadMXBean threadMXBean) {
4949
this.threadMXBean = threadMXBean;
5050
}
5151

@@ -58,10 +58,10 @@ public long getAsLong() {
5858
}
5959
}
6060

61-
static final class Daemon implements LongSupplier {
61+
private static final class Daemon implements LongSupplier {
6262
private final ThreadMXBean threadMXBean;
6363

64-
Daemon(ThreadMXBean threadMXBean) {
64+
private Daemon(ThreadMXBean threadMXBean) {
6565
this.threadMXBean = threadMXBean;
6666
}
6767

metrics/src/test/java/io/avaje/metrics/core/JvmMemoryMetricGroupTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class JvmMemoryMetricGroupTest {
1515
void testCreateHeapGroup() {
1616

1717
DefaultMetricProvider registry = new DefaultMetricProvider();
18-
JvmMemory.createHeapGroup(registry, true);
18+
JvmMemory.createHeapGroup(registry, true, true);
1919

2020
List<Metric> gaugeMetrics = new ArrayList<>(registry.metrics());
2121

@@ -32,7 +32,7 @@ void testCreateHeapGroup() {
3232
void testCreateNonHeapGroup() {
3333

3434
DefaultMetricProvider registry = new DefaultMetricProvider();
35-
JvmMemory.createNonHeapGroup(registry, true);
35+
JvmMemory.createNonHeapGroup(registry, true, true);
3636
List<Metric> gaugeMetrics = new ArrayList<>(registry.metrics());
3737

3838
assertThat(gaugeMetrics.size()).isGreaterThan(1);

0 commit comments

Comments
 (0)