Software /
code /
prosody-modules
File
mod_measure_memory/mod_measure_memory.lua @ 2494:d300ae5dba87
mod_smacks: Fix some bugs with smacks-ack-delayed event triggering.
The old code had several flaws which are addressed here.
First of all this fixes the if statement guarding the event generation
There where some timing glitches addressed by this commit as well.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Sun, 12 Feb 2017 21:23:22 +0100 |
parent | 2436:a01a3fb96302 |
child | 2708:07d6077d2db7 |
line wrap: on
line source
module:set_global(); local measure = require"core.statsmanager".measure; local have_pposix, pposix = pcall(require, "util.pposix"); local measures = {}; setmetatable(measures, { __index = function (t, k) local m = measure("sizes", "memory."..k); t[k] = m; return m; end }); module:hook("stats-update", function () measures.lua(collectgarbage("count")*1024); end); if have_pposix and pposix.meminfo then module:hook("stats-update", function () local m = measures; for k, v in pairs(pposix.meminfo()) do m[k](v); end end); end if require"lfs".attributes("/proc/self/statm", "mode") == "file" then local pagesize = module:get_option_number("memory_pagesize", 4096); -- getconf PAGESIZE module:hook("stats-update", function () local statm, err = io.open("/proc/self/statm"); if not statm then module:log("error", tostring(err)); return; end -- virtual memory (caches, opened librarys, everything) measures.total(statm:read("*n") * pagesize); -- resident set size (actually used memory) measures.rss(statm:read("*n") * pagesize); statm:close(); end); end