kloudbuster/doc/source/gallery/storage.html
Xin e4cc5697b7 remove URLs
Change-Id: Iaf15798122f1a0ac510ce1e0c460dc2fc84c866b
2016-04-06 11:12:35 -07:00

451 lines
32 KiB
HTML

<!--Copyright 2016 Cisco Systems, Inc. All rights reserved.-->
<!--Licensed under the Apache License, Version 2.0 (the "License"); you may-->
<!--not use this file except in compliance with the License. You may obtain-->
<!--a copy of the License at-->
<!--http://www.apache.org/licenses/LICENSE-2.0-->
<!--Unless required by applicable law or agreed to in writing, software-->
<!--distributed under the License is distributed on an "AS IS" BASIS, WITHOUT-->
<!--WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the-->
<!--License for the specific language governing permissions and limitations-->
<!--under the License.-->
<!DOCTYPE html>
<html lang="en-US" ng-app="app">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>KloudBuster Report</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js"></script>
<script src="https://d3js.org/d3.v3.min.js"></script>
<!--<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/line-chart/2.0.3/LineChart.min.css">-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ng-table/0.8.3/ng-table.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/ng-table/0.8.3/ng-table.min.js"></script>
<link rel="stylesheet" href="https://bootswatch.com/flatly/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/line-chart/1.1.12/line-chart.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body ng-controller="MainCtrl">
<nav class="navbar navbar-default">
<div class="container-fluid">
<a class="navbar-brand" style="font-family: Arial">
<span style="color:#DF314D">K</span>loudBuster
</a>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav" ng-init="tab=0">
<li ng-class="{active:tab==0}" ng-click="tab=0">
<a><span class="glyphicon" aria-hidden="true" ></span>Report</a>
</li>
<li ng-class="{active:tab==1}" ng-click="tab=1" ng-show="config == true">
<a><span class="glyphicon" aria-hidden="true" ></span>Configuration</a>
</li>
</ul>
<!--<ul class="nav navbar-nav navbar-right">-->
<!--<li><a href="#"></a></li>-->
<!--</ul>-->
</div>
</div>
</nav>
<div class="container" ng-show="tab == 0">
<h3>KloudBuster Storage Test Report</h3>
<ul class="nav nav-tabs">
<li ng-repeat="title in titleList" ng-class="{active: current_index==$index}" ng-click="handleEvent($event, $index,'')">
<a data-toggle="tab" aria-expanded="true">
{{title["description"]}} <span class="{{modes[title['mode']]['span']}}"></span>
</a>
</li>
</ul>
<ul class="nav nav-tabs" style="margin-top: 5px" ng-style="{height:current_mode_name =='rw' || current_mode_name =='randrw'?'':0, width:current_mode_name =='rw' || current_mode_name =='randrw'?'30%':0}">
<li ng-show="current_mode_name =='rw' || current_mode_name =='randrw'" ng-class="{active:current_mode['name']=='read' || current_mode['name']=='randread'}">
<a ng-click="handleEvent($event, current_index,'read')">Read</a>
</li>
<li ng-show="current_mode_name =='rw' || current_mode_name =='randrw'" ng-class="{active:current_mode['name']=='write' || current_mode['name']=='randwrite'}">
<a ng-click="handleEvent($event, current_index,'write')">Write</a>
</li>
</ul>
<h4 style="text-align: center"> {{current_mode_description}}</h4>
<h5 style="text-align: center">{{modes[current_mode_name]["title"]}} {{current_title}} ({{storage_target[from_outside.storage_target]}})</h5>
<div class="my-chart" style="height: 550px;margin-bottom: 5%">
<h6 style="margin-bottom:0"><span>{{current_mode["y_axis"]}}</span><span style="float:right">Latency(ms)</span></h6>
<linechart data="data" options="options"></linechart>
</div>
<table ng-table="tableParams" class="table table-responsive table-condensed table-bordered table-striped">
<tr ng-repeat="row in tableParams.data" style="text-align:center;">
<td title="cols[2].title" data-sortable="cols[2].field">{{row.total_client_vms}}</td>
<td title="cols[3].title" data-sortable="cols[3].field">{{row.block_size}}b</td>
<td title="cols[4].title" data-sortable="cols[4].field">{{row.iodepth}}</td>
<td title="cols[5].title" data-sortable="cols[5].field" ng-if="current_mode.group[0] == 'rand'">
{{row.rate_iops}}
</td>
<td title="cols[6].title" data-sortable="cols[6].field" ng-if="current_mode.group[1] == 'read'">
{{row.read_iops}}
</td>
<td title="cols[7].title" data-sortable="cols[7].field" ng-if="current_mode.group[1] == 'write'">
{{row.write_iops}}
</td>
<td title="cols[8].title" data-sortable="cols[8].field" ng-if="current_mode.group[0] == 'seq'">
{{row.rate}} KB/s
</td>
<td title="cols[9].title" data-sortable="cols[9].field" ng-if="current_mode.group[1] == 'read'">
{{row.read_bw}} KB/s
</td>
<td title="cols[10].title" data-sortable="cols[10].field" ng-if="current_mode.group[1] == 'write'">
{{row.write_bw}} KB/s
</td>
</tr>
</table>
</div>
<div class="container" ng-show="tab == 1">
<h3>KloudBuster HTTP Test Configuration</h3>
<div class="panel panel-default">
<div class="panel-body" style="word-wrap:break-word">
<textarea style="font-family:Courier New, Monospace;width: 100%;height: 900px" disabled> {{from_outside_config}}</textarea>
</div>
</div>
</div>
<footer style="text-align: center;">
<hr style="margin:2px"/>
<h6 style="color:gray">{{from_outside["time"]}} - KloudBuster {{from_outside["version"]}}</h6>
</footer>
<script type="text/javascript">
var num = -1;
var colorList = ["#F44336", "#673AB7", "#03A9F4", "#4CAF50", "#FFEB3B", "#BF360C", "#795548", "#E91E63", "#3F51B5", "#00BCD4", "#CDDC39", "#FF9800", "#9E9E9E", "#9C27B0", "#009688"];
var length = colorList.length;
function get_color() {
num = (num + 1) % length;
return colorList[num];
}
var modes = {
"randread": {
name:"randread",
title: "Rand Read",
group: ["rand", "read"],
y_axis: "IOPs/VM",
y_label: "RATE IOPs Per VM"
},
"randwrite": {
name:"randwrite",
title: "Rand Write",
group: ["rand", "write"],
y_axis: "IOPs/VM",
y_label: "RATE IOPs Per VM"
},
"read": {
name:"read",
title: "Seq Read",
group: ["seq", "read"],
y_axis: "BW/VM(KB/s)",
y_label: "RATE BW Per VM"
},
"write": {
name:"write",
title: "Seq Write",
group: ["seq", "write"],
y_axis: "BW/VM(KB/s)",
y_label: "RATE BW Per VM"
},
"randrw": {
name:"randrw",
title: "Rand Read/Write",
span:"caret",
group: ["rand", "mix"],
y_axis: "IOPs/VM",
y_label: "RATE IOPs Per VM"
},
"rw": {
name:"rw",
title: "Seq Read/Write",
span:"caret",
group: ["seq", "mix"],
y_axis: "BW/VM(KB/s)",
y_label: "RATE BW Per VM"
}
};
var storage_target = {"volume":"Cinder Volume","ephemeral":"Ephemeral Disk"};
angular.module("app", ["n3-line-chart", "ngTable"]).controller("MainCtrl", function ($scope, ngTableParams) {
$scope.current_index = 0;
$scope.modes = modes;
$scope.storage_target = storage_target;
if($scope.config = true) $scope.from_outside_config = JSON.stringify({"cleanup_resources": true, "client": {"availability_zone": null, "cleanup_resources": true, "flavor": {"disk": 0, "ram": 2048, "vcpus": 1}, "http_tool_configs": {"connection_type": "Keep-alive", "connections": 1000, "duration": 30, "rate_limit": 1000, "report_interval": 0, "threads": 1, "timeout": 5}, "image_name": "kloudbuster_v6", "keystone_admin_role": "admin", "networks_per_router": 1, "number_tenants": 1, "polling_interval": 5, "progression": {"enabled": true, "http_stop_limit": [50, 0], "storage_stop_limit": 20, "vm_multiple": 5, "vm_start": 1}, "prompt_before_run": false, "public_key_file": "/Users/xiyu3/.ssh/id_rsa.pub", "routers_per_tenant": 1, "secgroups_per_network": 1, "storage_stage_configs": {"disk_size": 1, "io_file_size": 1, "target": "volume", "vm_count": 20}, "storage_tool_configs": [{"block_size": "4k", "description": "Random Read", "iodepth": 4, "mode": "randread", "rate_iops": 100, "runtime": 30}, {"block_size": "4k", "description": "Random Write", "iodepth": 4, "mode": "randwrite", "rate_iops": 100, "runtime": 30}, {"block_size": "4k", "description": "Random Read/Write", "iodepth": 4, "mode": "randrw", "rate_iops": 100, "runtime": 30, "rwmixread": 70}, {"block_size": "64k", "description": "Sequential Read", "iodepth": 64, "mode": "read", "rate": "60M", "runtime": 30}, {"block_size": "64k", "description": "Sequential Write", "iodepth": 64, "mode": "write", "rate": "60M", "runtime": 30}, {"block_size": "64k", "description": "Sequential Read/Write", "iodepth": 64, "mode": "rw", "rate": "60M", "runtime": 30, "rwmixread": 70}], "use_floatingip": false, "vm_creation_concurrency": 5, "vms_per_network": 21}, "image_name": "kloudbuster_v6", "keystone_admin_role": "admin", "public_key_file": "/Users/xiyu3/.ssh/id_rsa.pub", "server": {"availability_zone": null, "cleanup_resources": true, "flavor": {"disk": 0, "ram": 2048, "vcpus": 1}, "http_server_configs": {"html_size": 32768}, "image_name": "kloudbuster_v6", "keystone_admin_role": "admin", "networks_per_router": 4, "number_tenants": 1, "public_key_file": "/Users/xiyu3/.ssh/id_rsa.pub", "routers_per_tenant": 1, "secgroups_per_network": 1, "use_floatingip": false, "vm_creation_concurrency": 5, "vms_per_network": 5}, "vm_creation_concurrency": 5}, null, "\t");
$scope.from_outside = {"kb_result": [[{"block_size": "4k", "description": "Random Read", "iodepth": 4, "mode": "randread", "rate_iops": 100, "read_bw": 400, "read_hist": [[50, 628], [75, 676], [90, 708], [99, 780], [99.9, 924], [99.99, 2257], [99.999, 2257]], "read_iops": 100, "tool": "fio", "total_client_vms": 1, "write_bw": 0, "write_iops": 0}, {"block_size": "4k", "description": "Random Write", "iodepth": 4, "mode": "randwrite", "rate_iops": 100, "read_bw": 0, "read_iops": 0, "tool": "fio", "total_client_vms": 1, "write_bw": 400, "write_hist": [[50, 644], [75, 676], [90, 700], [99, 772], [99.9, 1288], [99.99, 35103], [99.999, 35103]], "write_iops": 100}, {"block_size": "4k", "description": "Random Read/Write", "iodepth": 4, "mode": "randrw", "rate_iops": 100, "read_bw": 400, "read_hist": [[50, 636], [75, 692], [90, 724], [99, 820], [99.9, 1368], [99.99, 6307], [99.999, 6307]], "read_iops": 100, "rwmixread": 70, "tool": "fio", "total_client_vms": 1, "write_bw": 399, "write_hist": [[50, 628], [75, 684], [90, 716], [99, 812], [99.9, 1368], [99.99, 6307], [99.999, 6307]], "write_iops": 99}, {"block_size": "64k", "description": "Sequential Read", "iodepth": 64, "mode": "read", "rate": 61440, "read_bw": 61435, "read_hist": [[50, 310], [75, 326], [90, 346], [99, 462], [99.9, 3761], [99.99, 4451], [99.999, 4643]], "read_iops": 959, "tool": "fio", "total_client_vms": 1, "write_bw": 0, "write_iops": 0}, {"block_size": "64k", "description": "Sequential Write", "iodepth": 64, "mode": "write", "rate": 61440, "read_bw": 0, "read_iops": 0, "tool": "fio", "total_client_vms": 1, "write_bw": 61435, "write_hist": [[50, 294], [75, 330], [90, 362], [99, 426], [99.9, 8775], [99.99, 8775], [99.999, 12103]], "write_iops": 959}, {"block_size": "64k", "description": "Sequential Read/Write", "iodepth": 64, "mode": "rw", "rate": 61440, "read_bw": 61439, "read_hist": [[50, 378], [75, 548], [90, 5347], [99, 13903], [99.9, 17999], [99.99, 17999], [99.999, 17999]], "read_iops": 959, "rwmixread": 70, "tool": "fio", "total_client_vms": 1, "write_bw": 61431, "write_hist": [[50, 430], [75, 524], [90, 8391], [99, 23903], [99.9, 24095], [99.99, 50447], [99.999, 50447]], "write_iops": 959}], [{"block_size": "4k", "description": "Random Read", "iodepth": 4, "mode": "randread", "rate_iops": 500, "read_bw": 2000, "read_hist": [[50, 516], [75, 580], [90, 636], [99, 748], [99.9, 1368], [99.99, 7267], [99.999, 12231]], "read_iops": 500, "tool": "fio", "total_client_vms": 5, "write_bw": 0, "write_iops": 0}, {"block_size": "4k", "description": "Random Write", "iodepth": 4, "mode": "randwrite", "rate_iops": 500, "read_bw": 0, "read_iops": 0, "tool": "fio", "total_client_vms": 5, "write_bw": 2000, "write_hist": [[50, 516], [75, 580], [90, 636], [99, 772], [99.9, 4065], [99.99, 72255], [99.999, 72255]], "write_iops": 500}, {"block_size": "4k", "description": "Random Read/Write", "iodepth": 4, "mode": "randrw", "rate_iops": 500, "read_bw": 2000, "read_hist": [[50, 516], [75, 580], [90, 644], [99, 772], [99.9, 1416], [99.99, 105023], [99.999, 105023]], "read_iops": 500, "rwmixread": 70, "tool": "fio", "total_client_vms": 5, "write_bw": 1995, "write_hist": [[50, 516], [75, 588], [90, 652], [99, 772], [99.9, 1416], [99.99, 105023], [99.999, 105023]], "write_iops": 499}, {"block_size": "64k", "description": "Sequential Read", "iodepth": 64, "mode": "read", "rate": 307200, "read_bw": 307175, "read_hist": [[50, 362], [75, 394], [90, 430], [99, 516], [99.9, 10431], [99.99, 15063], [99.999, 15575]], "read_iops": 4799, "tool": "fio", "total_client_vms": 5, "write_bw": 0, "write_iops": 0}, {"block_size": "64k", "description": "Sequential Write", "iodepth": 64, "mode": "write", "rate": 307200, "read_bw": 0, "read_iops": 0, "tool": "fio", "total_client_vms": 5, "write_bw": 293234, "write_hist": [[50, 294], [75, 338], [90, 13255], [99, 23527], [99.9, 35583], [99.99, 287167], [99.999, 353983]], "write_iops": 3956}, {"block_size": "64k", "description": "Sequential Read/Write", "iodepth": 64, "mode": "rw", "rate": 307200, "read_bw": 307195, "read_hist": [[50, 402], [75, 524], [90, 756], [99, 1592], [99.9, 14023], [99.99, 16199], [99.999, 16263]], "read_iops": 4799, "rwmixread": 70, "tool": "fio", "total_client_vms": 5, "write_bw": 307155, "write_hist": [[50, 458], [75, 548], [90, 996], [99, 1672], [99.9, 15175], [99.99, 16527], [99.999, 16527]], "write_iops": 4799}], [{"block_size": "4k", "description": "Random Read", "iodepth": 4, "mode": "randread", "rate_iops": 1000, "read_bw": 4000, "read_hist": [[50, 564], [75, 636], [90, 708], [99, 844], [99.9, 2193], [99.99, 12999], [99.999, 20367]], "read_iops": 1000, "tool": "fio", "total_client_vms": 10, "write_bw": 0, "write_iops": 0}, {"block_size": "4k", "description": "Random Write", "iodepth": 4, "mode": "randwrite", "rate_iops": 1000, "read_bw": 0, "read_iops": 0, "tool": "fio", "total_client_vms": 10, "write_bw": 4000, "write_hist": [[50, 540], [75, 620], [90, 692], [99, 860], [99.9, 9183], [99.99, 102575], [99.999, 134623]], "write_iops": 1000}, {"block_size": "4k", "description": "Random Read/Write", "iodepth": 4, "mode": "randrw", "rate_iops": 1000, "read_bw": 4000, "read_hist": [[50, 564], [75, 652], [90, 724], [99, 900], [99.9, 11647], [99.99, 193119], [99.999, 197215]], "read_iops": 1000, "rwmixread": 70, "tool": "fio", "total_client_vms": 10, "write_bw": 3990, "write_hist": [[50, 572], [75, 652], [90, 724], [99, 876], [99.9, 14903], [99.99, 193119], [99.999, 197215]], "write_iops": 999}, {"block_size": "64k", "description": "Sequential Read", "iodepth": 64, "mode": "read", "rate": 614400, "read_bw": 614350, "read_hist": [[50, 410], [75, 494], [90, 580], [99, 5615], [99.9, 14927], [99.99, 10047], [99.999, 18239]], "read_iops": 9599, "tool": "fio", "total_client_vms": 10, "write_bw": 0, "write_iops": 0}, {"block_size": "64k", "description": "Sequential Write", "iodepth": 64, "mode": "write", "rate": 614400, "read_bw": 0, "read_iops": 0, "tool": "fio", "total_client_vms": 10, "write_bw": 570946, "write_hist": [[50, 394], [75, 564], [90, 26767], [99, 41215], [99.9, 116287], [99.99, 3917823], [99.999, 3950591]], "write_iops": 8296}, {"block_size": "64k", "description": "Sequential Read/Write", "iodepth": 64, "mode": "rw", "rate": 614400, "read_bw": 562917, "read_hist": [[50, 10183], [75, 21135], [90, 27279], [99, 50047], [99.9, 247647], [99.99, 999519], [99.999, 996127]], "read_iops": 7233, "rwmixread": 70, "tool": "fio", "total_client_vms": 10, "write_bw": 537435, "write_hist": [[50, 4195], [75, 26767], [90, 44319], [99, 103711], [99.9, 368447], [99.99, 416127], [99.999, 416127]], "write_iops": 5272}], [{"block_size": "4k", "description": "Random Read", "iodepth": 4, "mode": "randread", "rate_iops": 1500, "read_bw": 6000, "read_hist": [[50, 540], [75, 612], [90, 684], [99, 828], [99.9, 2577], [99.99, 16199], [99.999, 20623]], "read_iops": 1500, "tool": "fio", "total_client_vms": 15, "write_bw": 0, "write_iops": 0}, {"block_size": "4k", "description": "Random Write", "iodepth": 4, "mode": "randwrite", "rate_iops": 1500, "read_bw": 0, "read_iops": 0, "tool": "fio", "total_client_vms": 15, "write_bw": 6000, "write_hist": [[50, 540], [75, 628], [90, 708], [99, 924], [99.9, 10127], [99.99, 129727], [99.999, 143823]], "write_iops": 1500}, {"block_size": "4k", "description": "Random Read/Write", "iodepth": 4, "mode": "randrw", "rate_iops": 1500, "read_bw": 6000, "read_hist": [[50, 508], [75, 588], [90, 668], [99, 844], [99.9, 19183], [99.99, 297919], [99.999, 402015]], "read_iops": 1500, "rwmixread": 70, "tool": "fio", "total_client_vms": 15, "write_bw": 5985, "write_hist": [[50, 516], [75, 596], [90, 668], [99, 812], [99.9, 34183], [99.99, 44919], [99.999, 44015]], "write_iops": 1499}, {"block_size": "64k", "description": "Sequential Read", "iodepth": 64, "mode": "read", "rate": 921600, "read_bw": 921521, "read_hist": [[50, 580], [75, 812], [90, 1528], [99, 6535], [99.9, 44511], [99.99, 52703], [99.999, 54751]], "read_iops": 14398, "tool": "fio", "total_client_vms": 15, "write_bw": 0, "write_iops": 0}, {"block_size": "64k", "description": "Sequential Write", "iodepth": 64, "mode": "write", "rate": 921600, "read_bw": 0, "read_iops": 0, "tool": "fio", "total_client_vms": 15, "write_bw": 856497, "write_hist": [[50, 628], [75, 38175], [90, 47119], [99, 88095], [99.9, 122703], [99.99, 5017599], [99.999, 5017599]], "write_iops": 11820}, {"block_size": "64k", "description": "Sequential Read/Write", "iodepth": 64, "mode": "rw", "rate": 921600, "read_bw": 839797, "read_hist": [[50, 23951], [75, 29327], [90, 36639], [99, 70207], [99.9, 289319], [99.99, 6787071], [99.999, 6852607]], "read_iops": 10465, "rwmixread": 70, "tool": "fio", "total_client_vms": 15, "write_bw": 788195, "write_hist": [[50, 35615], [75, 48415], [90, 61727], [99, 212095], [99.9, 471535], [99.99, 852607], [99.999, 918143]], "write_iops": 6221}], [{"block_size": "4k", "description": "Random Read", "iodepth": 4, "mode": "randread", "rate_iops": 2000, "read_bw": 8000, "read_hist": [[50, 494], [75, 564], [90, 644], [99, 796], [99.9, 1576], [99.99, 7139], [99.999, 18063]], "read_iops": 2000, "tool": "fio", "total_client_vms": 20, "write_bw": 0, "write_iops": 0}, {"block_size": "4k", "description": "Random Write", "iodepth": 4, "mode": "randwrite", "rate_iops": 2000, "read_bw": 0, "read_iops": 0, "tool": "fio", "total_client_vms": 20, "write_bw": 8000, "write_hist": [[50, 494], [75, 580], [90, 676], [99, 1240], [99.9, 12423], [99.99, 17391], [99.999, 19391]], "write_iops": 2000}, {"block_size": "4k", "description": "Random Read/Write", "iodepth": 4, "mode": "randrw", "rate_iops": 2000, "read_bw": 8000, "read_hist": [[50, 474], [75, 564], [90, 652], [99, 1048], [99.9, 42431], [99.99, 67199], [99.999, 69199]], "read_iops": 2000, "rwmixread": 70, "tool": "fio", "total_client_vms": 20, "write_bw": 7980, "write_hist": [[50, 478], [75, 564], [90, 644], [99, 844], [99.9, 55431], [99.99, 59199], [99.999, 59199]], "write_iops": 1999}, {"block_size": "64k", "description": "Sequential Read", "iodepth": 64, "mode": "read", "rate": 1228800, "read_bw": 1144998, "read_hist": [[50, 71231], [75, 71231], [90, 41231], [99, 57375], [99.9, 91407], [99.99, 134271], [99.999, 138367]], "read_iops": 17890, "tool": "fio", "total_client_vms": 20, "write_bw": 0, "write_iops": 0}, {"block_size": "64k", "description": "Sequential Write", "iodepth": 64, "mode": "write", "rate": 1228800, "read_bw": 0, "read_iops": 0, "tool": "fio", "total_client_vms": 20, "write_bw": 982108, "write_hist": [[50, 54047], [75, 72255], [90, 95807], [99, 161615], [99.9, 656623], [99.99, 656623], [99.999, 917695]], "write_iops": 12220}, {"block_size": "64k", "description": "Sequential Read/Write", "iodepth": 64, "mode": "rw", "rate": 1228800, "read_bw": 981561, "read_hist": [[50, 40223], [75, 48415], [90, 57119], [99, 92735], [99.9, 1326143], [99.99, 1675295], [99.999, 1675295]], "read_iops": 14399, "rwmixread": 70, "tool": "fio", "total_client_vms": 20, "write_bw": 904395, "write_hist": [[50, 64799], [75, 81471], [90, 99903], [99, 1156095], [99.9, 1975295], [99.99, 2057215], [99.999, 2073599]], "write_iops": 6318}]], "storage_target": "volume", "test_mode": "storage", "time": "2016-04-01 16:01:50", "version": "0.6.3"};
content = $scope.from_outside["kb_result"];
$scope.titleList = [];
get_title($scope,content);
draw_chart($scope, ngTableParams, content);
$scope.handleEvent = function(event, index, formix) {
$scope.current_index = index;
$scope.current_mode_name = $scope.titleList[index]["mode"];
$scope.current_mode_description = $scope.titleList[index]["description"];
getCurrentMode($scope, $scope.current_mode_name, formix, content[0][index]["rwmixread"]);
draw_chart($scope, ngTableParams, content);
};
});
function get_title($scope, content){
for( var item in content[0])
{
$scope.titleList.push({"mode": content[0][item]["mode"], "description": content[0][item]["description"]});
}
$scope.current_mode_name = $scope.titleList[0]["mode"];
$scope.current_mode_description = $scope.titleList[0]["description"];
$scope.current_mode = $scope.modes[$scope.current_mode_name];
getCurrentMode($scope, $scope.current_mode_name, "",content[0][0]["rwmixread"]);
}
function getCurrentMode($scope, modeName, formix, readpct){
if (modeName == "rw"){
if(formix == "") formix="read";
$scope.current_mode = $scope.modes[formix];
if (formix=="read") $scope.current_title = "- " +readpct +"% Read";
else $scope.current_title = "- " +(100-readpct) +"% Write";
}
else if (modeName == "randrw"){
if(formix == "") formix="read";
$scope.current_mode = $scope.modes["rand"+formix];
if (formix=="read") $scope.current_title = "- " +readpct +"% Read";
else $scope.current_title = "- " +(100-readpct) +"% Write";
}
else{
$scope.current_mode = $scope.modes[$scope.current_mode_name];
$scope.current_title = "";
}
}
function get_min_hist(results) {
var min = Number.POSITIVE_INFINITY;
results.forEach(function (rr) {
rr.forEach(function (d) {
if ("write_hist" in d) {
min = Math.min(min, d.write_hist[0][1]);
}
if ("read_hist" in d) {
min = Math.min(min, d.read_hist[0][1]);
}
});
});
return min;
}
function draw_chart($scope, ngTableParams, results) {
$scope.results = results;
var countRep = $scope.results.length;
var countRep2 = $scope.results[0].length;
var mode = $scope.current_mode["name"];
$scope.tabledata = [];
$scope.cols = [
{
field: "seq", title: "SEQ", sortable: "seq", show: true
},
{
field: "mode", title: "Mode", sortable: "mode", show: true
},
{
field: "total_client_vms", title: "Client VMs", sortable: "total_client_vms", show: true
},
{
field: "block_size", title: "Block Size", sortable: "block_size", show: true
},
{
field: "iodepth", title: "IO Depth", sortable: "iodepth", show: true
},
{
field: "rate_iops", title: "Requested IOPS", sortable: "rate_iops", show: true
},
{
field: "read_iops", title: "Read IOPS", sortable: "read_iops", show: true
},
{
field: "write_iops", title: "Write IOPS", sortable: "write_iops", show: true
},
{
field: "rate", title: "Requested BW", sortable: "rate", show: true
},
{
field: "read_bw", title: "Read BW", sortable: "read_bw", show: true
},
{
field: "write_bw", title: "Write BW", sortable: "write_bw", show: true
}];
$scope.tableParams = new ngTableParams({sorting: {name: "asc"}, "count": 10}, {
counts: [],
data: $scope.tabledata
});
$scope.pushTableData = function (taName, taData, pickColor) {
$scope.tabledata.push({
"seq": taName,
"mode": taData.mode,
"total_client_vms": taData.total_client_vms,
"block_size": taData.block_size,
"iodepth": taData.iodepth,
"rate_iops": taData.rate_iops,
"read_bw": taData.read_bw,
"write_bw": taData.write_bw,
"read_iops": taData.read_iops,
"write_iops": taData.write_iops,
"rate": taData.rate,
"color": pickColor
});
$scope.tableParams.reload()
};
var max;
$scope.xaxisList = [];
$scope.data = [];
for (var i = 0; i < countRep; i++) {
for (var k = 0; k < countRep2; k++) {
$scope.perrow = $scope.results[i][k];
if ($scope.perrow["mode"] == $scope.current_mode_name && $scope.perrow["description"] == $scope.current_mode_description) {
if($scope.perrow.total_client_vms == 1 && countRep!=1) $scope.xaxis = 0;
else $scope.xaxis = $scope.perrow.total_client_vms;
$scope.xaxisList.push($scope.xaxis);
if (mode == "randread") {
$scope.data.push({
x: $scope.xaxis,
"IOPS": $scope.perrow.read_iops / $scope.perrow.total_client_vms,
"latency1": $scope.perrow.read_hist[2][1] / 1000,
"latency2": $scope.perrow.read_hist[3][1] / 1000,
"latency3": $scope.perrow.read_hist[4][1] / 1000,
"requested_rate": $scope.perrow.rate_iops / $scope.perrow.total_client_vms
});
max = $scope.perrow.rate_iops / $scope.perrow.total_client_vms;
}
if (mode == "randwrite") {
$scope.data.push({
x: $scope.xaxis,
"IOPS": $scope.perrow.write_iops / $scope.perrow.total_client_vms,
"latency1": $scope.perrow.write_hist[2][1] / 1000,
"latency2": $scope.perrow.write_hist[3][1] / 1000,
"latency3": $scope.perrow.write_hist[4][1] / 1000,
"requested_rate": $scope.perrow.rate_iops / $scope.perrow.total_client_vms
});
max = $scope.perrow.rate_iops / $scope.perrow.total_client_vms;
}
if (mode == "read") {
$scope.data.push({
x: $scope.xaxis,
"IOPS": $scope.perrow.read_bw / $scope.perrow.total_client_vms,
"latency1": $scope.perrow.read_hist[2][1] / 1000,
"latency2": $scope.perrow.read_hist[3][1] / 1000,
"latency3": $scope.perrow.read_hist[4][1] / 1000,
"requested_rate": $scope.perrow.rate / $scope.perrow.total_client_vms
});
max = $scope.perrow.rate / $scope.perrow.total_client_vms;
}
if (mode == "write") {
$scope.data.push({
x: $scope.xaxis,
"IOPS": $scope.perrow.write_bw / $scope.perrow.total_client_vms,
"latency1": $scope.perrow.write_hist[2][1] / 1000,
"latency2": $scope.perrow.write_hist[3][1] / 1000,
"latency3": $scope.perrow.write_hist[4][1] / 1000,
"requested_rate": $scope.perrow.rate / $scope.perrow.total_client_vms
});
max = $scope.perrow.rate / $scope.perrow.total_client_vms;
}
var pickColor = get_color();
var chName = "mode-" + $scope.perrow.mode + "_VM-" + $scope.perrow.total_client_vms;
$scope.pushTableData(chName, $scope.perrow, pickColor)
}
}
}
$scope.options = {
series: [
{y: "IOPS", color: "#F44336", type: "column", striped: true, label: $scope.current_mode["y_label"]},
{
y: "requested_rate",
color: "#696969",
drawDots: false,
thickness: "1px",
label: "Requested Rate",
lineMode: "dashed"
},
{
y: "latency1",
axis: "y2",
color: "#673AB7",
drawDots: true,
dotSize: 4,
thickness: "3px",
label: "Latency(ms)--90%"
},
{
y: "latency2",
axis: "y2",
color: "#03A9F4",
drawDots: true,
dotSize: 4,
thickness: "3px",
label: "Latency(ms)--99%"
},
{
y: "latency3",
axis: "y2",
color: "#E91E63",
drawDots: true,
dotSize: 4,
thickness: "3px",
label: "Latency(ms)--99.9%"
}
],
axes: {
x: {key: "x", type: "linear", ticks: $scope.xaxisList, ticksFormatter: function(x) {
if($.inArray(x, $scope.xaxisList)!=-1) {
if (x == 0) return "1";
else return x;
}
else return "";
}},
y: {type: "linear", ticksFormat: "d", innerTicks: true, max: max * 1.0005, min: 0},
y2: {
type: "log",
ticksFormat: "d",
innerTicks: false,
grid: true,
min: get_min_hist($scope.results) / 1000
}
},
tooltip: {
mode: "scrubber", formatter: function (x, y, series) {
return series.label + ":" + y;
}
},
tension: 0.8,
lineMode: "cardinal",
columnsHGap: 45
};
}
</script>
</body>
</html>