From c3c8552aaa3afaee84ba8beaf288fa8b0c4d91fd Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 30 Mar 2020 15:48:59 +0200 Subject: [PATCH] src/service/src/builder: Fix memory metric exposed in bytes not KiB (#5459) The library `sysinfo` exposes process memory as kibibytes and not bytes, thus the value needs to be multiplied by 1024 to comply with the metric name and the Prometheus base units [1]. [1] https://prometheus.io/docs/practices/naming/#base-units --- substrate/client/service/src/builder.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/substrate/client/service/src/builder.rs b/substrate/client/service/src/builder.rs index 10a1cd9749..0de4ea6aee 100644 --- a/substrate/client/service/src/builder.rs +++ b/substrate/client/service/src/builder.rs @@ -77,7 +77,7 @@ impl ServiceMetrics { "ready_transactions_number", "Number of transactions in the ready queue", )?, registry)?, memory_usage_bytes: register(Gauge::new( - "memory_usage_bytes", "Node memory usage", + "memory_usage_bytes", "Node memory (resident set size) usage", )?, registry)?, cpu_usage_percentage: register(Gauge::new( "cpu_usage_percentage", "Node CPU usage", @@ -1074,7 +1074,8 @@ ServiceBuilder< .unwrap_or(0), ); if let Some(metrics) = metrics.as_ref() { - metrics.memory_usage_bytes.set(memory); + // `sysinfo::Process::memory` returns memory usage in KiB and not bytes. + metrics.memory_usage_bytes.set(memory * 1024); metrics.cpu_usage_percentage.set(f64::from(cpu_usage)); metrics.ready_transactions_number.set(txpool_status.ready as u64);