A set of additional JVM process metrics for micrometer.io.
- get "real" memory usage of the JVM beyond its managed parts
- get ahold of that info from within the JVM in environments where you can't instrument from the outside (e.g. PaaS)
<dependency>
<groupId>io.github.mweirauch</groupId>
<artifactId>micrometer-jvm-extras</artifactId>
<version>x.y.z</version>
</dependency>
/* Plain Java */
final MeterRegistry registry = new SimpleMeterRegistry();
new ProcessMemoryMetrics().bindTo(registry);
new ProcessThreadMetrics().bindTo(registry);
/* With Spring */
@Bean
public MeterBinder processMemoryMetrics() {
return new ProcessMemoryMetrics();
}
@Bean
public MeterBinder processThreadMetrics() {
return new ProcessThreadMetrics();
}
ProcessMemoryMetrics
reads process-level memory information from /proc/self/smaps
.
All Meter
s are reporting in bytes
.
Please note that procfs
is only available on Linux-based systems.
process.memory.vss
: Virtual set size. The amount of virtual memory the process can access. Mostly useles, but included for completeness sake.process.memory.rss
: Resident set size. The amount of process memory currently in RAM.process.memory.pss
: Proportional set size. The amount of process memory currently in RAM, accounting for shared pages among processes. This metric is the most accurate in terms of "real" memory usage.process.memory.swap
: The amount of process memory paged out to swap.process.memory.swappss
: The amount of process memory paged out to swap accounting for shared memory among processes. Since Linux 4.3. Will return-1
if your kernel is older. As withpss
, the most accurate metric to watch.
ProcessThreadMetrics
reads process-level thread information from /proc/self/status
.
Please note that procfs
is only available on Linux-based systems.
process.threads
: The number of process threads as seen by the operating system.
- procfs data is cached for
100ms
in order to relief the filesystem pressure whenMeter
s based on this data are queried by the registry one after another on collection run.