NIU:
[project/luci.git] / modules / niu / luasrc / view / niu / system.htm
1 <%
2 local nxo = require "nixio"
3 local fs = require "nixio.fs"
4 local sinfo = nxo.sysinfo()
5 local load1 = nxo.bit.div(sinfo.loads[1] * 100, 1)
6 local load15 = nxo.bit.div(sinfo.loads[3] * 100, 1)
7
8 local meminfo = fs.readfile("/proc/meminfo")
9 local totalram = nxo.bit.div(sinfo.totalram, 1024)
10 local freeram = nxo.bit.div(sinfo.freeram, 1024)
11 local buffers = nxo.bit.div(sinfo.bufferram, 1024)
12 local cached = tonumber(meminfo:match("Cached:%s+([0-9]+)%s+"))
13 local memused = nxo.bit.div(totalram - freeram - cached - buffers, 1024)
14 totalram = nxo.bit.div(totalram, 1024)
15
16 local totalswap = nxo.bit.div(sinfo.totalswap, 1048576)
17 local usedswap = totalswap - nxo.bit.div(sinfo.freeswap, 1048576)
18
19
20 local function date_format(secs)
21         local suff = {"min", "h", "d"}
22         local mins = 0
23         local hour = 0
24         local days = 0
25         
26         secs = nxo.bit.div(secs, 1)
27         if secs > 60 then
28                 mins = nxo.bit.div(secs, 60)
29                 secs = secs % 60
30         end
31         
32         if mins > 60 then
33                 hour = nxo.bit.div(mins, 60)
34                 mins = mins % 60
35         end
36         
37         if hour > 24 then
38                 days = nxo.bit.div(hour, 24)
39                 hour = hour % 24
40         end
41         
42         if days > 0 then
43                 return string.format("%.0fd %02.0fh %02.0fmin", days, hour, mins)
44         else
45                 return string.format("%02.0fh %02.0fmin", hour, mins)
46         end
47 end
48 %>
49 <table class="dbstattbl">
50 <tr>
51 <th>Load:</th>
52 <td><%=load1%>% / <%=load15%>%</td>
53 </tr>
54 <tr>
55 <th>Memory:</th>
56 <td><%=memused%> MiB / <%=totalram%> MiB</td>
57 </tr>
58
59
60 <% if totalswap > 0 then %>
61 <tr>
62 <th>Swap:</th>
63 <td><%=usedswap%> MiB / <%=totalswap%> MiB</td>
64 </tr>
65 <% end %>
66
67 <tr>
68 <th>Uptime:</th>
69 <td><%=date_format(sinfo.uptime)%></td>
70 </tr>
71 </table>
72 <br />