return result
- def fetch_series(self, workload, metric, io_type, time, duration):
+ def fetch_series(self, function, workload, metric,
+ io_type, time, duration):
series = []
end = time
start = end - duration
request = ("http://%s:%s/graphite/render/?target="
- "averageSeries(%s.*.jobs.1.%s.%s)"
+ "%s(%s.*.jobs.1.%s.%s)"
"&format=json"
"&from=%s"
"&until=%s"
% (self.graphite_host, self.graphite_port,
- workload, io_type, metric,
+ function, workload, io_type, metric,
start, end))
self.logger.debug("Calling %s" % (request))
for io_type in ('read', 'write'):
metrics[metric][io_type] = {}
- series = self._lookup_prior_data(executor, metric, io_type)
+ function = "sumSeries"
+ if 'mean' in metric:
+ function = "averageSeries"
+
+ series = self._lookup_prior_data(executor, metric, io_type,
+ function)
series = self._convert_timestamps_to_samples(
executor, series)
steady = self._evaluate_prior_data(
if steady_state and not workload_name.startswith('_'):
executor.terminate_current_run()
- def _lookup_prior_data(self, executor, metric, io_type):
+ def _lookup_prior_data(self, executor, metric, io_type, function):
workload = executor.current_workload
graphite_db = GraphiteDB()
# data we just sent to it
now = int(time.time())
backtime = 60 * (executor.steady_state_samples + 1)
- data_series = graphite_db.fetch_series(workload,
+ data_series = graphite_db.fetch_series(function,
+ workload,
metric,
io_type,
now,
text += "<h4> Criteria : " + results[i]["criteria"] + "</h4>";
text += "<h4> Build Tag : " + results[i]["build_tag"] + "</h4>";
text += "<button type='button' class='btn btn-default btn-lg' id='para-"+ ids[i] +
- "' onclick=add_info('" + ids[i] + "')> Click here to view details </button>";
- text += "</div>";
+ "' onclick=add_info('" + ids[i] + "')> Click here to view details </button>";
+ text += "</div>";
}
$("#content").html(text);
}
text += "<h4> Criteria : " + results[i]["criteria"] + "</h4>";
text += "<h4> Build Tag : " + results[i]["build_tag"] + "</h4>";
text += "<button type='button' class='btn btn-default btn-lg' onclick=init()>Go Back</button>";
- text += "<button type='button' class='btn btn-default btn-lg' onclick=create_block_report() style='float: right;'> Steady State Convergence Report - All Block Sizes </button>";
+ text += "<button type='button' class='btn btn-default btn-lg' onclick=create_block_report() style='float: right;'> Steady State Convergence Report - All Runs </button>";
text += "<div class='row' id='block_report'></div>"
text += "</div>";
for (var i = 0; i < keys.length; i++ ){
text += "<div class='row' id='row-"+ keys[i] +"'>";
text += "<h4 onclick=add_test('" + keys[i] + "')>" + keys[i] + "</h4>";
text += "</div>";
- }
- $("#content").html(text);
+ }
+ $("#content").html(text);
}
function add_test(key){
if(document.getElementById("test-" + key) == null){
for( item in report_data[key][test] ){
var state = report_data[key][test][item]["steady_state"];
text += "<li onclick=create_modal('" + key + "','" + test + "','" + item + "') id='";
- text += key + "-" + test + "-" + item + "'>" + item + " (steady state: " + state +")";
+ text += key + "-" + test + "-" + item + "'>" + item + " (steady state: " + state +")";
text += "<br><div id='modal-" + key + "-" + test + "-" + item + "'>";
text += '<div class="modal-content-'+ key + '-' + test + '-' + item +'">';
text += '<div id="modal-text-'+ key + '-' + test + '-' + item +'"></div>';
else
name = "Latency (nanoseconds/ns)";
var len = data["series"].length;
+ var max_y = 1.25*average
for(var i = 0 ; i < len ; i++){
x[i] = data["series"][i][0];
y[i] = data["series"][i][1];
+ if(y[i] > max_y){
+ max_y=y[i]
+ }
}
var trace1 = {
x: x,
title: 'Round'
},
yaxis: {
- title: name
+ title: name,
+ range: [0, max_y]
}
};
// Creating average plot in var trace2
- var average_y = [];
+ var average_plus_y = [];
for(var i = 0; i < len ;i++ ){
- average_y.push(average)
+ average_plus_y.push(1.2*average)
}
var trace2 = {
x: x,
- y: average_y,
- name: 'Average',
+ y: average_plus_y,
+ name: 'Average + 20%',
type: 'scatter'
};
// Creating average plot in var trace3
- var average_plus_y = [];
+ var average_y = [];
for(var i = 0; i < len ;i++ ){
- average_plus_y.push(1.1*average)
+ average_y.push(average)
}
var trace3 = {
x: x,
- y: average_plus_y,
- name: '110%*Average',
+ y: average_y,
+ name: 'Average',
type: 'scatter'
};
// Creating average plot in var trace4
var average_minus_y = [];
for(var i = 0; i < len ;i++ ){
- average_minus_y.push(0.9*average)
+ average_minus_y.push(0.8*average)
}
var trace4 = {
x: x,
y: average_minus_y,
- name: '90%*Average',
+ name: 'Average - 20%',
type: 'scatter'
};
// Creating slope plot in var trace5
"</td><td> Measured Maximum Slope Excursion: " + data["slope"] + "</td></tr>";
table += "</tbody></table>";
document.getElementById("report-" + key + "-" + test + "-" + item).innerHTML = table;
- } function create_block_report(){
+ }
+ function create_block_report(){
var ele = document.getElementById("block_report");
var text = "";
text += "<ul class='list-group' style='margin: auto;'>"
for(i in report_data){
if(report_data[i][test] == undefined && test == 'lat_ns.mean')
test = 'lat.mean';
- data[i] = report_data[i][test][key];
+ data[i] = report_data[i][test][key];
}
document.getElementById('close-block-report-'+key+'-'+test).style.display = 'block';
- var modal = document.getElementById('modal-block-report-'+key+'-'+test);
+ var modal = document.getElementById('modal-block-report-'+key+'-'+test);
var modal_div = document.getElementById('modal-text-block-report-'+key+'-'+test);
modal_div.innerHTML += "<div id='graph-"+key+ "-"+ test+ "'></div><br><div id='report-"+key+ "-"+ test+ "'></div>";
var name = "";
else
name = "Latency (nanoseconds/ns)";
var plot_data = [];
+ var max_y = 0
for(i in data){
var x = [];
var y = [];
for(var j = 0 ; j < len ; j++){
x[j] = data[i]["series"][j][0];
y[j] = data[i]["series"][j][1];
+ if(y[j] > max_y){
+ max_y=y[j]
+ }
}
var trace = {
x: x,
title: 'Round'
},
yaxis: {
- title: name
+ title: name,
+ range: [0, max_y]
},
};
Plotly.newPlot('graph-'+key+'-'+test,plot_data,layout);
</script>
</body>
-</html>
\ No newline at end of file
+</html>