diff options
-rw-r--r-- | lib/gras_impl/stats.hpp | 2 | ||||
-rw-r--r-- | lib/top_block_stats.cpp | 1 | ||||
-rw-r--r-- | python/gras/stats/CMakeLists.txt | 1 | ||||
-rw-r--r-- | python/gras/stats/chart_factory.js | 1 | ||||
-rw-r--r-- | python/gras/stats/chart_handler_breakdown.js | 2 | ||||
-rw-r--r-- | python/gras/stats/chart_overall_throughput.js | 2 | ||||
-rw-r--r-- | python/gras/stats/chart_overhead_compare.js | 2 | ||||
-rw-r--r-- | python/gras/stats/chart_total_io_counts.js | 62 | ||||
-rw-r--r-- | python/gras/stats/main.css | 15 | ||||
-rw-r--r-- | python/gras/stats/main.html | 1 | ||||
-rw-r--r-- | python/gras/stats/main.js | 5 |
11 files changed, 88 insertions, 6 deletions
diff --git a/lib/gras_impl/stats.hpp b/lib/gras_impl/stats.hpp index b7b4553..3f78b8d 100644 --- a/lib/gras_impl/stats.hpp +++ b/lib/gras_impl/stats.hpp @@ -13,6 +13,7 @@ struct BlockStats { BlockStats(void) { + init_time = time_now(); start_time = 0; stop_time = 0; work_count = 0; @@ -24,6 +25,7 @@ struct BlockStats total_time_output = 0; } + time_ticks_t init_time; time_ticks_t start_time; time_ticks_t stop_time; diff --git a/lib/top_block_stats.cpp b/lib/top_block_stats.cpp index e5fd96d..04fc7ae 100644 --- a/lib/top_block_stats.cpp +++ b/lib/top_block_stats.cpp @@ -45,6 +45,7 @@ std::string TopBlock::get_stats(const std::string &) std::string block_xml; block_xml += str(boost::format(" <tps>%llu</tps>\n") % time_tps()); block_xml += str(boost::format(" <stats_time>%llu</stats_time>\n") % message.stats_time); + block_xml += str(boost::format(" <init_time>%llu</init_time>\n") % stats.init_time); block_xml += str(boost::format(" <start_time>%llu</start_time>\n") % stats.start_time); block_xml += str(boost::format(" <stop_time>%llu</stop_time>\n") % stats.stop_time); block_xml += str(boost::format(" <work_count>%llu</work_count>\n") % stats.work_count); diff --git a/python/gras/stats/CMakeLists.txt b/python/gras/stats/CMakeLists.txt index 0b91cee..54502a5 100644 --- a/python/gras/stats/CMakeLists.txt +++ b/python/gras/stats/CMakeLists.txt @@ -19,6 +19,7 @@ INSTALL( chart_overhead_compare.js chart_overall_throughput.js chart_handler_breakdown.js + chart_total_io_counts.js main.css DESTINATION ${GR_PYTHON_DIR}/gras/stats COMPONENT ${GRAS_COMP_PYTHON} diff --git a/python/gras/stats/chart_factory.js b/python/gras/stats/chart_factory.js index ac75d30..e0a7dbb 100644 --- a/python/gras/stats/chart_factory.js +++ b/python/gras/stats/chart_factory.js @@ -7,6 +7,7 @@ var gras_chart_get_registry = function() {key:'overhead_compare', name:'Overhead Compare', factory:GrasChartOverheadCompare}, {key:'overall_throughput', name:'Overall Throughput', factory:GrasChartOverallThroughput}, {key:'handler_breakdown', name:'Handler Breakdown', factory:GrasChartHandlerBreakdown}, + {key:'total_io_counts', name:'Total IO Counts', factory:GrasChartTotalIoCounts}, ]; } diff --git a/python/gras/stats/chart_handler_breakdown.js b/python/gras/stats/chart_handler_breakdown.js index cd7e048..8e90fc3 100644 --- a/python/gras/stats/chart_handler_breakdown.js +++ b/python/gras/stats/chart_handler_breakdown.js @@ -29,7 +29,7 @@ GrasChartHandlerBreakdown.prototype.update = function(point) ]); var options = { - width:$('#page').width()/5, + width:GRAS_CHARTS_STD_WIDTH, chartArea:{left:5,top:0,right:5,bottom:0,width:"100%",height:"100%"}, }; diff --git a/python/gras/stats/chart_overall_throughput.js b/python/gras/stats/chart_overall_throughput.js index 7e049d2..4947479 100644 --- a/python/gras/stats/chart_overall_throughput.js +++ b/python/gras/stats/chart_overall_throughput.js @@ -38,7 +38,7 @@ GrasChartOverallThroughput.prototype.update = function(point) var chart_data = google.visualization.arrayToDataTable(data_set); var options = { - width:$('#page').width()*0.4, + width:GRAS_CHARTS_STD_WIDTH*2, chartArea:{left:0,top:0,right:0,bottom:0,width:"100%",height:"85%"}, legend: {'position': 'bottom'}, }; diff --git a/python/gras/stats/chart_overhead_compare.js b/python/gras/stats/chart_overhead_compare.js index 37a1350..c373142 100644 --- a/python/gras/stats/chart_overhead_compare.js +++ b/python/gras/stats/chart_overhead_compare.js @@ -29,7 +29,7 @@ GrasChartOverheadCompare.prototype.update = function(point) var data = google.visualization.arrayToDataTable(data_set) var options = { - width:$('#page').width()/5, + width:GRAS_CHARTS_STD_WIDTH, chartArea:{left:5,top:0,right:5,bottom:0,width:"100%",height:"100%"}, }; diff --git a/python/gras/stats/chart_total_io_counts.js b/python/gras/stats/chart_total_io_counts.js new file mode 100644 index 0000000..6280733 --- /dev/null +++ b/python/gras/stats/chart_total_io_counts.js @@ -0,0 +1,62 @@ +function GrasChartTotalIoCounts(args) +{ + //input checking + if (args.block_ids.length != 1) throw gras_error_dialog( + "GrasChartTotalIoCounts", + "Error making total IO counts chart.\n"+ + "Specify only one block for this chart." + ); + + //settings + this.block_id = args.block_ids[0]; + this.div = $('<div />').attr({class:'chart_total_io_counts'}); + $(args.panel).append(this.div); + this.title = "IO Totals - " + this.block_id; +} + +GrasChartTotalIoCounts.prototype.update = function(point) +{ + var block_data = $('block[id="' + this.block_id + '"]', point); + var ul = $('<ul />'); + $('ul', this.div).remove(); //clear old lists + this.div.append(ul); + + { + var init_time = parseInt($('init_time', block_data).text()); + var stats_time = parseInt($('stats_time', block_data).text()); + var tps = parseInt($('tps', block_data).text()); + var duration = (stats_time - init_time)/tps; + var li = $('<li />'); + var strong = $('<strong />').text('Elapsed' + ': '); + var span = $('<span />').text(duration.toFixed(2).toString() + ' secs'); + li.append(strong); + li.append(span); + ul.append(li); + } + + var stuff = [ + ['Input', 'items', 'items_consumed'], + ['Input', 'tags', 'tags_consumed'], + ['Input', 'msgs', 'msgs_consumed'], + ['Output', 'items', 'items_produced'], + ['Output', 'tags', 'tags_produced'], + ['Output', 'msgs', 'msgs_produced'], + ]; + + $.each(stuff, function(contents_i, contents) + { + var dir = contents[0]; + var units = contents[1]; + var key = contents[2]; + $(key, block_data).each(function(index, elem) + { + var count = parseInt($(elem).text()); + var li = $('<li />'); + var strong = $('<strong />').text(dir + index.toString() + ': '); + var span = $('<span />').text(count.toString() + ' ' + units); + li.append(strong); + li.append(span); + if (count > 0) ul.append(li); + }); + }); +} diff --git a/python/gras/stats/main.css b/python/gras/stats/main.css index 617a400..b5f62f1 100644 --- a/python/gras/stats/main.css +++ b/python/gras/stats/main.css @@ -27,8 +27,17 @@ text-decoration:underline; #chart_designer_blocks input { -margin-right:7px; -margin-left:3px; +margin-right:10px; +margin-left:2px; +} + +.chart_total_io_counts li +{ +list-style-type:none; +text-align: left; +padding: 0px; +margin: 0px; +font-size:90%; } .chart_container @@ -39,7 +48,7 @@ float:left; #page{ padding:10px; color:inherit; -/*background-color:#F0FFF0;*/ +background-color:inherit; } #page h1{ diff --git a/python/gras/stats/main.html b/python/gras/stats/main.html index 0dcd1af..eeb221d 100644 --- a/python/gras/stats/main.html +++ b/python/gras/stats/main.html @@ -14,6 +14,7 @@ <script type="text/javascript" src="/chart_overhead_compare.js"></script> <script type="text/javascript" src="/chart_overall_throughput.js"></script> <script type="text/javascript" src="/chart_handler_breakdown.js"></script> + <script type="text/javascript" src="/chart_total_io_counts.js"></script> <script type="text/javascript" src="/main.js"></script> <script type="text/javascript"> google.load('visualization', '1.0', {'packages':['corechart']}); diff --git a/python/gras/stats/main.js b/python/gras/stats/main.js index 4d9f8c7..577f4dc 100644 --- a/python/gras/stats/main.js +++ b/python/gras/stats/main.js @@ -1,4 +1,9 @@ /*********************************************************************** + * Some constants + **********************************************************************/ +var GRAS_CHARTS_STD_WIDTH = 250; + +/*********************************************************************** * Stats registry data structure **********************************************************************/ var GrasStatsRegistry = function() |