Browse Source

Add cached and buffered memory, version 1.4.5.

windows
Florian N 11 years ago
parent
commit
f4a7255379
  1. 10
      pydash/services.py
  2. 14
      pydash/static/css/dashboard.css
  3. 4
      pydash/templates/main.html
  4. 51
      pydash/views.py

10
pydash/services.py

@ -211,17 +211,23 @@ def get_mem():
"""
try:
pipe = os.popen(
"free -tmo | " + "grep 'Mem' | " + "awk '{print $2,$4}'")
"free -tmo | " + "grep 'Mem' | " + "awk '{print $2,$4,$6,$7}'")
data = pipe.read().strip().split()
pipe.close()
allmem = int(data[0])
freemem = int(data[1])
buffers = int(data[2])
cachedmem = int(data[3])
# Memory in buffers + cached is actually available, so we count it
# as free. See http://www.linuxatemyram.com/ for details
freemem += buffers + cachedmem
percent = (100 - ((freemem * 100) / allmem))
usage = (allmem - freemem)
mem_usage = {'usage': usage, 'free': freemem, 'percent': percent}
mem_usage = {'usage': usage, 'buffers': buffers, 'cached': cachedmem, 'free': freemem, 'percent': percent}
data = mem_usage

14
pydash/static/css/dashboard.css

@ -397,7 +397,19 @@ h6.bigstats {
}
.memu {
margin: 0.5em;
border: 0 solid rgb(249, 134, 33);
border: 0 solid rgb(247, 70, 74);
border-left-width: 1em;
padding: 0 0.3em;
}
.memb {
margin: 0.5em;
border: 0 solid rgb(0, 154, 205);
border-left-width: 1em;
padding: 0 0.3em;
}
.memc {
margin: 0.5em;
border: 0 solid rgb(255, 185, 15);
border-left-width: 1em;
padding: 0 0.3em;
}

4
pydash/templates/main.html

@ -128,6 +128,8 @@
<div>
<span class="memf">{% trans "Free" %}</span>
<span class="memu">{% trans "Used" %}</span>
<span class="memb">{% trans "Buffers" %}</span>
<span class="memc">{% trans "Cached" %}</span>
</div>
</div>
<!-- /widget-content -->
@ -340,7 +342,7 @@ var mem_ctx = $("#memoryChart").get(0).getContext("2d");
$.getJSON(pydashUrls['memusage'], function(data) {
var options = {
animation : false,
pointDotRadius : 2,
pointDotRadius : 4,
scaleLabel : "<%=value%> Mb"
}
memChart.Line(data, options);

51
pydash/views.py

@ -271,6 +271,8 @@ def memusage(request):
"""
datasets_free = []
datasets_used = []
datasets_buffers = []
datasets_cached = []
try:
mem_usage = services.get_mem()
@ -285,10 +287,14 @@ def memusage(request):
if not cookies:
datasets_free.append(0)
datasets_used.append(0)
datasets_buffers.append(0)
datasets_cached.append(0)
else:
datasets = json.loads(cookies)
datasets_free = datasets[0]
datasets_used = datasets[1]
atasets_buffers = datasets[2]
datasets_cached = datasets[3]
if len(datasets_free) > 10:
while datasets_free:
@ -300,6 +306,16 @@ def memusage(request):
del datasets_used[0]
if len(datasets_used) == 10:
break
if len(datasets_buffers) > 10:
while datasets_buffers:
del datasets_buffers[0]
if len(datasets_buffers) == 10:
break
if len(datasets_cached) > 10:
while datasets_cached:
del datasets_cached[0]
if len(datasets_cached) == 10:
break
if len(datasets_free) <= 9:
datasets_free.append(int(mem_usage['free']))
if len(datasets_free) == 10:
@ -310,7 +326,16 @@ def memusage(request):
if len(datasets_used) == 10:
datasets_used.append(int(mem_usage['usage']))
del datasets_used[0]
if len(datasets_buffers) <= 9:
datasets_buffers.append(int(mem_usage['buffers']))
if len(datasets_buffers) == 10:
datasets_buffers.append(int(mem_usage['buffers']))
del datasets_buffers[0]
if len(datasets_cached) <= 9:
datasets_cached.append(int(mem_usage['cached']))
if len(datasets_cached) == 10:
datasets_cached.append(int(mem_usage['cached']))
del datasets_cached[0]
# Some fix division by 0 Chart.js
if len(datasets_free) == 10:
if sum(datasets_free) == 0:
@ -322,9 +347,9 @@ def memusage(request):
'labels': [""] * 10,
'datasets': [
{
"fillColor": "rgba(249,134,33,0.5)",
"strokeColor": "rgba(249,134,33,1)",
"pointColor": "rgba(249,134,33,1)",
"fillColor": "rgba(247,70,74,0.5)",
"strokeColor": "rgba(247,70,74,1)",
"pointColor": "rgba(247,70,74,1)",
"pointStrokeColor": "#fff",
"data": datasets_used
},
@ -334,11 +359,25 @@ def memusage(request):
"pointColor": "rgba(43,214,66,1)",
"pointStrokeColor": "#fff",
"data": datasets_free
}
},
{
"fillColor": "rgba(0,154,205,0.5)",
"strokeColor": "rgba(0,154,205,1)",
"pointColor": "rgba(0,154,205,1)",
"pointStrokeColor": "#fff",
"data": datasets_buffers
},
{
"fillColor": "rgba(255,185,15,0.5)",
"strokeColor": "rgba(255,185,15,1)",
"pointColor": "rgba(265,185,15,1)",
"pointStrokeColor": "#fff",
"data": datasets_cached
}
]
}
cookie_memory = [datasets_free, datasets_used]
cookie_memory = [datasets_free, datasets_used, datasets_buffers, datasets_cached]
data = json.dumps(memory)
response = HttpResponse()
response['Content-Type'] = "text/javascript"

Loading…
Cancel
Save