diff --git a/ffmap/routertools.py b/ffmap/routertools.py index 26aed9e..f83c9e4 100644 --- a/ffmap/routertools.py +++ b/ffmap/routertools.py @@ -515,6 +515,7 @@ def new_router_stats(infdict, router_id, uptime, router_update, statstime): "time": statstime, "fields": { "sys_memfree": router_update["memory"]['free'], + "sys_memavail": router_update["memory"]['available'], "sys_membuff": router_update["memory"]['buffering'], "sys_memcache": router_update["memory"]['caching'], "loadavg": float(router_update["sys_loadavg"]), @@ -661,6 +662,7 @@ def parse_nodewatcher_xml(xml,statstime): "sys_uptime": int(evalxpathfloat(tree,"/data/system_data/uptime/text()")), "memory": { "free": evalxpathint(tree,"/data/system_data/memory_free/text()"), + "available": evalxpathint(tree,"/data/system_data/memory_available/text()"), "buffering": evalxpathint(tree,"/data/system_data/memory_buffering/text()"), "caching": evalxpathint(tree,"/data/system_data/memory_caching/text()"), }, diff --git a/ffmap/web/application.py b/ffmap/web/application.py index b55c45d..f453143 100755 --- a/ffmap/web/application.py +++ b/ffmap/web/application.py @@ -285,6 +285,7 @@ def router_info(dbid): "mb": s["sys_membuff"], "mc": s["sys_memcache"], "mf": s["sys_memfree"], + "ma": s["sys_memavail"], "pr": s["sys_procrun"], "pt": s["sys_proctot"] }) diff --git a/ffmap/web/static/js/graph.js b/ffmap/web/static/js/graph.js index cc9cc63..55f80b1 100644 --- a/ffmap/web/static/js/graph.js +++ b/ffmap/web/static/js/graph.js @@ -20,6 +20,9 @@ function legendFormatter(label, series) { return label; } +function appendMiB(value, fixed=1) { + return " (" + (value/1024).toFixed(fixed) + " M)"; +} function setup_plot_zoom(plot, pdata, num_data_points) { plot.getPlaceholder().bind("plotselected", function (event, ranges) { @@ -184,18 +187,42 @@ function gw_graph(gws) { function memory_graph() { var memstat = $("#memstat"); - var free = [], caching = [], buffering = []; + var free = [], caching = [], buffering = [], available = []; var len, i; + var label_free = "free"; + var label_avail = "available"; + var label_cache = "cache"; + var label_buff = "buffer"; + for (len=router_stats.length, i=0; i