changeset 4575:5b4f43b90766

mod_measure_malloc: port to most recent trunk statistics API
author Jonas Schäfer <jonas@wielicki.name>
date Tue, 25 May 2021 19:01:54 +0200
parents 38d80dbfee88
children cade5dac1003
files mod_measure_malloc/README.markdown mod_measure_malloc/mod_measure_malloc.lua
diffstat 2 files changed, 38 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/mod_measure_malloc/README.markdown	Tue May 25 16:49:51 2021 +0200
+++ b/mod_measure_malloc/README.markdown	Tue May 25 19:01:54 2021 +0200
@@ -7,5 +7,5 @@
 Description
 ===========
 
-This module collects stats from `util.pposix.meminfo` usage and reports using Prosody 0.10 APIs
+This module collects stats from `util.pposix.meminfo` usage and reports using Prosody 0.12 APIs
 
--- a/mod_measure_malloc/mod_measure_malloc.lua	Tue May 25 16:49:51 2021 +0200
+++ b/mod_measure_malloc/mod_measure_malloc.lua	Tue May 25 19:01:54 2021 +0200
@@ -1,17 +1,44 @@
 module:set_global();
 
-local measure = require"core.statsmanager".measure;
+local metric = require"core.statsmanager".metric;
 local pposix = require"util.pposix";
 
-local measures = {};
-setmetatable(measures, {
-	__index = function (t, k)
-		local m = measure("amount", "memory."..k); t[k] = m; return m;
+local allocated = metric(
+	"gauge", "malloc_heap_allocated", "bytes",
+	"Allocated bytes by mode of allocation",
+	{"mode"}
+);
+
+local used = metric(
+	"gauge", "malloc_heap_used", "bytes",
+	"Used bytes"
+):with_labels();
+
+local unused = metric(
+	"gauge", "malloc_heap_unused", "bytes",
+	"Unused bytes"
+):with_labels();
+
+local returnable = metric(
+	"gauge", "malloc_heap_returnable", "bytes",
+	"Returnable bytes"
+):with_labels();
+
+module:hook("stats-update", function ()
+	meminfo = pposix.meminfo();
+	if meminfo.allocated then
+		allocated:with_labels("sbrk"):set(meminfo.allocated);
 	end
-});
-module:hook("stats-update", function ()
-	local m = measures;
-	for k, v in pairs(pposix.meminfo()) do
-		m[k](v);
+	if meminfo.allocated_mmap then
+		allocated:with_labels("mmap"):set(meminfo.allocated_mmap);
+	end
+	if meminfo.used then
+		used:set(meminfo.used);
+	end
+	if meminfo.unused then
+		unused:set(meminfo.unused);
+	end
+	if meminfo.returnable then
+		returnable:set(meminfo.returnable);
 	end
 end);