1 -- Probably Linux-specific memory statistics
7 local tostring = tostring;
8 local s_format
= string.format;
9 local m_floor
= math
.floor;
10 local m_max
= math
.max;
11 local prefixes
= "kMGTPEZY";
12 local multiplier
= 1024;
15 num
= tonumber(num
) or 0;
17 while num
>= multiplier
and m
< #prefixes
do
18 num
= num
/ multiplier
;
22 return s_format("%0."..m_max(0,3-#tostring(m_floor(num
))).."f%sB",
23 num
, m
> 0 and (prefixes
:sub(m
,m
) .. "i") or "");
28 local pagesize
= 4096; -- according to getpagesize()
29 module
:provides("statistics", {
31 memory_total
= { -- virtual memory
33 local statm
, err
= io
.open
"/proc/self/statm";
35 local total
= statm
:read"*n";
37 return total
* pagesize
;
39 module
:log("debug", err
);
44 memory_rss
= { -- actual in-memory data size
46 local statm
, err
= io
.open
"/proc/self/statm";
48 statm
:read"*n"; -- Total size, ignore
49 local rss
= statm
:read"*n";
51 return rss
* pagesize
;
53 module
:log("debug", err
);