summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2011-03-02 13:28:33 +0200
committerTimo Teräs <timo.teras@iki.fi>2011-03-02 13:28:33 +0200
commit0b0d068ccb91f25f48099ff4d346eac2c387f86e (patch)
tree8e2d05dce7c8f4c0c3eab85b6fe187b29ce6f26b
parentd6828c8635a44463b85bdbe704f02c2b6ecd8fae (diff)
downloadacf-alpine-baselayout-0b0d068ccb91f25f48099ff4d346eac2c387f86e.tar.bz2
acf-alpine-baselayout-0b0d068ccb91f25f48099ff4d346eac2c387f86e.tar.xz
health: fix memory info
Parse /proc/meminfo instead of 'free' output which changed in busybox and caused breakage. Display also Buffers.
-rw-r--r--health-model.lua28
-rw-r--r--health-system-html.lsp32
2 files changed, 52 insertions, 8 deletions
diff --git a/health-model.lua b/health-model.lua
index 2749e2a..1bc8376 100644
--- a/health-model.lua
+++ b/health-model.lua
@@ -32,17 +32,31 @@ local function diskfree ( media )
return cmd_result
end
-local function getpercentage ( data,grep,field1,field2 )
- local debugoutput = ""
- local grepline = format.string_to_table(string.match(data,grep .. ".*"),"%s+")
- local val1percentage = math.floor(((grepline[field1] / (grepline[field1]+grepline[field2]))*100)+0.5)
- return val1percentage
+local function memusage ()
+ local mult = { kB=1024, MB=1048576, GB=1073741824 }
+ local fd = io.open("/proc/meminfo")
+ local res = {}
+ local field, value, unit
+
+ for line in fd:lines() do
+ field,value, unit = string.match(line, "([^: ]*):%s*(%d+)%s(%a+)")
+ if field ~= nil and value ~= nil then
+ res[field] = tonumber(value)
+ if unit ~= nil then
+ res[field] = res[field] * mult[unit]
+ end
+ end
+ end
+ fd:close()
+
+ return res
end
-- ###############################################################
-- Public functions
get_system = function (self)
local system = {}
+ local meminfo = memusage()
system.uptime = cfe({ value=querycmd("uptime"), label="Uptime" })
system.date = cfe({ value=querycmd("date"), label="Date" })
local indexver = indexversion()
@@ -50,7 +64,9 @@ get_system = function (self)
system.timezone = cfe({ value=date.what_tz(), label="Time Zone" })
system.uname = cfe({ value=querycmd("uname -a"), label="UName" })
system.memory = cfe({ value=querycmd("free"), label="Memory usage" })
- system.memory.used = getpercentage(querycmd("free"), "Total:", 3, 4)
+ system.memory.free = math.floor(100 * meminfo["MemFree"] / meminfo["MemTotal"])
+ system.memory.buffers = math.floor(100 * (meminfo["Buffers"] + meminfo["Cached"]) / meminfo["MemTotal"])
+ system.memory.used = 100 - math.floor(100 * (meminfo["MemFree"] + meminfo["Buffers"] + meminfo["Cached"]) / meminfo["MemTotal"])
return cfe({ type="group", value=system })
end
diff --git a/health-system-html.lsp b/health-system-html.lsp
index f2e4d6c..f25bf8b 100644
--- a/health-system-html.lsp
+++ b/health-system-html.lsp
@@ -23,14 +23,42 @@
<DL>
<pre><%= html.html_escape(view.value.memory.value) %></pre>
+<%
+local function print_percent(val)
+ if (tonumber(val) > 10) then
+ io.write(html.html_escape(val) .. "%")
+ end
+end
+%>
+
<TABLE STYLE="margin:0px;padding:0px;border:0px">
<TR>
- <TD>0%</TD><TD WIDTH="<%= html.html_escape(view.value.memory.used) %>%" STYLE="background:red;border:2px solid black;border-right:none;"><CENTER><B><% if ( tonumber(view.value.memory.used) > 10) then io.write(html.html_escape(view.value.memory.used) .. "%") end %></B></CENTER></TD><TD WIDTH="<%= (100-tonumber(view.value.memory.used)) %>%" STYLE="background:#0c0;border:2px solid black;border-left:none;""><CENTER><B><% if ( 90 > tonumber(view.value.memory.used)) then io.write((100-tonumber(view.value.memory.used)) .. "%") end %></B></CENTER></TD><TD>100%</TD>
+ <TD>0%</TD>
+ <TD WIDTH="<%= html.html_escape(view.value.memory.used) %>%"
+ STYLE="background:red;border:2px solid black;border-right:none;">
+ <CENTER><B><% print_percent(view.value.memory.used) %></B></CENTER>
+ </TD>
+ <TD WIDTH="<%= html.html_escape(view.value.memory.buffers) %>%"
+ STYLE="background:yellow;border:2px solid black;">
+ <CENTER><B><% print_percent(view.value.memory.buffers) %></B></CENTER>
+ </TD>
+ <TD WIDTH="<%= tonumber(view.value.memory.free) %>%"
+ STYLE="background:#0c0;border:2px solid black;border-left:none;"">
+ <CENTER><B><% print_percent(view.value.memory.free) %></B></CENTER>
+ </TD>
+ <TD>100%</TD>
</TR>
</TABLE>
+
<TABLE STYLE="margin:0px;padding:0px;border:0px;margin-top:5px;">
<TR>
- <TD WIDTH="100px"><B>Total:</B></TD><TD STYLE="background:red;;border:2px solid black;" WIDTH="20px"></TD><TD WIDTH="70px"><B>=Used</B></TD><TD STYLE="background:#0c0;border:2px solid black;" WIDTH="20px"></TD><TD><B>=Free</B></TD>
+ <TD WIDTH="100px"><B>Legend:</B></TD>
+ <TD STYLE="background:red;;border:2px solid black;" WIDTH="20px"></TD>
+ <TD WIDTH="70px"><B>=Used</B></TD>
+ <TD STYLE="background:yellow;;border:2px solid black;" WIDTH="20px"></TD>
+ <TD WIDTH="70px"><B>=Buffers</B></TD>
+ <TD STYLE="background:#0c0;border:2px solid black;" WIDTH="20px"></TD>
+ <TD><B>=Free</B></TD>
</TR>
</TABLE>
</DL>