comparison mod_measure_memory/mod_measure_memory.lua @ 1623:2c39af0fb93b

mod_measure_memory: Module for polling memory useage from Lua, meminfo() and /proc depending on availability
author Kim Alvefur <zash@zash.se>
date Tue, 10 Mar 2015 16:34:40 +0100
parents
children 4d38b8c03dfe
comparison
equal deleted inserted replaced
1622:b59812aaabad 1623:2c39af0fb93b
1 module:set_global();
2
3 local measure = require"core.statsmanager".measure;
4 local have_pposix, pposix = pcall(require, "util.pposix");
5
6 local measures = {};
7 setmetatable(measures, {
8 __index = function (t, k, m)
9 m = measure("sizes", "memory."..k); t[k] = m; return m;
10 end
11 });
12
13 module:hook("stats-update", function ()
14 measures.lua(collectgarbage("count")*1024);
15 end);
16
17 if have_pposix and pposix.meminfo then
18 module:hook_global("stats-update", function ()
19 local m = measures;
20 for k, v in pairs(pposix.meminfo()) do
21 m[k](v);
22 end
23 end);
24 end
25
26 local statm = io.open("/proc/self/statm");
27 if statm then
28 statm:close();
29 local pagesize = module:get_option_number("memory_pagesize", 4096); -- getconf PAGESIZE
30
31 module:hook("stats-update", function ()
32 local statm, err = io.open("/proc/self/statm");
33 if not statm then
34 module:log("error", tostring(err));
35 return;
36 end
37 -- virtual memory (caches, opened librarys, everything)
38 measures.total(statm:read("*n") * pagesize);
39 -- resident set size (actually used memory)
40 measures.rss(statm:read("*n") * pagesize);
41 statm:close();
42 end);
43 end