Software /
code /
prosody-modules
File
mod_statistics_mem/mod_statistics_mem.lua @ 3955:017f60608fc8
mod_smacks: also count outgoing MAM messages
mod_smacks doesn't count outgoing MAM messages, which causes warnings in Prosody such as:
> The client says it handled 41 new stanzas, but we only sent 2
It seems mod_smacks is in the wrong here and that it's too strict in trying to determine what is a valid stanza to count.
In RFC6120:
> Definition of XML Stanza: An XML stanza is the basic unit of meaning
> in XMPP. A stanza is a first-level element (at depth=1 of the stream)
> whose element name is "message", "presence", or "iq" and whose
> qualifying namespace is 'jabber:client' or 'jabber:server'.
author | JC Brand <jc@opkode.com> |
---|---|
date | Thu, 26 Mar 2020 11:57:02 +0100 |
parent | 1379:403d5cd924eb |
line wrap: on
line source
-- Probably Linux-specific memory statistics module:set_global(); local human; do local tostring = tostring; local s_format = string.format; local m_floor = math.floor; local m_max = math.max; local prefixes = "kMGTPEZY"; local multiplier = 1024; function human(num) num = tonumber(num) or 0; local m = 0; while num >= multiplier and m < #prefixes do num = num / multiplier; m = m + 1; end return s_format("%0."..m_max(0,3-#tostring(m_floor(num))).."f%sB", num, m > 0 and (prefixes:sub(m,m) .. "i") or ""); end end local pagesize = 4096; -- according to getpagesize() module:provides("statistics", { statistics = { memory_total = { -- virtual memory get = function () local statm, err = io.open"/proc/self/statm"; if statm then local total = statm:read"*n"; statm:close(); return total * pagesize; else module:log("debug", err); end end; tostring = human; }; memory_rss = { -- actual in-memory data size get = function () local statm, err = io.open"/proc/self/statm"; if statm then statm:read"*n"; -- Total size, ignore local rss = statm:read"*n"; statm:close(); return rss * pagesize; else module:log("debug", err); end end; tostring = human; }; } });