Mercurial > prosody-modules
annotate mod_statistics_mem/mod_statistics_mem.lua @ 5696:66986f5271c3
mod_storage_s3: Skip archive items matching on date but not full datetime
Since it only encodes dates in paths, it would have returned items from
outside the specified start..end range if they were from earlier or
later in the same (UTC) day.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 11 Nov 2023 22:26:39 +0100 |
parents | 403d5cd924eb |
children |
rev | line source |
---|---|
1379
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 -- Probably Linux-specific memory statistics |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 module:set_global(); |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 local human; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 do |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 local tostring = tostring; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 local s_format = string.format; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 local m_floor = math.floor; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 local m_max = math.max; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 local prefixes = "kMGTPEZY"; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 local multiplier = 1024; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 function human(num) |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 num = tonumber(num) or 0; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 local m = 0; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 while num >= multiplier and m < #prefixes do |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 num = num / multiplier; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 m = m + 1; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 end |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 return s_format("%0."..m_max(0,3-#tostring(m_floor(num))).."f%sB", |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 num, m > 0 and (prefixes:sub(m,m) .. "i") or ""); |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 end |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 end |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 local pagesize = 4096; -- according to getpagesize() |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 module:provides("statistics", { |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 statistics = { |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 memory_total = { -- virtual memory |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 get = function () |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 local statm, err = io.open"/proc/self/statm"; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 if statm then |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 local total = statm:read"*n"; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 statm:close(); |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 return total * pagesize; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 else |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 module:log("debug", err); |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 end |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 end; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 tostring = human; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 }; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 memory_rss = { -- actual in-memory data size |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 get = function () |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 local statm, err = io.open"/proc/self/statm"; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 if statm then |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 statm:read"*n"; -- Total size, ignore |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
49 local rss = statm:read"*n"; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 statm:close(); |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 return rss * pagesize; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
52 else |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
53 module:log("debug", err); |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
54 end |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
55 end; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
56 tostring = human; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
57 }; |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
58 } |
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
59 }); |