aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2013-05-16 10:47:22 +0100
committerMatthew Wild <mwild1@gmail.com>2013-05-16 10:47:22 +0100
commit72d7fea4c2a2dfab163478dff2a6f7fe1efa4181 (patch)
treeda7c9086160e66aa3dcd0443494104dadd07c27c
parentc85589156e77efd67ad493a08e48232f5b632654 (diff)
downloadprosody-72d7fea4c2a2dfab163478dff2a6f7fe1efa4181.tar.gz
prosody-72d7fea4c2a2dfab163478dff2a6f7fe1efa4181.zip
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
-rw-r--r--plugins/mod_admin_telnet.lua21
1 files changed, 21 insertions, 0 deletions
diff --git a/plugins/mod_admin_telnet.lua b/plugins/mod_admin_telnet.lua
index 25830f76..b942e9bd 100644
--- a/plugins/mod_admin_telnet.lua
+++ b/plugins/mod_admin_telnet.lua
@@ -236,6 +236,7 @@ function commands.help(session, data)
elseif section == "server" then
print [[server:version() - Show the server's version number]]
print [[server:uptime() - Show how long the server has been running]]
+ print [[server:memory() - Show details about the server's memory usage]]
print [[server:shutdown(reason) - Shut down the server, with an optional reason to be broadcast to all connections]]
elseif section == "port" then
print [[port:list() - Lists all network ports prosody currently listens on]]
@@ -300,6 +301,26 @@ function def_env.server:shutdown(reason)
return true, "Shutdown initiated";
end
+local function human(kb)
+ local unit = "K";
+ if kb > 1024 then
+ kb, unit = kb/1024, "M";
+ end
+ return ("%0.2f%sB"):format(kb, unit);
+end
+
+function def_env.server:memory()
+ if not pposix.meminfo then
+ return true, "Lua is using "..collectgarbage("count");
+ end
+ local mem, lua_mem = pposix.meminfo(), collectgarbage("count");
+ local print = self.session.print;
+ print("Process: "..human((mem.allocated+mem.allocated_mmap)/1024));
+ print(" Used: "..human(mem.used/1024).." ("..human(lua_mem).." by Lua)");
+ print(" Free: "..human(mem.unused/1024).." ("..human(mem.returnable/1024).." returnable)");
+ return true, "OK";
+end
+
def_env.module = {};
local function get_hosts_set(hosts, module)