Mercurial > prosody-modules
diff mod_measure_malloc/mod_measure_malloc.lua @ 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 | a83eed629d4b |
children | b9af1ccac98b |
line wrap: on
line diff
--- 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);