Mercurial > prosody-modules
annotate mod_statistics_mem/mod_statistics_mem.lua @ 5468:14b5446e22e1
mod_http_oauth2: Fix returning errors from response handlers
This would either redirect the user back to the client along with the
error code, or show the error HTML template.
Previously this would just show some JSON to the user.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 18 May 2023 12:57:23 +0200 |
| 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 }); |
