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 Meters 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-1if 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
100msin order to relief the filesystem pressure whenMeters based on this data are queried by the registry one after another on collection run.