mod_measure_malloc/mod_measure_malloc.lua
changeset 4579 5b4f43b90766
parent 3371 a83eed629d4b
child 4762 b9af1ccac98b
--- 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);