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: try:
pipe = os.popen( 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() data = pipe.read().strip().split()
pipe.close() pipe.close()
allmem = int(data[0]) allmem = int(data[0])
freemem = int(data[1]) 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)) percent = (100 - ((freemem * 100) / allmem))
usage = (allmem - freemem) 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 data = mem_usage

14
pydash/static/css/dashboard.css

@ -397,7 +397,19 @@ h6.bigstats {
} }
.memu { .memu {
margin: 0.5em; 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; border-left-width: 1em;
padding: 0 0.3em; padding: 0 0.3em;
} }

4
pydash/templates/main.html

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

51
pydash/views.py

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

Loading…
Cancel
Save