summaryrefslogtreecommitdiff
path: root/python/gras/stats
diff options
context:
space:
mode:
authorJosh Blum2013-03-03 20:53:45 -0600
committerJosh Blum2013-03-03 20:53:45 -0600
commit96142291f4ed6e60cec142863a2163c931202010 (patch)
treecb3d2cf14cc7e62a30417e0871f3b980a62b1be3 /python/gras/stats
parenta8d2f5e32fee06f0ddecb618878ac9e2c0cbd169 (diff)
downloadsandhi-96142291f4ed6e60cec142863a2163c931202010.tar.gz
sandhi-96142291f4ed6e60cec142863a2163c931202010.tar.bz2
sandhi-96142291f4ed6e60cec142863a2163c931202010.zip
stats: work on config controls
Diffstat (limited to 'python/gras/stats')
-rw-r--r--python/gras/stats/CMakeLists.txt1
-rw-r--r--python/gras/stats/charts.js70
-rw-r--r--python/gras/stats/main.css18
-rw-r--r--python/gras/stats/main.html27
-rw-r--r--python/gras/stats/main.js71
-rw-r--r--python/gras/stats/registry.js11
6 files changed, 126 insertions, 72 deletions
diff --git a/python/gras/stats/CMakeLists.txt b/python/gras/stats/CMakeLists.txt
index 4510f5b..a8e4828 100644
--- a/python/gras/stats/CMakeLists.txt
+++ b/python/gras/stats/CMakeLists.txt
@@ -16,6 +16,7 @@ INSTALL(
main.js
registry.js
utils.js
+ charts.js
main.css
DESTINATION ${GR_PYTHON_DIR}/gras/stats
COMPONENT ${GRAS_COMP_PYTHON}
diff --git a/python/gras/stats/charts.js b/python/gras/stats/charts.js
new file mode 100644
index 0000000..0c020d3
--- /dev/null
+++ b/python/gras/stats/charts.js
@@ -0,0 +1,70 @@
+/***********************************************************************
+ * charts and visualization stuff
+ **********************************************************************/
+
+var gras_setup_overall_chart = function(registry)
+{
+ var chart = new google.visualization.LineChart($('#overall_charts').get(0));
+ var options = {
+ title: 'Throughput per block over time',
+ vAxis: {title: "rate (MIps)"},
+ hAxis: {title: "time (seconds)"}
+ };
+ registry.overall_chart = chart;
+ registry.overall_chart_options = options;
+}
+
+var gras_setup_individual_charts = function(registry)
+{
+ var point = registry.history[0];
+ var div = $('#block_enables:first');
+ var config = $('td:last', div);
+ var count = 0;
+ $.each(registry.getBlockIds(), function(index, id)
+ {
+ $(config).append('<label>' + id + '</label>');
+ $('<input>').attr({
+ type: 'checkbox',
+ name: id,
+ value: '1',
+ checked: '1',
+ onclick: function()
+ {
+
+ }
+ }).appendTo(config);
+ $(config).append('&nbsp;');
+ count++;
+ if (count == Math.round(registry.getBlockIds().length/2))
+ {
+ var table = $('table:last', div);
+ $(table).append('<tr><td></td></tr>');
+ config = $('td:last', div);
+ }
+ });
+
+}
+
+
+var gras_update_throughput_chart = function(registry)
+{
+ if (registry.history.length == 1) return gras_setup_individual_charts(registry);
+ if (registry.history.length < 2) return;
+
+ var ids = registry.getBlockIds();
+ var data_set = [['Throughput'].concat(ids)];
+ for (var i = Math.max(registry.history.length-10, 1); i < registry.history.length; i++)
+ {
+ var row = new Array();
+ row.push(i.toString());
+ for (var j = 0; j < ids.length; j++)
+ {
+ row.push(gras_extract_throughput_delta(registry.history[i-1], registry.history[i], ids[j])/1e6);
+ }
+ data_set.push(row);
+ }
+
+ var chart_data = google.visualization.arrayToDataTable(data_set);
+ registry.overall_chart.draw(chart_data, registry.overall_chart_options);
+
+}
diff --git a/python/gras/stats/main.css b/python/gras/stats/main.css
index 0fc5db7..60afd5e 100644
--- a/python/gras/stats/main.css
+++ b/python/gras/stats/main.css
@@ -5,11 +5,21 @@ padding:0px;
body{
font-family:Arial, Helvetica, sans-serif;
-font-size:10pt;
+font-size:9pt;
color:black;
background-color:white;
}
+#overall_config
+{
+float:left;
+}
+
+#block_enables
+{
+float:left;
+}
+
#page{
padding:10px;
color:inherit;
@@ -102,11 +112,11 @@ margin:10px 0px 0px 0px;
}
#page table{
-padding:10px;
+padding:5px;
}
#page th{
-padding:7px;
+padding:3px;
border:1px solid #333333;
text-align:center;
color:inherit;
@@ -117,7 +127,7 @@ background-color:#ECECEC;
}
#page td{
-padding:5px;
+padding:3px;
border:1px solid #333333;
text-align:center;
color:inherit;
diff --git a/python/gras/stats/main.html b/python/gras/stats/main.html
index e434192..c393763 100644
--- a/python/gras/stats/main.html
+++ b/python/gras/stats/main.html
@@ -9,6 +9,7 @@
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" src="/registry.js"></script>
<script type="text/javascript" src="/utils.js"></script>
+ <script type="text/javascript" src="/charts.js"></script>
<script type="text/javascript" src="/main.js"></script>
<script type="text/javascript">
google.load('visualization', '1.0', {'packages':['corechart']});
@@ -16,12 +17,28 @@
</script>
</head>
-<body>
- <div id='page'>
- <h1>GRAS Status Monitor</h1>
- <form id="individual_charts"></form>
- <div id="overall_charts" style="width:1000px;height:500px;"></div>
+<body id='page'>
+ <h1>GRAS Status Monitor</h1>
+ <div id="overall_config">
+ <table>
+ <tr><th colspan="2">Overall chart config</th></tr>
+ <tr>
+ <td colspan="2">Update rate: <input type="number" name="update_rate" min="1" max="10" size="4" /></td>
+ </tr>
+ <tr>
+ <td><label>Active?</label><input type="checkbox" name="active" checked="1" /></td>
+ <td><label>Show?</label><input type="checkbox" name="show" checked="1" /></td>
+ </tr>
+ </table>
</div>
+ <div id="block_enables">
+ <table>
+ <tr><th>Block enables</th></tr>
+ <tr><td></td></tr>
+ </table>
+ </div>
+ <div style="clear:both;"></div>
+ <div id="overall_charts" style="width:1000px;height:500px;"></div>
</body>
</html>
diff --git a/python/gras/stats/main.js b/python/gras/stats/main.js
index 696c061..5b30e77 100644
--- a/python/gras/stats/main.js
+++ b/python/gras/stats/main.js
@@ -1,63 +1,7 @@
/***********************************************************************
- * visuals
- **********************************************************************/
-
-var gras_setup_individual_charts = function(point)
-{
- var charts = $('#individual_charts').get(0);
- $('block', point).each(function()
- {
- $('<input>').attr({
- type: 'checkbox',
- name: $(this).attr('id'),
- value: '1',
- checked: '1',
- onclick: function()
- {
-
- }
- }).appendTo(charts);
- $(charts).append($(this).attr('id') + '&nbsp;');
- });
-}
-
-
-var gras_update_throughput_chart = function(data)
-{
- if (data.history.length == 1) return gras_setup_individual_charts(data.history[0]);
- if (data.history.length < 2) return;
-
- var ids = data.getBlockIds();
- var data_set = [['Throughput'].concat(ids)];
- for (var i = Math.max(data.history.length-10, 1); i < data.history.length; i++)
- {
- var row = new Array();
- row.push(i.toString());
- for (var j = 0; j < ids.length; j++)
- {
- row.push(gras_extract_throughput_delta(data.history[i-1], data.history[i], ids[j])/1e6);
- }
- data_set.push(row);
- }
-
-
- var data = google.visualization.arrayToDataTable(data_set);
-
- var options = {
- title: 'Throughput per block over time',
- vAxis: {title: "rate (MIps)"},
- hAxis: {title: "time (seconds)"}
- };
-
- var chart = new google.visualization.LineChart($('#overall_charts').get(0));
- chart.draw(data, options);
-
-}
-
-/***********************************************************************
* Query stats
**********************************************************************/
-var gras_query_stats = function(data)
+var gras_query_stats = function(registry)
{
$.ajax({
type: "GET",
@@ -68,12 +12,12 @@ var gras_query_stats = function(data)
{
if ($(xml, "gras_stats") !== undefined)
{
- data.appendPoint(xml);
- gras_update_throughput_chart(data);
+ registry.appendPoint(xml);
+ gras_update_throughput_chart(registry);
}
var onceHandle = window.setTimeout(function() {
- gras_query_stats(data);
- }, 500);
+ gras_query_stats(registry);
+ }, (1.0/registry.overall_rate));
}
});
}
@@ -83,6 +27,7 @@ var gras_query_stats = function(data)
**********************************************************************/
var gras_stats_main = function()
{
- var data = new GrasStatsRegistry();
- gras_query_stats(data);
+ var registry = new GrasStatsRegistry();
+ gras_setup_overall_chart(registry);
+ gras_query_stats(registry);
}
diff --git a/python/gras/stats/registry.js b/python/gras/stats/registry.js
index 4b5f2e2..197f874 100644
--- a/python/gras/stats/registry.js
+++ b/python/gras/stats/registry.js
@@ -1,4 +1,13 @@
/***********************************************************************
+ * Per block registry data structure
+ **********************************************************************/
+var GrasBlockRegistry = function(id)
+{
+ this.id = id;
+ this.enabled = true;
+}
+
+/***********************************************************************
* Stats registry data structure
**********************************************************************/
var GrasStatsRegistry = function()
@@ -6,6 +15,8 @@ var GrasStatsRegistry = function()
this.ids = new Array();
this.enables = new Array();
this.history = new Array();
+ this.overall_rate = 2.0;
+ this.overall_active = true;
}
GrasStatsRegistry.prototype.appendPoint = function(point)