view mod_measure_memory/mod_measure_memory.lua @ 2608:362ca94192ee

mod_smacks: Add resumed session to event "smacks-hibernation-end" Older versions of this event only have the "intermediate" session in event.session (the one used to resume the existing session), but not the resumed one. This adds event.resumed which contains the resumed one alongside to event.session.
author tmolitor <thilo@eightysoft.de>
date Sat, 11 Mar 2017 01:37:28 +0100
parents a01a3fb96302
children 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