summaryrefslogtreecommitdiffstats
path: root/health-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'health-model.lua')
-rw-r--r--health-model.lua28
1 files changed, 22 insertions, 6 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