summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INFO4
-rwxr-xr-xci/daily.sh8
-rwxr-xr-xci/launch_docker_container.sh15
-rwxr-xr-xci/merge.sh2
-rwxr-xr-xci/remove_docker_container.sh2
-rwxr-xr-xci/verify-build.sh84
-rw-r--r--docker-compose/create-compose.py41
-rw-r--r--docker-compose/docker-compose.yaml20
-rw-r--r--docker/local-docker-compose.yaml39
-rw-r--r--docker/storperf-graphite/Dockerfile66
-rw-r--r--docker/storperf-graphite/conf/carbon.conf (renamed from docker/storperf-master/graphite/carbon.conf)23
-rw-r--r--docker/storperf-graphite/conf/local_settings.py13
-rw-r--r--docker/storperf-graphite/conf/storage-aggregation.conf29
-rw-r--r--docker/storperf-graphite/conf/storage-schemas.conf3
-rw-r--r--docker/storperf-graphite/etc/nginx/conf.d/graphite37
-rw-r--r--docker/storperf-graphite/etc/nginx/nginx.conf20
-rw-r--r--docker/storperf-graphite/etc/supervisor.d/carbon.ini11
-rw-r--r--docker/storperf-graphite/etc/supervisor.d/gunicorn.ini13
-rw-r--r--docker/storperf-graphite/etc/supervisor.d/nginx.ini11
-rw-r--r--docker/storperf-graphite/etc/supervisord.conf26
-rw-r--r--docker/storperf-graphite/run.sh72
-rw-r--r--docker/storperf-httpfrontend/Dockerfile102
-rw-r--r--docker/storperf-httpfrontend/nginx.conf2
-rw-r--r--docker/storperf-master/Dockerfile60
-rw-r--r--docker/storperf-master/graphite/initial_data.json20
-rw-r--r--docker/storperf-master/graphite/local_settings.py1
-rw-r--r--docker/storperf-master/graphite/nginx.conf69
-rw-r--r--docker/storperf-master/graphite/storage-schemas.conf7
-rw-r--r--docker/storperf-master/rest_server.py54
-rw-r--r--docker/storperf-master/storperf/carbon/emitter.py75
-rw-r--r--docker/storperf-master/storperf/db/graphite_db.py31
-rw-r--r--docker/storperf-master/storperf/db/test_results_db.py37
-rw-r--r--docker/storperf-master/storperf/fio/fio_invoker.py29
-rw-r--r--docker/storperf-master/storperf/storperf_master.py124
-rw-r--r--docker/storperf-master/storperf/test_executor.py62
-rw-r--r--docker/storperf-master/storperf/utilities/data_handler.py97
-rw-r--r--docker/storperf-master/storperf/workloads/_base_workload.py12
-rw-r--r--docker/storperf-master/supervisord.conf33
-rw-r--r--docker/storperf-master/tests/carbon_tests/emitter_test.py195
-rw-r--r--docker/storperf-master/tests/utilities_tests/data_handler_test.py77
-rw-r--r--docker/storperf-reporting/Dockerfile4
-rw-r--r--docker/storperf-reporting/requirements.txt3
-rw-r--r--docker/storperf-reporting/src/app.py72
-rw-r--r--docker/storperf-reporting/src/static/testdata/local-multi.json831
-rw-r--r--docker/storperf-reporting/src/static/testdata/testresults-db-multi.json16532
-rw-r--r--docker/storperf-reporting/src/templates/index.html7
-rw-r--r--docker/storperf-reporting/src/templates/plot_jobs.html267
-rw-r--r--docker/storperf-reporting/src/templates/plot_multi_data.html279
-rw-r--r--docker/storperf-reporting/src/templates/plot_tables.html287
-rw-r--r--docker/storperf-swaggerui/Dockerfile119
-rw-r--r--docker/storperf-swaggerui/run.sh53
-rwxr-xr-xdocs/testing/user/installation.rst19
-rw-r--r--docs/testing/user/test-usage.rst23
53 files changed, 19550 insertions, 572 deletions
diff --git a/INFO b/INFO
index e0db63b..d87adb2 100644
--- a/INFO
+++ b/INFO
@@ -10,7 +10,6 @@ Mailing list tag [storperf]
Repository: storperf
Committers:
-ferenc.f.farkas@ericsson.com
mark.beierl@emc.com
jose.lausuch@ericsson.com
taseer94@gmail.com
@@ -21,3 +20,6 @@ Link to TSC approval of the project:
Link to approval of additional committers:
http://lists.opnfv.org/pipermail/opnfv-tech-discuss/2015-December/007109.html
https://lists.opnfv.org/pipermail/opnfv-tsc/2017-April/003419.html
+
+Link to approval of inactive committers:
+ https://lists.opnfv.org/pipermail/opnfv-tsc/2017-August/003680.html
diff --git a/ci/daily.sh b/ci/daily.sh
index b984824..8af8562 100755
--- a/ci/daily.sh
+++ b/ci/daily.sh
@@ -1,4 +1,4 @@
-#!/bin/bash -x
+#!/bin/bash -xe
##############################################################################
# Copyright (c) 2015 EMC and others.
#
@@ -14,6 +14,12 @@ then
WORKSPACE=`pwd`
fi
+docker-compose --version
+if [ $? -ne 0 ]
+then
+ echo "Docker compose is missing"
+ exit 1
+fi
git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng $WORKSPACE/ci/job/releng
diff --git a/ci/launch_docker_container.sh b/ci/launch_docker_container.sh
index aac5b58..949bf9d 100755
--- a/ci/launch_docker_container.sh
+++ b/ci/launch_docker_container.sh
@@ -22,12 +22,27 @@ then
sudo chown 33:33 ${ci}/job/carbon
fi
+if [ -z $ARCH ]
+then
+ ARCH=x86_64
+fi
+
+export ARCH
+
docker-compose -f local-docker-compose.yaml build
docker-compose -f local-docker-compose.yaml up -d
echo "Waiting for StorPerf to become active"
+ATTEMPTS=20
+
while [ $(curl -s -o /dev/null -I -w "%{http_code}" -X GET http://127.0.0.1:5000/api/v1.0/configurations) != "200" ]
do
+ ATTEMPTS=$((ATTEMPTS - 1))
+ if [ ${ATTEMPTS} -le 1 ]
+ then
+ echo "Failed to get a start up of StorPerf Master"
+ exit 1
+ fi
sleep 1
done
diff --git a/ci/merge.sh b/ci/merge.sh
index 80ffdb6..bda24b6 100755
--- a/ci/merge.sh
+++ b/ci/merge.sh
@@ -9,4 +9,4 @@
##############################################################################
# Just run the verify again for now
-`dirname $0`/verify.sh \ No newline at end of file
+`dirname $0`/verify.sh
diff --git a/ci/remove_docker_container.sh b/ci/remove_docker_container.sh
index 1764034..297b14f 100755
--- a/ci/remove_docker_container.sh
+++ b/ci/remove_docker_container.sh
@@ -19,7 +19,7 @@ export CARBON_DIR=${ci}/job/carbon/
docker-compose -f local-docker-compose.yaml down
-for container_name in storperf storperf-master storperf-swaggerui storperf-httpfrontend storperf-reporting
+for container_name in storperf storperf-master storperf-swaggerui storperf-httpfrontend storperf-reporting storperf-graphite
do
container=`docker ps -a -q -f name=$container_name`
if [ ! -z $container ]
diff --git a/ci/verify-build.sh b/ci/verify-build.sh
new file mode 100755
index 0000000..9911566
--- /dev/null
+++ b/ci/verify-build.sh
@@ -0,0 +1,84 @@
+#!/bin/bash -xe
+##############################################################################
+# Copyright (c) 2017 Dell EMC and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+cd `dirname $0`
+ci=`pwd`
+
+cd ${ci}/../docker
+
+export ENV_FILE=${ci}/job/admin.rc
+export CARBON_DIR=${ci}/job/carbon/
+
+${ci}/remove_docker_container.sh
+
+mkdir -p ${CARBON_DIR}
+touch ${ENV_FILE}
+
+if [ -z $ARCH ]
+then
+ ARCH=$(uname -m)
+fi
+
+export ARCH=${ARCH}
+
+echo Using $ARCH architecture
+
+docker-compose -f local-docker-compose.yaml down
+docker-compose -f local-docker-compose.yaml build
+docker-compose -f local-docker-compose.yaml up -d
+
+function check_for_life() {
+ NAME=$1
+ URI=$2
+
+ echo "Waiting for ${NAME} to become active"
+ ATTEMPTS=10
+
+ while [ $(curl -s -o /dev/null -I -w "%{http_code}" -X GET http://127.0.0.1:5000${URI}) != "200" ]
+ do
+ ATTEMPTS=$((ATTEMPTS - 1))
+ if [ ${ATTEMPTS} -le 1 ]
+ then
+ echo "Failed to get a start up of ${NAME}"
+ return 1
+ fi
+ sleep 2
+ done
+}
+
+FAILURES=0
+
+check_for_life storperf-httpfrontend "/"
+FAILURES=$((FAILURES + $?))
+
+check_for_life storperf-master "/api/v1.0/configurations"
+FAILURES=$((FAILURES + $?))
+
+check_for_life storperf-reporting "/reporting/"
+FAILURES=$((FAILURES + $?))
+
+check_for_life storperf-swagger "/swagger/?url=http://127.0.0.1:5000/api/spec.json"
+FAILURES=$((FAILURES + $?))
+
+check_for_life storperf-graphite "/graphite/"
+FAILURES=$((FAILURES + $?))
+
+
+for container in master graphite httpfrontend swaggerui reporting
+do
+ echo "====================================="
+ echo "Log for storperf-${container}"
+ docker logs storperf-${container}
+done
+echo "====================================="
+
+docker-compose -f local-docker-compose.yaml down
+
+exit ${FAILURES}
diff --git a/docker-compose/create-compose.py b/docker-compose/create-compose.py
index 7f971f1..2f3be4f 100644
--- a/docker-compose/create-compose.py
+++ b/docker-compose/create-compose.py
@@ -1,8 +1,18 @@
+##############################################################################
+# Copyright (c) 2017 Dell EMC and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
from builtins import input
import readline
readline.parse_and_bind("tab: complete")
-content = '''# Copyright (c) 2017 Dell EMC and others.
+content = '''##############################################################################
+# Copyright (c) 2017 Dell EMC and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
@@ -15,21 +25,22 @@ services:
storperf-master:
container_name: "storperf-master"
image: "opnfv/storperf-master:{storperf_tag}"
- ports:
- - "8000:8000"
- env_file: {ENV_FILE}
- volumes:
- - {CARBON_DIR}:/opt/graphite/storage/whisper
+ links:
+ - storperf-graphite
storperf-reporting:
container_name: "storperf-reporting"
image: "opnfv/storperf-reporting:{reporting_tag}"
- ports:
- - "5080:5000"
storperf-swaggerui:
container_name: "storperf-swaggerui"
- image: "schickling/swagger-ui"
+ image: "opnfv/storperf-swaggerui:{swaggerui_tag}"
+
+ storperf-graphite:
+ container_name: "storperf-graphite"
+ image: "opnfv/storperf-graphite:{graphite_tag}"
+ volumes:
+ - {CARBON_DIR}:/opt/graphite/storage/whisper
storperf-httpfrontend:
container_name: "storperf-httpfrontend"
@@ -40,7 +51,7 @@ services:
- storperf-master
- storperf-reporting
- storperf-swaggerui
-
+ - storperf-graphite
'''
storeperf_tag = input("Enter image TAG for storperf-master: ") or 'latest'
assert isinstance(storeperf_tag, str)
@@ -51,6 +62,12 @@ assert isinstance(reporting_tag, str)
frontend_tag = input("Enter image TAG for frontend: ") or 'latest'
assert isinstance(frontend_tag, str)
+graphite_tag = input("Enter image TAG for graphite: ") or 'latest'
+assert isinstance(graphite_tag, str)
+
+swaggerui_tag = input("Enter image TAG for swaggerui: ") or 'latest'
+assert isinstance(swaggerui_tag, str)
+
env_file = input("Enter path to environment file: ")
assert isinstance(env_file, str)
if env_file == '':
@@ -65,6 +82,8 @@ if carbon_dir == '':
f = open('docker-compose.yaml', 'w')
f.write(content.format(storperf_tag=storeperf_tag, reporting_tag=reporting_tag,
- frontend_tag=frontend_tag, CARBON_DIR=carbon_dir, ENV_FILE=env_file))
+ frontend_tag=frontend_tag, swaggerui_tag=swaggerui_tag,
+ graphite_tag=graphite_tag,
+ CARBON_DIR=carbon_dir, ENV_FILE=env_file))
f.close()
diff --git a/docker-compose/docker-compose.yaml b/docker-compose/docker-compose.yaml
index bb09eef..49ab9e2 100644
--- a/docker-compose/docker-compose.yaml
+++ b/docker-compose/docker-compose.yaml
@@ -12,21 +12,22 @@ services:
storperf-master:
container_name: "storperf-master"
image: "opnfv/storperf-master:${TAG}"
- ports:
- - "8000:8000"
- env_file: ${ENV_FILE}
- volumes:
- - ${CARBON_DIR}:/opt/graphite/storage/whisper
+ links:
+ - storperf-graphite
storperf-reporting:
container_name: "storperf-reporting"
image: "opnfv/storperf-reporting:${TAG}"
- ports:
- - "5080:5000"
storperf-swaggerui:
container_name: "storperf-swaggerui"
- image: "schickling/swagger-ui"
+ image: "opnfv/storperf-swaggerui:${TAG}"
+
+ storperf-graphite:
+ container_name: "storperf-graphite"
+ image: "opnfv/storperf-graphite:${TAG}"
+ volumes:
+ - ${CARBON_DIR}:/opt/graphite/storage/whisper
storperf-httpfrontend:
container_name: "storperf-httpfrontend"
@@ -36,4 +37,5 @@ services:
links:
- storperf-master
- storperf-reporting
- - storperf-swaggerui \ No newline at end of file
+ - storperf-swaggerui
+ - storperf-graphite
diff --git a/docker/local-docker-compose.yaml b/docker/local-docker-compose.yaml
index 5520b5f..fa956ea 100644
--- a/docker/local-docker-compose.yaml
+++ b/docker/local-docker-compose.yaml
@@ -12,32 +12,51 @@ services:
storperf-master:
container_name: "storperf-master"
- build: storperf-master
- ports:
- - "8000:8000"
+ build:
+ context: storperf-master
+ args:
+ ARCH: ${ARCH}
env_file: ${ENV_FILE}
volumes:
- - ${CARBON_DIR}:/opt/graphite/storage/whisper
- ./storperf-master/:/storperf
+ links:
+ - storperf-graphite
storperf-reporting:
container_name: "storperf-reporting"
- build: storperf-reporting
- ports:
- - "5080:5000"
+ build:
+ context: storperf-reporting
+ args:
+ ARCH: ${ARCH}
volumes:
- ./storperf-reporting/:/home/opnfv/storperf-reporting
storperf-swaggerui:
container_name: "storperf-swaggerui"
- image: "schickling/swagger-ui"
+ build:
+ context: storperf-swaggerui
+ args:
+ ARCH: ${ARCH}
+
+ storperf-graphite:
+ container_name: "storperf-graphite"
+ build:
+ context: storperf-graphite
+ args:
+ ARCH: ${ARCH}
+ volumes:
+ - ${CARBON_DIR}:/opt/graphite/storage/whisper
storperf-httpfrontend:
container_name: "storperf-httpfrontend"
- build: storperf-httpfrontend
+ build:
+ context: storperf-httpfrontend
+ args:
+ ARCH: ${ARCH}
ports:
- "5000:5000"
links:
- storperf-master
- storperf-reporting
- - storperf-swaggerui \ No newline at end of file
+ - storperf-swaggerui
+ - storperf-graphite
diff --git a/docker/storperf-graphite/Dockerfile b/docker/storperf-graphite/Dockerfile
new file mode 100644
index 0000000..b566458
--- /dev/null
+++ b/docker/storperf-graphite/Dockerfile
@@ -0,0 +1,66 @@
+##############################################################################
+# Copyright (c) 2017 Dell EMC and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+# Docker container for StorPerf HTTP Graphite
+#
+# Build:
+# $ docker build -t opnfv/storperf-graphite:tag .
+##
+
+# From https://github.com/SchweizerischeBundesbahnen/docker-graphite
+
+ARG ARCH=x86_64
+ARG ALPINE_VERSION=v3.5
+FROM multiarch/alpine:$ARCH-$ALPINE_VERSION
+
+# Install basic stuff =)
+RUN apk add --no-cache \
+ bash \
+ ca-certificates \
+ nginx \
+ openssl \
+ py2-pip \
+ supervisor \
+ tini \
+ && pip install \
+ supervisor-stdout \
+ gunicorn
+
+# Install graphite
+ENV GRAPHITE_ROOT /opt/graphite
+
+RUN apk add --no-cache \
+ alpine-sdk \
+ fontconfig \
+ libffi \
+ libffi-dev \
+ python-dev \
+ py-cairo \
+ && export PYTHONPATH="/opt/graphite/lib/:/opt/graphite/webapp/" \
+ && pip install https://github.com/graphite-project/whisper/tarball/master \
+ && pip install https://github.com/graphite-project/carbon/tarball/master \
+ && pip install https://github.com/graphite-project/graphite-web/tarball/master \
+ && apk del \
+ alpine-sdk \
+ python-dev \
+ libffi-dev
+
+EXPOSE 8080
+EXPOSE 2003
+EXPOSE 2004
+EXPOSE 7002
+
+VOLUME ["/opt/graphite/conf", "/opt/graphite/storage"]
+
+COPY run.sh /run.sh
+COPY etc/ /etc/
+COPY conf/ /opt/graphite/conf.example/
+
+# Enable tiny init
+ENTRYPOINT ["/sbin/tini", "--"]
+CMD ["/bin/bash", "/run.sh"]
diff --git a/docker/storperf-master/graphite/carbon.conf b/docker/storperf-graphite/conf/carbon.conf
index 13088dd..6463c79 100644
--- a/docker/storperf-master/graphite/carbon.conf
+++ b/docker/storperf-graphite/conf/carbon.conf
@@ -1,10 +1,10 @@
[cache]
-LOCAL_DATA_DIR = /var/lib/graphite/storage/whisper/
+LOCAL_DATA_DIR = /opt/graphite/storage/whisper/
# Specify the user to drop privileges to
# If this is blank carbon runs as the user that invokes it
# This user must have write access to the local data directory
-USER =
+USER =
# Limit the size of the cache to avoid swapping or becoming CPU bound.
# Sorts and serving cache queries gets more expensive as the cache grows.
@@ -30,17 +30,18 @@ MAX_CREATES_PER_MINUTE = inf
LINE_RECEIVER_INTERFACE = 0.0.0.0
LINE_RECEIVER_PORT = 2003
-ENABLE_UDP_LISTENER = True
-UDP_RECEIVER_INTERFACE = 0.0.0.0
-UDP_RECEIVER_PORT = 2003
-
PICKLE_RECEIVER_INTERFACE = 0.0.0.0
PICKLE_RECEIVER_PORT = 2004
CACHE_QUERY_INTERFACE = 0.0.0.0
CACHE_QUERY_PORT = 7002
+# By default, carbon-cache will log every whisper update and cache hit. This can be excessive and
+# degrade performance if logging on the same volume as the whisper data is stored.
LOG_UPDATES = False
+LOG_CACHE_HITS = False
+ENABLE_LOGROTATION = True
+LOG_LISTENER_CONNECTIONS = False
# Enable AMQP if you want to receve metrics using an amqp broker
# ENABLE_AMQP = False
@@ -68,13 +69,3 @@ LOG_UPDATES = False
# NOTE: you cannot run both a cache and a relay on the same server
# with the default configuration, you have to specify a distinict
# interfaces and ports for the listeners.
-
-[relay]
-LINE_RECEIVER_INTERFACE = 0.0.0.0
-LINE_RECEIVER_PORT = 2003
-
-PICKLE_RECEIVER_INTERFACE = 0.0.0.0
-PICKLE_RECEIVER_PORT = 2004
-
-CACHE_SERVERS = server1, server2, server3
-MAX_QUEUE_SIZE = 10000
diff --git a/docker/storperf-graphite/conf/local_settings.py b/docker/storperf-graphite/conf/local_settings.py
new file mode 100644
index 0000000..88414aa
--- /dev/null
+++ b/docker/storperf-graphite/conf/local_settings.py
@@ -0,0 +1,13 @@
+# flake8: noqa
+# Edit this file to override the default graphite settings, do not edit settings.py
+
+# Turn on debugging and restart apache if you ever see an "Internal Server Error" page
+# DEBUG = True
+
+# Set your local timezone (django will try to figure this out automatically)
+TIME_ZONE = 'Europe/Zurich'
+
+# Secret key for django
+SECRET_KEY = '%%SECRET_KEY%%'
+
+URL_PREFIX = "/graphite/"
diff --git a/docker/storperf-graphite/conf/storage-aggregation.conf b/docker/storperf-graphite/conf/storage-aggregation.conf
new file mode 100644
index 0000000..bc5e1db
--- /dev/null
+++ b/docker/storperf-graphite/conf/storage-aggregation.conf
@@ -0,0 +1,29 @@
+[min]
+pattern = \.lower$
+xFilesFactor = 0.1
+aggregationMethod = min
+
+[max]
+pattern = \.upper(_\d+)?$
+xFilesFactor = 0.1
+aggregationMethod = max
+
+[sum]
+pattern = \.sum$
+xFilesFactor = 0
+aggregationMethod = sum
+
+[count]
+pattern = \.count$
+xFilesFactor = 0
+aggregationMethod = sum
+
+[count_legacy]
+pattern = ^stats_counts.*
+xFilesFactor = 0
+aggregationMethod = sum
+
+[default_average]
+pattern = .*
+xFilesFactor = 0.3
+aggregationMethod = average
diff --git a/docker/storperf-graphite/conf/storage-schemas.conf b/docker/storperf-graphite/conf/storage-schemas.conf
new file mode 100644
index 0000000..11a59be
--- /dev/null
+++ b/docker/storperf-graphite/conf/storage-schemas.conf
@@ -0,0 +1,3 @@
+[default]
+pattern = .*
+retentions = 60s:14d
diff --git a/docker/storperf-graphite/etc/nginx/conf.d/graphite b/docker/storperf-graphite/etc/nginx/conf.d/graphite
new file mode 100644
index 0000000..e4c405d
--- /dev/null
+++ b/docker/storperf-graphite/etc/nginx/conf.d/graphite
@@ -0,0 +1,37 @@
+server {
+ listen 8080;
+ server_name graphite;
+ charset utf-8;
+ # Django admin media.
+ location /graphite/static/admin/ {
+ alias /usr/lib/python2.7/site-packages/django/contrib/admin/static/admin/;
+ }
+
+ # Your project's static media.
+ location /graphite/static/ {
+ alias /opt/graphite/webapp/content/;
+ }
+
+ # Finally, send all non-media requests to the Django server.
+ location / {
+ proxy_pass http://127.0.0.1:8000;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_set_header X-Forwarded-Server $host;
+ proxy_set_header X-Forwarded-Host $host;
+ proxy_set_header Host $host;
+
+ client_max_body_size 10m;
+ client_body_buffer_size 128k;
+
+ proxy_connect_timeout 90;
+ proxy_send_timeout 90;
+ proxy_read_timeout 90;
+
+ proxy_buffer_size 4k;
+ proxy_buffers 4 32k;
+ proxy_busy_buffers_size 64k;
+ proxy_temp_file_write_size 64k;
+ }
+}
diff --git a/docker/storperf-graphite/etc/nginx/nginx.conf b/docker/storperf-graphite/etc/nginx/nginx.conf
new file mode 100644
index 0000000..f2ab7f7
--- /dev/null
+++ b/docker/storperf-graphite/etc/nginx/nginx.conf
@@ -0,0 +1,20 @@
+worker_processes 1;
+pid /var/run/nginx.pid;
+daemon off;
+
+events {
+ worker_connections 1024;
+ use epoll;
+}
+
+http {
+ include mime.types;
+ default_type application/octet-stream;
+
+ sendfile on;
+ keepalive_timeout 65;
+
+ gzip on;
+
+ include /etc/nginx/conf.d/*;
+}
diff --git a/docker/storperf-graphite/etc/supervisor.d/carbon.ini b/docker/storperf-graphite/etc/supervisor.d/carbon.ini
new file mode 100644
index 0000000..fb93a95
--- /dev/null
+++ b/docker/storperf-graphite/etc/supervisor.d/carbon.ini
@@ -0,0 +1,11 @@
+[program:carbon-cache]
+autostart = true
+autorestart = true
+stdout_events_enabled = true
+stderr_events_enabled = true
+stdout_logfile_maxbytes = 1MB
+stdout_logfile_backups = 0
+stderr_logfile_maxbytes = 1MB
+stderr_logfile_backups = 0
+
+command = /opt/graphite/bin/carbon-cache.py --pidfile /var/run/carbon-cache-a.pid --debug start
diff --git a/docker/storperf-graphite/etc/supervisor.d/gunicorn.ini b/docker/storperf-graphite/etc/supervisor.d/gunicorn.ini
new file mode 100644
index 0000000..7a94ac8
--- /dev/null
+++ b/docker/storperf-graphite/etc/supervisor.d/gunicorn.ini
@@ -0,0 +1,13 @@
+[program:graphite-webapp]
+autostart = true
+autorestart = true
+stdout_events_enabled = true
+stderr_events_enabled = true
+stdout_logfile_maxbytes = 1MB
+stdout_logfile_backups = 0
+stderr_logfile_maxbytes = 1MB
+stderr_logfile_backups = 0
+
+directory = /opt/graphite/webapp
+environment = PYTHONPATH='/opt/graphite/webapp'
+command = /usr/bin/gunicorn -b127.0.0.1:8000 -w2 graphite.wsgi
diff --git a/docker/storperf-graphite/etc/supervisor.d/nginx.ini b/docker/storperf-graphite/etc/supervisor.d/nginx.ini
new file mode 100644
index 0000000..be2615c
--- /dev/null
+++ b/docker/storperf-graphite/etc/supervisor.d/nginx.ini
@@ -0,0 +1,11 @@
+[program:nginx]
+autostart = true
+autorestart = true
+stdout_events_enabled = true
+stderr_events_enabled = true
+stdout_logfile_maxbytes = 1MB
+stdout_logfile_backups = 0
+stderr_logfile_maxbytes = 1MB
+stderr_logfile_backups = 0
+
+command = /usr/sbin/nginx -c /etc/nginx/nginx.conf
diff --git a/docker/storperf-graphite/etc/supervisord.conf b/docker/storperf-graphite/etc/supervisord.conf
new file mode 100644
index 0000000..01799ab
--- /dev/null
+++ b/docker/storperf-graphite/etc/supervisord.conf
@@ -0,0 +1,26 @@
+[unix_http_server]
+file=/run/supervisord.sock
+
+[supervisord]
+user = root
+nodaemon = true
+logfile_maxbytes = 10MB
+logfile_backups = 0
+pidfile = /tmp/supervisord.pid
+logfile = /tmp/supervisord.log
+environment = GRAPHITE_STORAGE_DIR='/opt/graphite/storage',GRAPHITE_CONF_DIR='/opt/graphite/conf'
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///run/supervisord.sock
+
+[eventlistener:stdout]
+command = supervisor_stdout
+buffer_size = 100
+events = PROCESS_LOG
+result_handler = supervisor_stdout:event_handler
+
+[include]
+files = /etc/supervisor.d/*.ini
diff --git a/docker/storperf-graphite/run.sh b/docker/storperf-graphite/run.sh
new file mode 100644
index 0000000..c9baa93
--- /dev/null
+++ b/docker/storperf-graphite/run.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+whisper_dir="/opt/graphite/storage/whisper/"
+webapp_dir="/opt/graphite/storage/log/webapp/"
+
+cd /opt/graphite
+
+if [ -d $whisper_dir ]; then
+ echo "Whisper directory already exists"
+else
+ echo "...creating missing whisper dir"
+ mkdir -p $whisper_dir
+fi
+
+if [ -d $webapp_dir ]; then
+ echo "Webapp directory already exists"
+else
+ echo "...creating missing webapp dir"
+ mkdir -p $webapp_dir
+fi
+
+if [ ! -f /opt/graphite/conf/local_settings.py ]; then
+ echo "Creating default config for graphite-web..."
+ cp /opt/graphite/conf.example/local_settings.py /opt/graphite/conf/local_settings.py
+ RANDOM_STRING=$(python -c 'import random; import string; print "".join([random.SystemRandom().choice(string.digits + string.letters) for i in range(100)])')
+ sed "s/%%SECRET_KEY%%/${RANDOM_STRING}/" -i /opt/graphite/conf/local_settings.py
+fi
+
+if [ ! -L /opt/graphite/webapp/graphite/local_settings.py ]; then
+ echo "Creating symbolic link for local_settings.py in graphite-web..."
+ ln -s /opt/graphite/conf/local_settings.py /opt/graphite/webapp/graphite/local_settings.py
+fi
+
+sed "s/%%CLUSTER_SERVERS%%/${CLUSTER_SERVERS}/" -i /opt/graphite/conf/local_settings.py
+
+if [ ! -f /opt/graphite/conf/carbon.conf ]; then
+ echo "Creating default config for carbon..."
+ cp /opt/graphite/conf.example/carbon.conf /opt/graphite/conf/carbon.conf
+fi
+
+if [ ! -f /opt/graphite/conf/storage-schemas.conf ]; then
+ echo "Creating default storage schema for carbon..."
+ cp /opt/graphite/conf.example/storage-schemas.conf /opt/graphite/conf/storage-schemas.conf
+fi
+
+if [ ! -f /opt/graphite/conf/storage-aggregation.conf ]; then
+ echo "Creating default storage schema for carbon..."
+ cp /opt/graphite/conf.example/storage-aggregation.conf /opt/graphite/conf/storage-aggregation.conf
+fi
+
+if [ ! -f /opt/graphite/storage/graphite.db ]; then
+ echo "Creating database..."
+ PYTHONPATH=$GRAPHITE_ROOT/webapp django-admin.py migrate --settings=graphite.settings --run-syncdb --noinput
+ chown nginx:nginx /opt/graphite/storage/graphite.db
+ # Auto-magical create an django user with default login
+ script="from django.contrib.auth.models import User;
+
+username = 'admin';
+password = 'admin';
+email = 'admin@example.com';
+
+if User.objects.filter(username=username).count()==0:
+ User.objects.create_superuser(username, email, password);
+ print('Superuser created.');
+else:
+ print('Superuser creation skipped.');
+
+"
+ printf "$script" | PYTHONPATH=$GRAPHITE_ROOT/webapp django-admin.py shell --settings=graphite.settings
+fi
+
+exec supervisord -c /etc/supervisord.conf
diff --git a/docker/storperf-httpfrontend/Dockerfile b/docker/storperf-httpfrontend/Dockerfile
index 19d620e..9b5b5f9 100644
--- a/docker/storperf-httpfrontend/Dockerfile
+++ b/docker/storperf-httpfrontend/Dockerfile
@@ -12,10 +12,105 @@
# $ docker build -t opnfv/storperf-frontend:tag .
##
+ARG ARCH=x86_64
+ARG ALPINE_VERSION=v3.6
+FROM multiarch/alpine:$ARCH-$ALPINE_VERSION
-FROM nginx:stable-alpine
-MAINTAINER Mark Beierl <mark.beierl@dell.com>
-LABEL version="3.1" description="OPNFV Storperf HTTP Front End Container"
+# This comes from https://github.com/nginxinc/docker-nginx/blob/14c1b938737cf4399a6bb039bc506957dce562ae/stable/alpine/Dockerfile
+# Is is cloned here so that we can use multiarch alpine
+
+MAINTAINER NGINX Docker Maintainers "docker-maint@nginx.com"
+
+ENV NGINX_VERSION 1.8.1
+
+ENV GPG_KEYS B0F4253373F8F6F510D42178520A9993A1C052F8
+ENV CONFIG "\
+ --prefix=/etc/nginx \
+ --sbin-path=/usr/sbin/nginx \
+ --conf-path=/etc/nginx/nginx.conf \
+ --error-log-path=/var/log/nginx/error.log \
+ --http-log-path=/var/log/nginx/access.log \
+ --pid-path=/var/run/nginx.pid \
+ --lock-path=/var/run/nginx.lock \
+ --http-client-body-temp-path=/var/cache/nginx/client_temp \
+ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
+ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
+ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
+ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
+ --user=nginx \
+ --group=nginx \
+ --with-http_ssl_module \
+ --with-http_realip_module \
+ --with-http_addition_module \
+ --with-http_sub_module \
+ --with-http_dav_module \
+ --with-http_flv_module \
+ --with-http_mp4_module \
+ --with-http_gunzip_module \
+ --with-http_gzip_static_module \
+ --with-http_random_index_module \
+ --with-http_secure_link_module \
+ --with-http_stub_status_module \
+ --with-http_auth_request_module \
+ --with-mail \
+ --with-mail_ssl_module \
+ --with-file-aio \
+ --with-http_spdy_module \
+ --with-ipv6 \
+ "
+
+RUN \
+ addgroup -S nginx \
+ && adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx \
+ && apk add --no-cache --virtual .build-deps \
+ gcc \
+ libc-dev \
+ make \
+ openssl-dev \
+ pcre-dev \
+ zlib-dev \
+ linux-headers \
+ curl \
+ gnupg
+
+RUN gpg --keyserver pgp.mit.edu --recv-keys "$GPG_KEYS" || \
+ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEYS" || \
+ gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$GPG_KEYS"
+
+RUN curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o nginx.tar.gz \
+ && curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz.asc -o nginx.tar.gz.asc \
+ && gpg --verify nginx.tar.gz.asc \
+ && mkdir -p /usr/src \
+ && tar -zxC /usr/src -f nginx.tar.gz \
+ && rm nginx.tar.gz* \
+ && rm -r /root/.gnupg \
+ && cd /usr/src/nginx-$NGINX_VERSION \
+ && ./configure $CONFIG --with-debug \
+ && make \
+ && mv objs/nginx objs/nginx-debug \
+ && ./configure $CONFIG \
+ && make \
+ && make install \
+ && install -m755 objs/nginx-debug /usr/sbin/nginx-debug \
+ && strip /usr/sbin/nginx* \
+ && runDeps="$( \
+ scanelf --needed --nobanner /usr/sbin/nginx \
+ | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
+ | sort -u \
+ | xargs -r apk info --installed \
+ | sort -u \
+ )" \
+ && apk add --virtual .nginx-rundeps $runDeps \
+ && apk del .build-deps \
+ && rm -rf /usr/src/nginx-* \
+ \
+ # forward request and error logs to docker log collector
+ && ln -sf /dev/stdout /var/log/nginx/access.log \
+ && ln -sf /dev/stderr /var/log/nginx/error.log
+
+EXPOSE 80 443
+
+# StorPerf addition below
ARG BRANCH=master
@@ -23,3 +118,4 @@ COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./html /etc/nginx/html
EXPOSE 5000
+CMD ["nginx", "-g", "daemon off;"]
diff --git a/docker/storperf-httpfrontend/nginx.conf b/docker/storperf-httpfrontend/nginx.conf
index ef9fe82..7f3ddd7 100644
--- a/docker/storperf-httpfrontend/nginx.conf
+++ b/docker/storperf-httpfrontend/nginx.conf
@@ -21,7 +21,7 @@ http {
}
location /graphite/ {
- proxy_pass http://storperf-master:8000;
+ proxy_pass http://storperf-graphite:8080;
proxy_set_header Host $host:$proxy_port;
}
diff --git a/docker/storperf-master/Dockerfile b/docker/storperf-master/Dockerfile
index b19c12d..eaaf811 100644
--- a/docker/storperf-master/Dockerfile
+++ b/docker/storperf-master/Dockerfile
@@ -15,7 +15,9 @@
# $ docker build -t opnfv/storperf-master:tag .
#
-FROM alpine:3.5 as storperf-builder
+ARG ARCH=x86_64
+ARG ALPINE_VERSION=v3.6
+FROM multiarch/alpine:$ARCH-$ALPINE_VERSION as storperf-builder
LABEL version="5.0" description="OPNFV Storperf Docker container"
@@ -57,7 +59,7 @@ RUN pip install -r /storperf/requirements.pip
# Build stripped down StorPerf image
-FROM alpine:3.5 as storperf-master
+FROM multiarch/alpine:$ARCH-$ALPINE_VERSION as storperf-master
RUN apk --no-cache add --update \
python \
@@ -74,57 +76,5 @@ RUN chmod 600 storperf/resources/ssh/storperf_rsa
EXPOSE 5000
-# Install Graphite
-# Everything from here down will be removed once Graphite/Carbon gets broken
-# out into its own container.
-
-RUN apk --no-cache add --update \
- python \
- py-pip \
- python-dev \
- alpine-sdk \
- py-tz \
- nginx \
- cairo \
- supervisor
-
-RUN deluser xfs
-
-RUN pip install \
- gunicorn==17.5 \
- Django==1.6.11 \
- django-tagging==0.3.1 \
- cairocffi \
- constants \
- zope.interface
-
-RUN adduser -S -g www-data -u 33 www-data
-
-RUN pip install whisper==0.9.15
-RUN pip install --install-option="--prefix=/var/lib/graphite" --install-option="--install-lib=/var/lib/graphite/lib" carbon==0.9.15
-RUN pip install --install-option="--prefix=/var/lib/graphite" --install-option="--install-lib=/var/lib/graphite/webapp" graphite-web==0.9.15
-
-ADD graphite/nginx.conf /etc/nginx/nginx.conf
-ADD graphite/local_settings.py /var/lib/graphite/webapp/graphite/local_settings.py
-ADD graphite/carbon.conf /var/lib/graphite/conf/carbon.conf
-ADD graphite/storage-schemas.conf /var/lib/graphite/conf/storage-schemas.conf
-RUN mkdir -p /opt/graphite/storage
-RUN ln -s /var/lib/graphite/storage/whisper /opt/graphite/storage/whisper
-RUN touch /var/lib/graphite/storage/graphite.db /var/lib/graphite/storage/index
-RUN chown -R www-data /var/lib/graphite/storage
-RUN chmod 0775 /var/lib/graphite/storage /var/lib/graphite/storage/whisper
-RUN chmod 0664 /var/lib/graphite/storage/graphite.db
-
-RUN cd /var/lib/graphite/webapp/graphite && python manage.py syncdb --noinput
-ADD graphite/initial_data.json /var/lib/graphite/webapp/graphite/initial_data.json
-RUN cd /var/lib/graphite/webapp/graphite && python manage.py syncdb --noinput
-
-RUN mkdir -p /var/log/supervisor
-
-COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
-
-EXPOSE 8000
-
# Entry point
-
-CMD ["/usr/bin/supervisord"]
+CMD [ "python", "./rest_server.py" ]
diff --git a/docker/storperf-master/graphite/initial_data.json b/docker/storperf-master/graphite/initial_data.json
deleted file mode 100644
index b3ac9b1..0000000
--- a/docker/storperf-master/graphite/initial_data.json
+++ /dev/null
@@ -1,20 +0,0 @@
-[
- {
- "pk": 1,
- "model": "auth.user",
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": true,
- "is_staff": true,
- "last_login": "2011-09-20 17:02:14",
- "groups": [],
- "user_permissions": [],
- "password": "sha1$1b11b$edeb0a67a9622f1f2cfeabf9188a711f5ac7d236",
- "email": "root@example.com",
- "date_joined": "2011-09-20 17:02:14"
- }
- }
-]
diff --git a/docker/storperf-master/graphite/local_settings.py b/docker/storperf-master/graphite/local_settings.py
deleted file mode 100644
index 7cff8f7..0000000
--- a/docker/storperf-master/graphite/local_settings.py
+++ /dev/null
@@ -1 +0,0 @@
-TIME_ZONE = 'UTC'
diff --git a/docker/storperf-master/graphite/nginx.conf b/docker/storperf-master/graphite/nginx.conf
deleted file mode 100644
index 8a11e94..0000000
--- a/docker/storperf-master/graphite/nginx.conf
+++ /dev/null
@@ -1,69 +0,0 @@
-daemon off;
-user www-data;
-worker_processes 1;
-pid /var/run/nginx.pid;
-
-events {
- worker_connections 1024;
-}
-
-http {
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
- keepalive_timeout 65;
- types_hash_max_size 2048;
- server_tokens off;
-
- server_names_hash_bucket_size 32;
-
- include /etc/nginx/mime.types;
- default_type application/octet-stream;
-
- access_log /var/log/nginx/access.log;
- error_log /var/log/nginx/error.log;
-
- gzip on;
- gzip_disable "msie6";
-
- server {
- listen 8000 default_server;
- server_name _;
-
- open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m;
-
- location / {
- proxy_pass http://127.0.0.1:8080;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Forwarded-Server $host;
- proxy_set_header X-Forwarded-Host $http_host;
- proxy_set_header Host $http_host;
-
- client_max_body_size 10m;
- client_body_buffer_size 128k;
-
- proxy_connect_timeout 90;
- proxy_send_timeout 90;
- proxy_read_timeout 90;
-
- proxy_buffer_size 4k;
- proxy_buffers 4 32k;
- proxy_busy_buffers_size 64k;
- proxy_temp_file_write_size 64k;
- }
-
- add_header Access-Control-Allow-Origin "*";
- add_header Access-Control-Allow-Methods "GET, OPTIONS";
- add_header Access-Control-Allow-Headers "origin, authorization, accept";
-
- location /content {
- alias /var/lib/graphite/webapp/content;
- }
-
- location /media {
- alias /usr/share/pyshared/django/contrib/admin/media;
- }
- }
-}
diff --git a/docker/storperf-master/graphite/storage-schemas.conf b/docker/storperf-master/graphite/storage-schemas.conf
deleted file mode 100644
index 855a9e4..0000000
--- a/docker/storperf-master/graphite/storage-schemas.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-[carbon]
-pattern = ^carbon\..*
-retentions = 1m:31d,10m:1y,1h:5y
-
-[default]
-pattern = .*
-retentions = 10s:8d,1m:31d,10m:1y,1h:5y
diff --git a/docker/storperf-master/rest_server.py b/docker/storperf-master/rest_server.py
index 19f87ca..0634b8f 100644
--- a/docker/storperf-master/rest_server.py
+++ b/docker/storperf-master/rest_server.py
@@ -13,12 +13,13 @@ import os
import sys
from flask import abort, Flask, request, jsonify
+from flask_cors import CORS
from flask_restful import Resource, Api, fields
from flask_restful_swagger import swagger
-from flask_cors import CORS
from storperf.storperf_master import StorPerfMaster
+
app = Flask(__name__, static_url_path="")
CORS(app)
api = swagger.docs(Api(app), apiVersion='1.0')
@@ -26,6 +27,35 @@ api = swagger.docs(Api(app), apiVersion='1.0')
storperf = StorPerfMaster()
+class Logs(Resource):
+ def __init__(self):
+ self.logger = logging.getLogger(__name__)
+
+ @swagger.operation(
+ notes="Fetch logs",
+ parameters=[
+ {
+ "name": "lines",
+ "description": "The number of lines to fetch",
+ "required": "False",
+ "type": "string",
+ "allowedMultiple": "False",
+ "paramType": "query"
+ }
+ ]
+ )
+ def get(self):
+ lines = request.args.get('lines')
+ if lines:
+ try:
+ lines = int(lines)
+ except Exception:
+ pass
+ else:
+ lines = 35
+ return jsonify({'logs': storperf.get_logs(lines)})
+
+
@swagger.model
class ConfigurationRequestModel:
resource_fields = {
@@ -34,7 +64,9 @@ class ConfigurationRequestModel:
'agent_image': fields.String,
'public_network': fields.String,
'volume_size': fields.Integer,
- 'availability_zone': fields.String
+ 'availability_zone': fields.String,
+ 'username': fields.String,
+ 'password': fields.String
}
@@ -107,6 +139,10 @@ class Configure(Resource):
storperf.volume_size = request.json['volume_size']
if ('availability_zone' in request.json):
storperf.availabilty_zone = request.json['availability_zone']
+ if ('username' in request.json):
+ storperf.username = request.json['username']
+ if ('password' in request.json):
+ storperf.password = request.json['password']
storperf.create_stack()
if storperf.stack_id is None:
@@ -194,13 +230,13 @@ class Job(Resource):
)
def get(self):
- metrics_type = "metrics"
- if request.args.get('type'):
- metrics_type = request.args.get('type')
-
workload_id = request.args.get('id')
if workload_id:
+ metrics_type = "metrics"
+ if request.args.get('type'):
+ metrics_type = request.args.get('type')
+
if metrics_type == "metrics":
return jsonify(storperf.fetch_results(workload_id))
@@ -210,7 +246,10 @@ class Job(Resource):
if metrics_type == "status":
return jsonify(storperf.fetch_job_status(workload_id))
else:
- return jsonify({"job_ids": storperf.fetch_all_jobs()})
+ metrics_type = None
+ if request.args.get('type'):
+ metrics_type = request.args.get('type')
+ return jsonify(storperf.fetch_all_jobs(metrics_type))
@swagger.operation(
parameters=[
@@ -343,6 +382,7 @@ def setup_logging(default_path='logging.json',
api.add_resource(Configure, "/api/v1.0/configurations")
api.add_resource(Quota, "/api/v1.0/quotas")
api.add_resource(Job, "/api/v1.0/jobs")
+api.add_resource(Logs, "/api/v1.0/logs")
if __name__ == "__main__":
setup_logging()
diff --git a/docker/storperf-master/storperf/carbon/emitter.py b/docker/storperf-master/storperf/carbon/emitter.py
index e23dc79..05f6c3c 100644
--- a/docker/storperf-master/storperf/carbon/emitter.py
+++ b/docker/storperf-master/storperf/carbon/emitter.py
@@ -11,28 +11,75 @@ import logging
import socket
import time
+from storperf.db.graphite_db import GraphiteDB
+
class CarbonMetricTransmitter():
- carbon_host = '127.0.0.1'
- carbon_port = 2003
+ carbon_servers = [('127.0.0.1', 2003),
+ ('storperf-graphite', 2003)]
def __init__(self):
self.logger = logging.getLogger(__name__)
+ self.graphite_db = GraphiteDB()
+ self.commit_markers = {}
- def transmit_metrics(self, metrics):
- if 'timestamp' in metrics:
- metrics.pop('timestamp')
+ def transmit_metrics(self, metrics, commit_marker):
timestamp = str(calendar.timegm(time.gmtime()))
+ self.commit_markers[commit_marker] = int(timestamp)
+
+ carbon_socket = None
+
+ for host, port in self.carbon_servers:
+ try:
+ carbon_socket = socket.socket(socket.AF_INET,
+ socket.SOCK_STREAM)
+ carbon_socket.connect((host, port))
+
+ for key, value in metrics.items():
+ try:
+ float(value)
+ message = "%s %s %s\n" \
+ % (key, value, timestamp)
+ self.logger.debug("Metric: " + message.strip())
+ carbon_socket.send(message)
+ except ValueError:
+ self.logger.debug("Ignoring non numeric metric %s %s"
+ % (key, value))
+
+ message = "%s.commit-marker %s %s\n" \
+ % (commit_marker, timestamp, timestamp)
+ carbon_socket.send(message)
+ self.logger.debug("Marker %s" % message.strip())
+ self.logger.info("Sent metrics to %s:%s with timestamp %s"
+ % (host, port, timestamp))
+
+ except Exception, e:
+ self.logger.error("While notifying carbon %s:%s %s"
+ % (host, port, e))
+
+ if carbon_socket is not None:
+ carbon_socket.close()
+
+ def confirm_commit(self, commit_marker):
+ marker_timestamp = self.commit_markers[commit_marker]
+ request = "%s.commit-marker&from=%s" \
+ % (commit_marker, marker_timestamp - 60)
+ marker_data = self.graphite_db.fetch_item(request)
+ self.logger.debug("Marker data %s" % marker_data)
+ fetched_timestamps = self.parse_timestamp(marker_data)
- carbon_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- carbon_socket.connect((self.carbon_host, self.carbon_port))
+ return marker_timestamp in fetched_timestamps
- for key, metric in metrics.items():
- message = key + " " + metric + " " + timestamp
- self.logger.debug("Metric: " + message)
- carbon_socket.send(message + '\n')
+ def parse_timestamp(self, marker_data):
+ timestamps = []
+ if (type(marker_data) is list and
+ len(marker_data) > 0):
+ datapoints = marker_data[0]['datapoints']
+ for datapoint in datapoints:
+ try:
+ timestamps.append(int(datapoint[0]))
+ except Exception:
+ pass
- carbon_socket.close()
- self.logger.info("Sent metrics to carbon with timestamp %s"
- % timestamp)
+ return timestamps
diff --git a/docker/storperf-master/storperf/db/graphite_db.py b/docker/storperf-master/storperf/db/graphite_db.py
index c8a2d35..aa71855 100644
--- a/docker/storperf-master/storperf/db/graphite_db.py
+++ b/docker/storperf-master/storperf/db/graphite_db.py
@@ -9,33 +9,44 @@
import json
import logging
-
import requests
-from storperf.db.job_db import JobDB
-
class GraphiteDB(object):
+ graphite_host = "storperf-graphite"
+ graphite_port = 8080
+
def __init__(self):
- """
- """
- self._job_db = JobDB()
self.logger = logging.getLogger(__name__)
+ def fetch_item(self, target):
+
+ result = None
+ request = ("http://%s:%s/graphite/render/?format=json&target=%s"
+ % (self.graphite_host, self.graphite_port, target))
+ self.logger.debug("Calling %s" % (request))
+
+ response = requests.get(request)
+ if (response.status_code == 200):
+ result = json.loads(response.content)
+
+ return result
+
def fetch_series(self, workload, metric, io_type, time, duration):
series = []
end = time
start = end - duration
- request = ("http://127.0.0.1:8000/render/?target="
+ request = ("http://%s:%s/graphite/render/?target="
"averageSeries(%s.*.jobs.1.%s.%s)"
"&format=json"
"&from=%s"
- "&until=%s" %
- (workload, io_type, metric,
- start, end))
+ "&until=%s"
+ % (self.graphite_host, self.graphite_port,
+ workload, io_type, metric,
+ start, end))
self.logger.debug("Calling %s" % (request))
response = requests.get(request)
diff --git a/docker/storperf-master/storperf/db/test_results_db.py b/docker/storperf-master/storperf/db/test_results_db.py
index a2f7038..9c87e32 100644
--- a/docker/storperf-master/storperf/db/test_results_db.py
+++ b/docker/storperf-master/storperf/db/test_results_db.py
@@ -8,38 +8,19 @@
##############################################################################
import json
-import os
import requests
-def get_installer_type(logger=None):
- """
- Get installer type (fuel, apex, joid, compass)
- """
- try:
- installer = os.environ['INSTALLER_TYPE']
- except KeyError:
- if logger:
- logger.error("Impossible to retrieve the installer type")
- installer = "Unknown_installer"
-
- return installer
-
-
-def push_results_to_db(db_url, project, case_name,
- test_start, test_stop, logger, pod_name,
- version, scenario, criteria, build_tag, details):
+def push_results_to_db(db_url, details, logger):
"""
POST results to the Result target DB
"""
url = db_url + "/results"
- installer = get_installer_type(logger)
- params = {"project_name": project, "case_name": case_name,
- "pod_name": pod_name, "installer": installer,
- "version": version, "scenario": scenario, "criteria": criteria,
- "build_tag": build_tag, "start_date": test_start,
- "stop_date": test_stop, "details": details}
+ params = details.copy()
+ params.pop('details')
+
+ logger.info("popped params= %s" % params)
headers = {'Content-Type': 'application/json'}
try:
@@ -53,9 +34,7 @@ def push_results_to_db(db_url, project, case_name,
logger.debug(r.status_code)
logger.debug(r.content)
return json.loads(r.content)
- except Exception, e:
- logger.error("Error [push_results_to_db('%s', '%s', '%s', " +
- "'%s', '%s', '%s', '%s', '%s', '%s')]:" %
- (db_url, project, case_name, pod_name, version,
- scenario, criteria, build_tag, details), e)
+ except Exception:
+ logger.exception("Error [push_results_to_db('%s', '%s')]:" %
+ (db_url, params))
return None
diff --git a/docker/storperf-master/storperf/fio/fio_invoker.py b/docker/storperf-master/storperf/fio/fio_invoker.py
index 106696d..0360ea2 100644
--- a/docker/storperf-master/storperf/fio/fio_invoker.py
+++ b/docker/storperf-master/storperf/fio/fio_invoker.py
@@ -15,13 +15,14 @@ import paramiko
class FIOInvoker(object):
- def __init__(self):
+ def __init__(self, var_dict={}):
self.logger = logging.getLogger(__name__)
self.event_listeners = set()
self.event_callback_ids = set()
self._remote_host = None
self.callback_id = None
self.terminated = False
+ self.metadata = var_dict
@property
def remote_host(self):
@@ -90,11 +91,7 @@ class FIOInvoker(object):
self.logger.debug("Finished")
def execute(self, args=[]):
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect(self.remote_host, username='storperf',
- key_filename='storperf/resources/ssh/storperf_rsa',
- timeout=2)
+ ssh = self._ssh_client()
command = "sudo ./fio " + ' '.join(args)
self.logger.debug("Remote command: %s" % command)
@@ -133,11 +130,7 @@ class FIOInvoker(object):
self.logger.debug("Terminating fio on " + self.remote_host)
self.terminated = True
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect(self.remote_host, username='storperf',
- key_filename='storperf/resources/ssh/storperf_rsa',
- timeout=2)
+ ssh = self._ssh_client()
command = "sudo killall fio"
@@ -151,3 +144,17 @@ class FIOInvoker(object):
stdout.close()
stderr.close()
+
+ def _ssh_client(self):
+ ssh = paramiko.SSHClient()
+ ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+ if 'username' in self.metadata and 'password' in self.metadata:
+ ssh.connect(self.remote_host,
+ username=self.metadata['username'],
+ password=self.metadata['password'])
+ return ssh
+ else:
+ ssh.connect(self.remote_host, username='storperf',
+ key_filename='storperf/resources/ssh/storperf_rsa',
+ timeout=2)
+ return ssh
diff --git a/docker/storperf-master/storperf/storperf_master.py b/docker/storperf-master/storperf/storperf_master.py
index 8c2a7b4..8a67048 100644
--- a/docker/storperf-master/storperf/storperf_master.py
+++ b/docker/storperf-master/storperf/storperf_master.py
@@ -11,19 +11,20 @@ from datetime import datetime
import logging
import os
import socket
-from storperf.db.configuration_db import ConfigurationDB
-from storperf.db.job_db import JobDB
-from storperf.test_executor import TestExecutor
from threading import Thread
from time import sleep
from cinderclient import client as cinderclient
-import heatclient.client as heatclient
from keystoneauth1 import loading
from keystoneauth1 import session
import paramiko
from scp import SCPClient
+import heatclient.client as heatclient
+from storperf.db.configuration_db import ConfigurationDB
+from storperf.db.job_db import JobDB
+from storperf.test_executor import TestExecutor
+
class ParameterError(Exception):
""" """
@@ -256,6 +257,53 @@ class StorPerfMaster(object):
'workloads',
str(self._test_executor.workload_modules))
+ @property
+ def username(self):
+ return self.configuration_db.get_configuration_value(
+ 'stack',
+ 'username'
+ )
+
+ @username.setter
+ def username(self, value):
+ self.configuration_db.set_configuration_value(
+ 'stack',
+ 'username',
+ value
+ )
+
+ @property
+ def password(self):
+ return self.configuration_db.get_configuration_value(
+ 'stack',
+ 'password'
+ )
+
+ @password.setter
+ def password(self, value):
+ self.configuration_db.set_configuration_value(
+ 'stack',
+ 'password',
+ value
+ )
+
+ def get_logs(self, lines=None):
+ LOG_DIR = './storperf.log'
+
+ if isinstance(lines, int):
+ logs = []
+ index = 0
+ for line in reversed(open(LOG_DIR).readlines()):
+ if index != int(lines):
+ logs.insert(0, line.strip())
+ index += 1
+ else:
+ break
+ else:
+ with open(LOG_DIR) as f:
+ logs = f.read().split('\n')
+ return logs
+
def create_stack(self):
if (self.stack_id is not None):
raise ParameterError("ERROR: Stack has already been created")
@@ -336,6 +384,9 @@ class StorPerfMaster(object):
params['agent_count'] = self.agent_count
params['public_network'] = self.public_network
params['volume_size'] = self.volume_size
+ if self.username and self.password:
+ params['username'] = self.username
+ params['password'] = self.password
job_id = self._test_executor.execute(params)
return job_id
@@ -345,7 +396,7 @@ class StorPerfMaster(object):
def fetch_results(self, job_id):
if self._test_executor.job_db.job_id == job_id:
- return self._test_executor.metadata['metrics']
+ return self._test_executor.metadata['details']['metrics']
workload_params = self.job_db.fetch_workload_params(job_id)
if 'report' in workload_params:
@@ -359,8 +410,25 @@ class StorPerfMaster(object):
def fetch_job_status(self, job_id):
return self._test_executor.execution_status(job_id)
- def fetch_all_jobs(self):
- return self.job_db.fetch_jobs()
+ def fetch_all_jobs(self, metrics_type):
+ job_list = self.job_db.fetch_jobs()
+ job_report = {}
+ if metrics_type is None:
+ job_report['job_ids'] = job_list
+ elif metrics_type == "metadata":
+ job_report['results'] = []
+ for job in job_list:
+ if metrics_type == 'metadata':
+ metadata = self.fetch_metadata(job)
+ if 'report' in metadata:
+ metadata['report']['_id'] = job
+ metadata['report']['start_date'] = \
+ metadata['report']['start_time']
+ metadata['report']['end_date'] = \
+ metadata['report']['end_time']
+ metadata['report']['_id'] = job
+ job_report['results'].append(metadata['report'])
+ return job_report
def _setup_slave(self, slave):
logger = logging.getLogger(__name__ + ":" + slave)
@@ -389,14 +457,50 @@ class StorPerfMaster(object):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect(slave, username='storperf',
- key_filename='storperf/resources/ssh/storperf_rsa',
- timeout=2)
+ if self.username and self.password:
+ ssh.connect(slave,
+ username=self.username,
+ password=self.password)
+ else:
+ ssh.connect(slave, username='storperf',
+ key_filename='storperf/resources/ssh/storperf_rsa',
+ timeout=2)
+
+ available = self._check_root_fs(ssh)
+ logger.debug("Available space on / is %s" % available)
+ if available < 65536:
+ logger.warn("Root filesystem is too small, attemping resize")
+ self._resize_root_fs(ssh, logger)
+
+ available = self._check_root_fs(ssh)
+ logger.debug("Available space on / is now %s" % available)
+ if available < 65536:
+ logger.error("Cannot create enough space on /")
+ raise Exception("Root filesystem has only %s free" %
+ available)
scp = SCPClient(ssh.get_transport())
logger.debug("Transferring fio to %s" % slave)
scp.put('/usr/local/bin/fio', '~/')
+ def _check_root_fs(self, ssh):
+ (_, stdout, _) = ssh.exec_command("df /")
+ stdout.readline()
+ lines = stdout.readline().split()
+ if len(lines) > 4:
+ available = lines[3]
+ return int(available)
+
+ def _resize_root_fs(self, ssh, logger):
+ command = "sudo /usr/sbin/resize2fs /dev/vda1"
+ logger.info("Attempting %s" % command)
+ (_, stdout, stderr) = ssh.exec_command(command)
+ stdout.channel.recv_exit_status()
+ for line in iter(stdout.readline, b''):
+ logger.info(line)
+ for line in iter(stderr.readline, b''):
+ logger.error(line)
+
def _make_parameters(self):
heat_parameters = {}
heat_parameters['public_network'] = self.public_network
diff --git a/docker/storperf-master/storperf/test_executor.py b/docker/storperf-master/storperf/test_executor.py
index b2d5914..0e3fce0 100644
--- a/docker/storperf-master/storperf/test_executor.py
+++ b/docker/storperf-master/storperf/test_executor.py
@@ -15,14 +15,16 @@ from os import listdir
import os
from os.path import isfile, join
import sched
+from threading import Thread
+from time import sleep
+import time
+
from storperf.carbon.converter import Converter
from storperf.carbon.emitter import CarbonMetricTransmitter
from storperf.db.job_db import JobDB
from storperf.fio.fio_invoker import FIOInvoker
from storperf.utilities.data_handler import DataHandler
from storperf.utilities.thread_gate import ThreadGate
-from threading import Thread
-import time
class UnknownWorkload(Exception):
@@ -37,7 +39,6 @@ class TestExecutor(object):
self.filename = None
self.deadline = None
self.steady_state_samples = 10
- self.metadata = {}
self.start_time = None
self.end_time = None
self.current_workload = None
@@ -55,6 +56,27 @@ class TestExecutor(object):
self._workload_executors = []
self._workload_thread = None
self._thread_gate = None
+ self._setup_metadata({})
+
+ def _setup_metadata(self, metadata={}):
+ try:
+ installer = os.environ['INSTALLER_TYPE']
+ except KeyError:
+ self.logger.error("Cannot determine installer")
+ installer = "Unknown_installer"
+
+ self.metadata = {}
+ self.metadata['project_name'] = 'storperf'
+ self.metadata['installer'] = installer
+ self.metadata['pod_name'] = 'Unknown'
+ self.metadata['version'] = 'Unknown'
+ self.metadata['scenario'] = 'Unknown'
+ self.metadata['build_tag'] = 'Unknown'
+ self.metadata['test_case'] = 'Unknown'
+ self.metadata['details'] = {}
+ self.metadata['details']['metrics'] = {}
+ self.metadata.update(metadata)
+ self.metadata['case_name'] = self.metadata['test_case']
@property
def slaves(self):
@@ -98,7 +120,14 @@ class TestExecutor(object):
metric,
callback_id)
- self.metrics_emitter.transmit_metrics(carbon_metrics)
+ self.metrics_emitter.transmit_metrics(carbon_metrics, callback_id)
+
+ commit_count = 10
+ while (commit_count > 0 and
+ not self.metrics_emitter.confirm_commit(callback_id)):
+ self.logger.info("Waiting 1 more second for commit")
+ sleep(1)
+ commit_count -= 1
if self._thread_gate.report(callback_id):
self.broadcast_event()
@@ -162,8 +191,7 @@ class TestExecutor(object):
def execute(self, metadata):
self.job_db.create_job_id()
self.job_db.record_workload_params(metadata)
- self.metadata = metadata
- self.metadata['metrics'] = {}
+ self._setup_metadata(metadata)
self._workload_thread = Thread(target=self.execute_workloads,
args=(),
name="Workload thread")
@@ -244,11 +272,11 @@ class TestExecutor(object):
if self._terminated:
return
self.current_workload = (
- "%s.%s.queue-depth.%s.block-size.%s" %
- (self.job_db.job_id,
- workload_name,
- iodepth,
- blocksize))
+ "%s.%s.queue-depth.%s.block-size.%s"
+ % (self.job_db.job_id,
+ workload_name,
+ iodepth,
+ blocksize))
self.logger.info("Starting run %s" % self.current_workload)
self.workload_status[self.current_workload] = "Running"
@@ -287,11 +315,11 @@ class TestExecutor(object):
if not scheduler.empty():
try:
scheduler.cancel(event)
- except:
+ except ValueError:
pass
- self.logger.info("Completed run %s" %
- self.current_workload)
+ self.logger.info("Completed run %s"
+ % self.current_workload)
self.workload_status[self.current_workload] = "Completed"
self._workload_executors = []
self.current_workload = None
@@ -304,15 +332,15 @@ class TestExecutor(object):
self.end_time = time.time()
self._terminated = True
- report = {'report': json.dumps(self.metadata)}
- self.job_db.record_workload_params(report)
self.broadcast_event()
self.unregister(data_handler.data_event)
+ report = {'report': json.dumps(self.metadata)}
+ self.job_db.record_workload_params(report)
self.job_db.job_id = None
def execute_on_node(self, workload):
- invoker = FIOInvoker()
+ invoker = FIOInvoker(self.metadata)
invoker.register(self.event)
workload.invoker = invoker
diff --git a/docker/storperf-master/storperf/utilities/data_handler.py b/docker/storperf-master/storperf/utilities/data_handler.py
index 9d20383..471c295 100644
--- a/docker/storperf-master/storperf/utilities/data_handler.py
+++ b/docker/storperf-master/storperf/utilities/data_handler.py
@@ -9,15 +9,14 @@
import logging
import os
+import time
+
from storperf.db import test_results_db
from storperf.db.graphite_db import GraphiteDB
from storperf.db.job_db import JobDB
from storperf.utilities import data_treatment as DataTreatment
-from storperf.utilities import dictionary
from storperf.utilities import math as math
from storperf.utilities import steady_state as SteadyState
-from time import sleep
-import time
class DataHandler(object):
@@ -36,8 +35,6 @@ class DataHandler(object):
self._push_to_db(executor)
else:
workload = '.'.join(executor.current_workload.split('.')[1:6])
- if 'metrics' not in executor.metadata:
- executor.metadata['metrics'] = {}
steady_state = True
metrics = {}
@@ -67,19 +64,21 @@ class DataHandler(object):
metrics[metric][io_type]['average'] = average
metrics_key = '%s.%s.%s' % (workload, io_type, metric)
- executor.metadata['metrics'][metrics_key] = average
+ executor.metadata['details']['metrics'][metrics_key] = \
+ average
if not steady:
steady_state = False
- if 'report_data' not in executor.metadata:
- executor.metadata['report_data'] = {}
+ if 'report_data' not in executor.metadata['details']:
+ executor.metadata['details']['report_data'] = {}
- if 'steady_state' not in executor.metadata:
- executor.metadata['steady_state'] = {}
+ if 'steady_state' not in executor.metadata['details']:
+ executor.metadata['details']['steady_state'] = {}
- executor.metadata['report_data'][workload] = metrics
- executor.metadata['steady_state'][workload] = steady_state
+ executor.metadata['details']['report_data'][workload] = metrics
+ executor.metadata['details']['steady_state'][workload] = \
+ steady_state
workload_name = executor.current_workload.split('.')[1]
@@ -93,31 +92,12 @@ class DataHandler(object):
# A bit of a hack here as Carbon might not be finished storing the
# data we just sent to it
now = int(time.time())
- backtime = 60 * (executor.steady_state_samples + 2)
+ backtime = 60 * (executor.steady_state_samples + 1)
data_series = graphite_db.fetch_series(workload,
metric,
io_type,
now,
backtime)
- most_recent_time = now
- if len(data_series) > 0:
- most_recent_time = data_series[-1][0]
-
- delta = now - most_recent_time
- self.logger.debug("Last update to graphite was %s ago" % delta)
-
- while (delta < 5 or (delta > 60 and delta < 120)):
- sleep(5)
- data_series = graphite_db.fetch_series(workload,
- metric,
- io_type,
- now,
- backtime)
- if len(data_series) > 0:
- most_recent_time = data_series[-1][0]
- delta = time.time() - most_recent_time
- self.logger.debug("Last update to graphite was %s ago" % delta)
-
return data_series
def _convert_timestamps_to_samples(self, executor, series):
@@ -147,59 +127,36 @@ class DataHandler(object):
return SteadyState.steady_state(data_series)
def _push_to_db(self, executor):
- pod_name = dictionary.get_key_from_dict(executor.metadata,
- 'pod_name',
- 'Unknown')
- version = dictionary.get_key_from_dict(executor.metadata,
- 'version',
- 'Unknown')
- scenario = dictionary.get_key_from_dict(executor.metadata,
- 'scenario_name',
- 'Unknown')
- build_tag = dictionary.get_key_from_dict(executor.metadata,
- 'build_tag',
- 'Unknown')
- test_case = dictionary.get_key_from_dict(executor.metadata,
- 'test_case',
- 'Unknown')
- duration = executor.end_time - executor.start_time
-
- payload = executor.metadata
+ executor.metadata['duration'] = executor.end_time - executor.start_time
steady_state = True
- for _, value in executor.metadata['steady_state'].items():
+ for _, value in executor.metadata['details']['steady_state'].items():
steady_state = steady_state and value
- payload['timestart'] = executor.start_time
- payload['duration'] = duration
+ executor.metadata['timestart'] = executor.start_time
if steady_state:
criteria = 'PASS'
else:
criteria = 'FAIL'
+ executor.metadata['criteria'] = criteria
- start_time = time.strftime('%Y-%m-%d %H:%M:%S',
- time.gmtime(executor.start_time))
+ executor.metadata['start_time'] = \
+ time.strftime('%Y-%m-%d %H:%M:%S',
+ time.gmtime(executor.start_time))
- end_time = time.strftime('%Y-%m-%d %H:%M:%S',
- time.gmtime(executor.end_time))
+ executor.metadata['end_time'] = \
+ time.strftime('%Y-%m-%d %H:%M:%S',
+ time.gmtime(executor.end_time))
test_db = os.environ.get('TEST_DB_URL')
if test_db is not None:
self.logger.info("Pushing results to %s" % (test_db))
try:
- response = test_results_db.push_results_to_db(test_db,
- "storperf",
- test_case,
- start_time,
- end_time,
- self.logger,
- pod_name,
- version,
- scenario,
- criteria,
- build_tag,
- payload)
+ response = test_results_db.push_results_to_db(
+ test_db,
+ executor.metadata,
+ self.logger)
executor.result_url = response['href']
- except:
+ except Exception:
self.logger.exception("Error pushing results into Database")
diff --git a/docker/storperf-master/storperf/workloads/_base_workload.py b/docker/storperf-master/storperf/workloads/_base_workload.py
index 936c839..c045278 100644
--- a/docker/storperf-master/storperf/workloads/_base_workload.py
+++ b/docker/storperf-master/storperf/workloads/_base_workload.py
@@ -74,9 +74,9 @@ class _base_workload(object):
@property
def fullname(self):
- return ("%s.%s.queue-depth.%s.block-size.%s.%s" %
- (str(self.id),
- self.__class__.__name__,
- str(self.options['iodepth']),
- str(self.options['bs']),
- str(self.remote_host).replace(".", "-")))
+ return ("%s.%s.queue-depth.%s.block-size.%s.%s"
+ % (str(self.id),
+ self.__class__.__name__,
+ str(self.options['iodepth']),
+ str(self.options['bs']),
+ str(self.remote_host).replace(".", "-")))
diff --git a/docker/storperf-master/supervisord.conf b/docker/storperf-master/supervisord.conf
deleted file mode 100644
index 558f6bf..0000000
--- a/docker/storperf-master/supervisord.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-[supervisord]
-nodaemon = true
-environment = GRAPHITE_STORAGE_DIR='/var/lib/graphite/storage',GRAPHITE_CONF_DIR='/var/lib/graphite/conf'
-
-[program:nginx]
-command = /usr/sbin/nginx
-stdout_logfile = /var/log/supervisor/%(program_name)s.log
-stderr_logfile = /var/log/supervisor/%(program_name)s.log
-autorestart = true
-
-[program:carbon-cache]
-user = www-data
-command = /var/lib/graphite/bin/carbon-cache.py --debug start
-stdout_logfile = /var/log/supervisor/%(program_name)s.log
-stderr_logfile = /var/log/supervisor/%(program_name)s.log
-autorestart = true
-
-[program:graphite-webapp]
-user = www-data
-directory = /var/lib/graphite/webapp
-environment = PYTHONPATH='/var/lib/graphite/webapp'
-command = /usr/bin/gunicorn_django -b127.0.0.1:8080 -w2 graphite/settings.py
-stdout_logfile = /var/log/supervisor/%(program_name)s.log
-stderr_logfile = /var/log/supervisor/%(program_name)s.log
-autorestart = true
-
-[program:storperf-webapp]
-user = root
-directory = /storperf/
-command = /usr/bin/python rest_server.py
-stdout_logfile = /var/log/supervisor/%(program_name)s.log
-stderr_logfile = /var/log/supervisor/%(program_name)s.log
-autorestart = true
diff --git a/docker/storperf-master/tests/carbon_tests/emitter_test.py b/docker/storperf-master/tests/carbon_tests/emitter_test.py
index 7f61049..f5a78d1 100644
--- a/docker/storperf-master/tests/carbon_tests/emitter_test.py
+++ b/docker/storperf-master/tests/carbon_tests/emitter_test.py
@@ -7,27 +7,39 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-import SocketServer
import json
-from storperf.carbon import converter
-from storperf.carbon.emitter import CarbonMetricTransmitter
-import threading
-from time import sleep, strptime
+from time import strptime
import unittest
import mock
+from storperf.carbon import converter
+from storperf.carbon.emitter import CarbonMetricTransmitter
+
+
+addresses = []
+data = []
+connect_exception = []
+send_exception = []
+
+
+class MockSocket(object):
-class MetricsHandler(SocketServer.BaseRequestHandler):
+ def __init__(self, *args):
+ pass
- def handle(self):
- # Echo the back to the client
- CarbonMetricTransmitterTest.response = self.request.recv(1024)
- return
+ def connect(self, address):
+ if len(connect_exception) != 0:
+ raise connect_exception[0]
+ addresses.append(address)
+ def send(self, datum):
+ if len(send_exception) != 0:
+ raise send_exception[0]
+ data.append(datum)
-class MetricsServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
- pass
+ def close(self):
+ pass
class CarbonMetricTransmitterTest(unittest.TestCase):
@@ -35,17 +47,37 @@ class CarbonMetricTransmitterTest(unittest.TestCase):
response = None
def setUp(self):
+ del addresses[:]
+ del data[:]
+ del connect_exception[:]
+ del send_exception[:]
+
+ @mock.patch("socket.socket")
+ @mock.patch("time.gmtime")
+ def test_transmit_metrics(self, mock_time, mock_socket):
+
+ mock_socket.side_effect = MockSocket
+
+ mock_time.return_value = strptime("30 Nov 00", "%d %b %y")
+
+ testconv = converter.Converter()
+ json_object = json.loads(
+ """{"timestamp" : "975542400", "key":123.0 }""")
+ result = testconv.convert_json_to_flat(json_object, "host.run-name")
- address = ('localhost', 0)
- server = MetricsServer(address, MetricsHandler)
- ip, self.listen_port = server.server_address
+ emitter = CarbonMetricTransmitter()
+ emitter.carbon_port = self.listen_port
+ emitter.transmit_metrics(result, None)
- t = threading.Thread(target=server.serve_forever)
- t.setDaemon(True)
- t.start()
+ self.assertEqual("host.run-name.key 123.0 975542400\n",
+ data[1],
+ data[1])
+ @mock.patch("socket.socket")
@mock.patch("time.gmtime")
- def test_transmit_metrics(self, mock_time):
+ def test_skip_non_numeric_metrics(self, mock_time, mock_socket):
+
+ mock_socket.side_effect = MockSocket
mock_time.return_value = strptime("30 Nov 00", "%d %b %y")
@@ -56,17 +88,126 @@ class CarbonMetricTransmitterTest(unittest.TestCase):
emitter = CarbonMetricTransmitter()
emitter.carbon_port = self.listen_port
- emitter.transmit_metrics(result)
+ emitter.transmit_metrics(result, None)
+
+ self.assertEqual("None.commit-marker 975542400 975542400\n",
+ data[1],
+ data[1])
+
+ @mock.patch("socket.socket")
+ def test_connect_fails(self, mock_socket):
+
+ mock_socket.side_effect = MockSocket
+ connect_exception.append(Exception("Mock connection error"))
+
+ testconv = converter.Converter()
+ json_object = json.loads(
+ """{"timestamp" : "975542400", "key":"value" }""")
+ result = testconv.convert_json_to_flat(json_object, "host.run-name")
+
+ emitter = CarbonMetricTransmitter()
+ emitter.carbon_port = self.listen_port
+ emitter.transmit_metrics(result, None)
+
+ self.assertEqual(0,
+ len(data),
+ len(data))
- count = 0
+ @mock.patch("socket.socket")
+ def test_send_fails(self, mock_socket):
- while (CarbonMetricTransmitterTest.response is None and count < 10):
- count += 1
- sleep(0.1)
+ mock_socket.side_effect = MockSocket
+ send_exception.append(Exception("Mock send error"))
+
+ testconv = converter.Converter()
+ json_object = json.loads(
+ """{"timestamp" : "975542400", "key":"value" }""")
+ result = testconv.convert_json_to_flat(json_object, "host.run-name")
+
+ emitter = CarbonMetricTransmitter()
+ emitter.carbon_port = self.listen_port
+ emitter.transmit_metrics(result, None)
+
+ self.assertEqual(0,
+ len(data),
+ len(data))
+
+ @mock.patch("storperf.db.graphite_db.GraphiteDB.fetch_item")
+ def test_confirm_commit(self, mock_graphite_db):
+ graphite_return = json.loads("""[
+ {"target":
+ "rw.queue-depth.2.block-size.2048.10-10-243-154.commit-marker",
+ "datapoints": [[1503078366.0, 1503078370]]}]
+ """)
+ mock_graphite_db.return_value = graphite_return
+
+ commit_marker = "commit-marker"
+
+ emitter = CarbonMetricTransmitter()
+ emitter.commit_markers[commit_marker] = 1503078366
+
+ committed = emitter.confirm_commit(commit_marker)
+ self.assertTrue(committed)
+
+ @mock.patch("storperf.db.graphite_db.GraphiteDB.fetch_item")
+ def test_confirm_multiple_commits(self, mock_graphite_db):
+ graphite_return = json.loads("""[
+ {"target":
+ "rw.queue-depth.2.block-size.2048.10-10-243-154.commit-marker",
+ "datapoints": [
+ [1503078300.0, 1503078350],
+ [1503078366.0, 1503078360]]}]
+ """)
+ mock_graphite_db.return_value = graphite_return
+
+ commit_marker = "commit-marker"
+
+ emitter = CarbonMetricTransmitter()
+ emitter.commit_markers[commit_marker] = 1503078366
+
+ committed = emitter.confirm_commit(commit_marker)
+ self.assertTrue(committed)
+
+ @mock.patch("storperf.db.graphite_db.GraphiteDB.fetch_item")
+ def test_empty_commit(self, mock_graphite_db):
+ graphite_return = json.loads("[]")
+ mock_graphite_db.return_value = graphite_return
+
+ commit_marker = "commit-marker"
+
+ emitter = CarbonMetricTransmitter()
+ emitter.commit_markers[commit_marker] = 1503078366
+
+ committed = emitter.confirm_commit(commit_marker)
+ self.assertFalse(committed)
+
+ @mock.patch("storperf.db.graphite_db.GraphiteDB.fetch_item")
+ def test_badtimestamp_commit(self, mock_graphite_db):
+ graphite_return = json.loads("""[
+ {"target":
+ "rw.queue-depth.2.block-size.2048.10-10-243-154.commit-marker",
+ "datapoints": [[1234, 1503078370]]}]
+ """)
+ mock_graphite_db.return_value = graphite_return
+
+ commit_marker = "commit-marker"
+
+ emitter = CarbonMetricTransmitter()
+ emitter.commit_markers[commit_marker] = 1503078366
+
+ committed = emitter.confirm_commit(commit_marker)
+ self.assertFalse(committed)
+
+ def test_timestamp_parse(self):
+ emitter = CarbonMetricTransmitter()
+ result = json.loads("""[
+ {"target":
+ "rw.queue-depth.2.block-size.2048.10-10-243-154.commit-marker",
+ "datapoints": [[1503078366.0, 1503078370]]}]
+ """)
+ timestamps = emitter.parse_timestamp(result)
+ self.assertEqual(1503078366, timestamps[0], timestamps[0])
- self.assertEqual("host.run-name.key value 975542400\n",
- CarbonMetricTransmitterTest.response,
- CarbonMetricTransmitterTest.response)
if __name__ == '__main__':
unittest.main()
diff --git a/docker/storperf-master/tests/utilities_tests/data_handler_test.py b/docker/storperf-master/tests/utilities_tests/data_handler_test.py
index f514ae7..f028bd0 100644
--- a/docker/storperf-master/tests/utilities_tests/data_handler_test.py
+++ b/docker/storperf-master/tests/utilities_tests/data_handler_test.py
@@ -8,11 +8,12 @@
##############################################################################
import os
-from storperf.utilities.data_handler import DataHandler
import unittest
import mock
+from storperf.utilities.data_handler import DataHandler
+
class MockGraphiteDB(object):
@@ -34,6 +35,8 @@ class DataHandlerTest(unittest.TestCase):
self.steady_state_samples = 10
self.end_time = 1
self.metadata = {}
+ self.metadata['details'] = {}
+ self.metadata['details']['metrics'] = {}
self.block_sizes = "1"
self.queue_depths = "1"
mock.job_id = "1"
@@ -76,11 +79,11 @@ class DataHandlerTest(unittest.TestCase):
mock_graphite_db.return_value = expected
mock_time.return_value = expected[-1][0] + 10
- self.current_workload = ("%s.%s.queue-depth.%s.block-size.%s" %
- ("job_id",
- "rw",
- 8,
- 8192))
+ self.current_workload = ("%s.%s.queue-depth.%s.block-size.%s"
+ % ("job_id",
+ "rw",
+ 8,
+ 8192))
actual = self.data_handler._lookup_prior_data(self, 'read', 'iops')
self.assertEqual(expected, actual)
@@ -133,7 +136,7 @@ class DataHandlerTest(unittest.TestCase):
self._terminated = True
mock_results_db.side_effect = self.push_results_to_db
mock_graphite_db.side_effect = MockGraphiteDB
- self.metadata = {
+ self.metadata['details'] = {
"steady_state": {
"rr.queue-depth.8.block-size.16384": True,
"rr.queue-depth.8.block-size.2048": False,
@@ -148,8 +151,9 @@ class DataHandlerTest(unittest.TestCase):
@mock.patch("time.time")
@mock.patch("storperf.db.test_results_db.push_results_to_db")
@mock.patch("storperf.db.graphite_db.GraphiteDB.fetch_series")
- @mock.patch("storperf.db.graphite_db.JobDB.fetch_workloads")
- def test_non_terminated_report(self, mock_job_db, mock_graphite_db,
+ @mock.patch("storperf.db.job_db.JobDB.fetch_workloads")
+ def test_non_terminated_report(self, mock_job_db,
+ mock_graphite_db,
mock_results_db, mock_time):
self._terminated = False
mock_results_db.side_effect = self.push_results_to_db
@@ -169,29 +173,31 @@ class DataHandlerTest(unittest.TestCase):
expected_range = 17.78
expected_average = 212.49777777777774
- self.current_workload = ("%s.%s.queue-depth.%s.block-size.%s" %
- ("job_id",
- "rw",
- 8,
- 8192))
-
+ self.current_workload = ("%s.%s.queue-depth.%s.block-size.%s"
+ % ("job_id",
+ "rw",
+ 8,
+ 8192))
mock_job_db.return_value = [[self.current_workload, 4804559000, None]]
self.data_handler.data_event(self)
self.assertEqual(False, self.pushed)
self.assertEqual(False, self._terminated)
- self.assertEqual(expected_slope, self.metadata['report_data']
+ self.assertEqual(expected_slope, self.metadata['details']
+ ['report_data']
['rw.queue-depth.8.block-size.8192']
['lat_ns.mean']
['read']
['slope'])
- self.assertEqual(expected_range, self.metadata['report_data']
+ self.assertEqual(expected_range, self.metadata['details']
+ ['report_data']
['rw.queue-depth.8.block-size.8192']
['lat_ns.mean']
['read']
['range'])
- self.assertEqual(expected_average, self.metadata['report_data']
+ self.assertEqual(expected_average, self.metadata['details']
+ ['report_data']
['rw.queue-depth.8.block-size.8192']
['lat_ns.mean']
['read']
@@ -201,7 +207,7 @@ class DataHandlerTest(unittest.TestCase):
@mock.patch("time.time")
@mock.patch("storperf.db.test_results_db.push_results_to_db")
@mock.patch("storperf.db.graphite_db.GraphiteDB.fetch_series")
- @mock.patch("storperf.db.graphite_db.JobDB.fetch_workloads")
+ @mock.patch("storperf.db.job_db.JobDB.fetch_workloads")
def test_report_that_causes_termination(self,
mock_job_db,
mock_graphite_db,
@@ -236,32 +242,35 @@ class DataHandlerTest(unittest.TestCase):
expected_range = 17.78
expected_average = 209.2135
- self.current_workload = ("%s.%s.queue-depth.%s.block-size.%s" %
- ("job_id",
- "rw",
- 8,
- 8192))
-
+ self.current_workload = ("%s.%s.queue-depth.%s.block-size.%s"
+ % ("job_id",
+ "rw",
+ 8,
+ 8192))
mock_job_db.return_value = [[self.current_workload, 4804559000, None]]
self.data_handler.data_event(self)
- self.assertEqual(expected_slope, self.metadata['report_data']
+ self.assertEqual(expected_slope, self.metadata['details']
+ ['report_data']
['rw.queue-depth.8.block-size.8192']
['lat_ns.mean']
['read']
['slope'])
- self.assertEqual(expected_range, self.metadata['report_data']
+ self.assertEqual(expected_range, self.metadata['details']
+ ['report_data']
['rw.queue-depth.8.block-size.8192']
['lat_ns.mean']
['read']
['range'])
- self.assertEqual(expected_average, self.metadata['report_data']
+ self.assertEqual(expected_average, self.metadata['details']
+ ['report_data']
['rw.queue-depth.8.block-size.8192']
['lat_ns.mean']
['read']
['average'])
- self.assertEqual(report_data, self.metadata['report_data']
+ self.assertEqual(report_data, self.metadata['details']
+ ['report_data']
['rw.queue-depth.8.block-size.8192']
['lat_ns.mean']
['read']
@@ -277,7 +286,7 @@ class DataHandlerTest(unittest.TestCase):
mock_results_db.side_effect = self.push_results_to_db
self.start_time = 1504559100
self.end_time = 1504560000
- self.metadata = {
+ self.metadata['details'] = {
"scenario_name": "ceph_ws,wr,rs,rr,rw",
"status": "OK",
"steady_state": {
@@ -289,9 +298,11 @@ class DataHandlerTest(unittest.TestCase):
"volume_size": 10
}
self.data_handler._push_to_db(self)
- self.assertEqual('FAIL', self.db_results[9],
+ self.assertEqual('FAIL', self.db_results[1]['criteria'],
'Expected FAIL in criteria')
- self.assertEqual('2017-09-04 21:05:00', self.db_results[3],
+ self.assertEqual('2017-09-04 21:05:00',
+ self.db_results[1]['start_time'],
'Start time')
- self.assertEqual('2017-09-04 21:20:00', self.db_results[4],
+ self.assertEqual('2017-09-04 21:20:00',
+ self.db_results[1]['end_time'],
'End time')
diff --git a/docker/storperf-reporting/Dockerfile b/docker/storperf-reporting/Dockerfile
index bbcbdb3..ac507a6 100644
--- a/docker/storperf-reporting/Dockerfile
+++ b/docker/storperf-reporting/Dockerfile
@@ -15,7 +15,9 @@
##
-FROM alpine:3.1
+ARG ARCH=x86_64
+ARG ALPINE_VERSION=v3.6
+FROM multiarch/alpine:$ARCH-$ALPINE_VERSION
MAINTAINER Mark Beierl <mark.beierl@dell.com>
LABEL version="0.1" description="OPNFV Storperf Reporting Container"
diff --git a/docker/storperf-reporting/requirements.txt b/docker/storperf-reporting/requirements.txt
index 81903de..7016e72 100644
--- a/docker/storperf-reporting/requirements.txt
+++ b/docker/storperf-reporting/requirements.txt
@@ -1,2 +1,3 @@
Flask==0.12.2
-requests \ No newline at end of file
+requests
+validators \ No newline at end of file
diff --git a/docker/storperf-reporting/src/app.py b/docker/storperf-reporting/src/app.py
index c77f60f..e2d889d 100644
--- a/docker/storperf-reporting/src/app.py
+++ b/docker/storperf-reporting/src/app.py
@@ -7,19 +7,72 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-from flask import Flask, redirect, url_for, request, render_template, session
-from flask import send_from_directory
-import urllib
import json
+import urllib
+
+from flask import Flask, redirect, url_for, request, render_template, session
+from flask import send_from_directory, flash
+
+import validators
+
+
app = Flask(__name__)
app.secret_key = 'storperf_graphing_module'
+def get_data(data):
+ metrics = {}
+ report_data = {}
+ temp = data.get("results") or data.get("report") or data.get("details")
+ if type(temp) is list:
+ length = len(temp)
+ if length == 1:
+ details = temp[0].get('details')
+ metrics = details.get('metrics')
+ report_data = details.get('report_data')
+ return "single", metrics, report_data
+ else:
+ return "multi", temp
+ else:
+ metrics = temp.get('metrics')
+ report_data = temp.get('report_data')
+ return "single", metrics, report_data
+
+
@app.route('/reporting/success/')
def success():
- data = urllib.urlopen(session["url"]).read()
- data = json.loads(data)
- return render_template('plot_tables.html', data=data)
+ try:
+ URL = session["url"]
+ if URL.find("jobs") is not -1 and URL.find("metadata") is -1:
+ data = urllib.urlopen(URL).read()
+ data = json.loads(data)
+ temp = data["job_ids"]
+ print temp
+ if temp:
+ info = {}
+ for ID in temp:
+ url = URL + "?id=" + ID + "&type=metadata"
+ data_temp = urllib.urlopen(url).read()
+ data_temp = json.loads(data_temp)
+ report_data = get_data(data_temp)[-1]
+ info[ID] = report_data
+ return render_template('plot_jobs.html', results=info)
+ if validators.url(URL):
+ data = urllib.urlopen(URL).read()
+ else:
+ data = open("./static/testdata/" + URL).read()
+ data = json.loads(data)
+ response = get_data(data)
+ if response[0] == "single":
+ metrics, report_data = response[1], response[2]
+ return render_template('plot_tables.html',
+ metrics=metrics, report_data=report_data)
+ else:
+ return render_template('plot_multi_data.html',
+ results=response[1])
+ except Exception as e:
+ session['server_error'] = e.message + ' ' + repr(e.args)
+ return redirect(url_for('file_not_found'))
@app.route('/reporting/url', methods=['POST', 'GET'])
@@ -30,6 +83,13 @@ def url():
return redirect(url_for('success'))
+@app.route('/reporting/file_not_found/')
+def file_not_found():
+ error = session.get('server_error')
+ flash("Server Error: " + error)
+ return redirect(url_for('index'))
+
+
@app.route('/reporting/js/<path:path>')
def js(path):
return send_from_directory('static/js/', path)
diff --git a/docker/storperf-reporting/src/static/testdata/local-multi.json b/docker/storperf-reporting/src/static/testdata/local-multi.json
new file mode 100644
index 0000000..78797af
--- /dev/null
+++ b/docker/storperf-reporting/src/static/testdata/local-multi.json
@@ -0,0 +1,831 @@
+{
+ "results": [
+ {
+ "_id": "6cc1c6c5-f660-4ab0-bf91-9ae0324846c2",
+ "agent_count": 1,
+ "build_tag": "Unknown",
+ "case_name": "Unknown",
+ "criteria": "FAIL",
+ "details": {
+ "metrics": {
+ "_warm_up.queue-depth.8.block-size.16384.read.bw": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.read.iops": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.read.lat_ns.mean": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.write.bw": 4547.0,
+ "_warm_up.queue-depth.8.block-size.16384.write.iops": 284.27710866666666,
+ "_warm_up.queue-depth.8.block-size.16384.write.lat_ns.mean": 28133208.4602,
+ "rw.queue-depth.1.block-size.2048.read.bw": 325.1,
+ "rw.queue-depth.1.block-size.2048.read.iops": 162.77480539999996,
+ "rw.queue-depth.1.block-size.2048.read.lat_ns.mean": 757589.6947685999,
+ "rw.queue-depth.1.block-size.2048.write.bw": 138.6,
+ "rw.queue-depth.1.block-size.2048.write.iops": 69.55300399999999,
+ "rw.queue-depth.1.block-size.2048.write.lat_ns.mean": 12599603.595169999
+ },
+ "report_data": {
+ "_warm_up.queue-depth.8.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": false
+ },
+ "write": {
+ "average": 4547.0,
+ "range": 44.0,
+ "series": [
+ [
+ 1,
+ 4529.0
+ ],
+ [
+ 2,
+ 4539.0
+ ],
+ [
+ 3,
+ 4573.0
+ ]
+ ],
+ "slope": 22.0,
+ "steady_state": false
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": false
+ },
+ "write": {
+ "average": 284.27710866666666,
+ "range": 2.618600000000015,
+ "series": [
+ [
+ 1,
+ 283.205342
+ ],
+ [
+ 2,
+ 283.802042
+ ],
+ [
+ 3,
+ 285.823942
+ ]
+ ],
+ "slope": 1.3092999999998938,
+ "steady_state": false
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": false
+ },
+ "write": {
+ "average": 28133208.4602,
+ "range": 237517.34149999917,
+ "series": [
+ [
+ 1,
+ 28224860.6161
+ ],
+ [
+ 2,
+ 28187421.4899
+ ],
+ [
+ 3,
+ 27987343.2746
+ ]
+ ],
+ "slope": -118758.670750012,
+ "steady_state": false
+ }
+ }
+ },
+ "rw.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 325.1,
+ "range": 23.0,
+ "series": [
+ [
+ 0,
+ 311.0
+ ],
+ [
+ 1,
+ 321.0
+ ],
+ [
+ 2,
+ 330.0
+ ],
+ [
+ 3,
+ 320.0
+ ],
+ [
+ 4,
+ 318.0
+ ],
+ [
+ 5,
+ 324.0
+ ],
+ [
+ 6,
+ 331.0
+ ],
+ [
+ 7,
+ 330.0
+ ],
+ [
+ 8,
+ 332.0
+ ],
+ [
+ 9,
+ 334.0
+ ]
+ ],
+ "slope": 1.9575757575757575,
+ "steady_state": true
+ },
+ "write": {
+ "average": 138.6,
+ "range": 8.0,
+ "series": [
+ [
+ 0,
+ 134.0
+ ],
+ [
+ 1,
+ 136.0
+ ],
+ [
+ 2,
+ 141.0
+ ],
+ [
+ 3,
+ 136.0
+ ],
+ [
+ 4,
+ 136.0
+ ],
+ [
+ 5,
+ 138.0
+ ],
+ [
+ 6,
+ 140.0
+ ],
+ [
+ 7,
+ 141.0
+ ],
+ [
+ 8,
+ 142.0
+ ],
+ [
+ 9,
+ 142.0
+ ]
+ ],
+ "slope": 0.7757575757575758,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 162.77480539999996,
+ "range": 11.549119999999988,
+ "series": [
+ [
+ 0,
+ 155.735105
+ ],
+ [
+ 1,
+ 160.742878
+ ],
+ [
+ 2,
+ 165.048328
+ ],
+ [
+ 3,
+ 160.166051
+ ],
+ [
+ 4,
+ 159.205937
+ ],
+ [
+ 5,
+ 162.22321
+ ],
+ [
+ 6,
+ 165.548626
+ ],
+ [
+ 7,
+ 165.358843
+ ],
+ [
+ 8,
+ 166.434851
+ ],
+ [
+ 9,
+ 167.284225
+ ]
+ ],
+ "slope": 0.9969906909091073,
+ "steady_state": true
+ },
+ "write": {
+ "average": 69.55300399999999,
+ "range": 4.193179999999998,
+ "series": [
+ [
+ 0,
+ 67.175267
+ ],
+ [
+ 1,
+ 68.425178
+ ],
+ [
+ 2,
+ 70.538081
+ ],
+ [
+ 3,
+ 68.458608
+ ],
+ [
+ 4,
+ 68.110134
+ ],
+ [
+ 5,
+ 69.288473
+ ],
+ [
+ 6,
+ 70.459194
+ ],
+ [
+ 7,
+ 70.559996
+ ],
+ [
+ 8,
+ 71.146662
+ ],
+ [
+ 9,
+ 71.368447
+ ]
+ ],
+ "slope": 0.3883556363636418,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 757589.6947685999,
+ "range": 57973.07178999996,
+ "series": [
+ [
+ 0,
+ 728154.347518
+ ],
+ [
+ 1,
+ 720469.143139
+ ],
+ [
+ 2,
+ 736655.887692
+ ],
+ [
+ 3,
+ 741840.50458
+ ],
+ [
+ 4,
+ 769845.856565
+ ],
+ [
+ 5,
+ 777245.805254
+ ],
+ [
+ 6,
+ 771668.148592
+ ],
+ [
+ 7,
+ 778442.214929
+ ],
+ [
+ 8,
+ 775110.161108
+ ],
+ [
+ 9,
+ 776464.878309
+ ]
+ ],
+ "slope": 6806.644968557574,
+ "steady_state": true
+ },
+ "write": {
+ "average": 12599603.595169999,
+ "range": 1007779.9737999998,
+ "series": [
+ [
+ 0,
+ 13189011.2609
+ ],
+ [
+ 1,
+ 12911322.2831
+ ],
+ [
+ 2,
+ 12442518.5818
+ ],
+ [
+ 3,
+ 12862580.5707
+ ],
+ [
+ 4,
+ 12871629.818
+ ],
+ [
+ 5,
+ 12601602.6661
+ ],
+ [
+ 6,
+ 12368342.1886
+ ],
+ [
+ 7,
+ 12336719.4401
+ ],
+ [
+ 8,
+ 12231077.8553
+ ],
+ [
+ 9,
+ 12181231.2871
+ ]
+ ],
+ "slope": -97657.38645757502,
+ "steady_state": true
+ }
+ }
+ }
+ },
+ "steady_state": {
+ "_warm_up.queue-depth.8.block-size.16384": false,
+ "rw.queue-depth.1.block-size.2048": true
+ }
+ },
+ "duration": 831.1383128166199,
+ "end_date": "2017-09-01 18:17:52",
+ "end_time": "2017-09-01 18:17:52",
+ "installer": "apex",
+ "password": "cubswin:)",
+ "pod_name": "Unknown",
+ "project_name": "storperf",
+ "public_network": "external",
+ "scenario": "Unknown",
+ "start_date": "2017-09-01 18:04:01",
+ "start_time": "2017-09-01 18:04:01",
+ "test_case": "Unknown",
+ "timestart": 1504289041.533451,
+ "username": "cirros",
+ "version": "Unknown",
+ "volume_size": 1
+ },
+ {
+ "_id": "09669733-f8cd-41fe-b914-5c7bd2d9be2a",
+ "agent_count": 1,
+ "build_tag": "Unknown",
+ "case_name": "Unknown",
+ "criteria": "PASS",
+ "details": {
+ "metrics": {
+ "rw.queue-depth.8.block-size.2048.read.bw": 1216.6363636363637,
+ "rw.queue-depth.8.block-size.2048.read.iops": 608.6309282727273,
+ "rw.queue-depth.8.block-size.2048.read.lat_ns.mean": 764497.1991469089,
+ "rw.queue-depth.8.block-size.2048.write.bw": 522.2727272727273,
+ "rw.queue-depth.8.block-size.2048.write.iops": 261.4501354545455,
+ "rw.queue-depth.8.block-size.2048.write.lat_ns.mean": 28815276.88039091
+ },
+ "report_data": {
+ "rw.queue-depth.8.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 1216.6363636363637,
+ "range": 27.0,
+ "series": [
+ [
+ 4,
+ 1199.0
+ ],
+ [
+ 5,
+ 1208.0
+ ],
+ [
+ 6,
+ 1219.0
+ ],
+ [
+ 7,
+ 1221.0
+ ],
+ [
+ 8,
+ 1226.0
+ ],
+ [
+ 9,
+ 1225.0
+ ],
+ [
+ 10,
+ 1221.0
+ ],
+ [
+ 11,
+ 1212.0
+ ],
+ [
+ 12,
+ 1213.0
+ ],
+ [
+ 13,
+ 1218.0
+ ],
+ [
+ 14,
+ 1221.0
+ ]
+ ],
+ "slope": 0.990909090909091,
+ "steady_state": true
+ },
+ "write": {
+ "average": 522.2727272727273,
+ "range": 13.0,
+ "series": [
+ [
+ 4,
+ 514.0
+ ],
+ [
+ 5,
+ 519.0
+ ],
+ [
+ 6,
+ 523.0
+ ],
+ [
+ 7,
+ 524.0
+ ],
+ [
+ 8,
+ 526.0
+ ],
+ [
+ 9,
+ 527.0
+ ],
+ [
+ 10,
+ 524.0
+ ],
+ [
+ 11,
+ 520.0
+ ],
+ [
+ 12,
+ 521.0
+ ],
+ [
+ 13,
+ 523.0
+ ],
+ [
+ 14,
+ 524.0
+ ]
+ ],
+ "slope": 0.45454545454545453,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 608.6309282727273,
+ "range": 13.495996999999988,
+ "series": [
+ [
+ 4,
+ 599.818618
+ ],
+ [
+ 5,
+ 604.079727
+ ],
+ [
+ 6,
+ 609.527778
+ ],
+ [
+ 7,
+ 610.975561
+ ],
+ [
+ 8,
+ 613.314615
+ ],
+ [
+ 9,
+ 612.93468
+ ],
+ [
+ 10,
+ 610.557626
+ ],
+ [
+ 11,
+ 606.445349
+ ],
+ [
+ 12,
+ 606.979571
+ ],
+ [
+ 13,
+ 609.426323
+ ],
+ [
+ 14,
+ 610.880363
+ ]
+ ],
+ "slope": 0.5203006818181496,
+ "steady_state": true
+ },
+ "write": {
+ "average": 261.4501354545455,
+ "range": 6.084462999999971,
+ "series": [
+ [
+ 4,
+ 257.462848
+ ],
+ [
+ 5,
+ 259.786734
+ ],
+ [
+ 6,
+ 261.688853
+ ],
+ [
+ 7,
+ 262.425017
+ ],
+ [
+ 8,
+ 263.456851
+ ],
+ [
+ 9,
+ 263.547311
+ ],
+ [
+ 10,
+ 262.429939
+ ],
+ [
+ 11,
+ 260.32799
+ ],
+ [
+ 12,
+ 260.663981
+ ],
+ [
+ 13,
+ 261.654327
+ ],
+ [
+ 14,
+ 262.507639
+ ]
+ ],
+ "slope": 0.22180677272724797,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 764497.1991469089,
+ "range": 140375.23192300007,
+ "series": [
+ [
+ 4,
+ 848927.686926
+ ],
+ [
+ 5,
+ 797544.078184
+ ],
+ [
+ 6,
+ 757363.259077
+ ],
+ [
+ 7,
+ 728089.195358
+ ],
+ [
+ 8,
+ 708552.455003
+ ],
+ [
+ 9,
+ 754690.727534
+ ],
+ [
+ 10,
+ 793235.998106
+ ],
+ [
+ 11,
+ 780364.49709
+ ],
+ [
+ 12,
+ 762791.580243
+ ],
+ [
+ 13,
+ 745990.131378
+ ],
+ [
+ 14,
+ 731919.581717
+ ]
+ ],
+ "slope": -5324.88366549084,
+ "steady_state": true
+ },
+ "write": {
+ "average": 28815276.88039091,
+ "range": 496288.23420000076,
+ "series": [
+ [
+ 4,
+ 29090778.9543
+ ],
+ [
+ 5,
+ 28933952.7311
+ ],
+ [
+ 6,
+ 28802775.6777
+ ],
+ [
+ 7,
+ 28784924.3952
+ ],
+ [
+ 8,
+ 28709411.4788
+ ],
+ [
+ 9,
+ 28594490.7201
+ ],
+ [
+ 10,
+ 28634150.1367
+ ],
+ [
+ 11,
+ 28907630.8908
+ ],
+ [
+ 12,
+ 28909931.4169
+ ],
+ [
+ 13,
+ 28832309.7042
+ ],
+ [
+ 14,
+ 28767689.5785
+ ]
+ ],
+ "slope": -13912.728362724998,
+ "steady_state": true
+ }
+ }
+ }
+ },
+ "steady_state": {
+ "rw.queue-depth.8.block-size.2048": true
+ }
+ },
+ "duration": 900.983824968338,
+ "end_date": "2017-09-01 18:34:36",
+ "end_time": "2017-09-01 18:34:36",
+ "installer": "apex",
+ "password": "cubswin:)",
+ "pod_name": "Unknown",
+ "project_name": "storperf",
+ "public_network": "external",
+ "scenario": "Unknown",
+ "start_date": "2017-09-01 18:19:35",
+ "start_time": "2017-09-01 18:19:35",
+ "test_case": "Unknown",
+ "timestart": 1504289975.091599,
+ "username": "cirros",
+ "version": "Unknown",
+ "volume_size": 1
+ }
+ ]
+} \ No newline at end of file
diff --git a/docker/storperf-reporting/src/static/testdata/testresults-db-multi.json b/docker/storperf-reporting/src/static/testdata/testresults-db-multi.json
new file mode 100644
index 0000000..5a5069d
--- /dev/null
+++ b/docker/storperf-reporting/src/static/testdata/testresults-db-multi.json
@@ -0,0 +1,16532 @@
+{
+ "pagination": {
+ "current_page": 1,
+ "total_pages": 1
+ },
+ "results": [
+ {
+ "_id": "599e46d956a44e000ef82102",
+ "build_tag": "jenkins-storperf-daily-master-229",
+ "case_name": "snia_steady_state",
+ "criteria": "PASS",
+ "details": {
+ "agent_count": 4,
+ "build_tag": "jenkins-storperf-daily-master-229",
+ "disk_type": "SSD",
+ "duration": 9553.83879995346,
+ "metrics": {
+ "_warm_up.queue-depth.8.block-size.16384.read.bw": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.read.iops": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.read.lat_ns.mean": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.write.bw": 2442.159090909091,
+ "_warm_up.queue-depth.8.block-size.16384.write.iops": 152.67229545454546,
+ "_warm_up.queue-depth.8.block-size.16384.write.lat_ns.mean": 52399663.62545227,
+ "rr.queue-depth.1.block-size.16384.read.bw": 23278.675,
+ "rr.queue-depth.1.block-size.16384.read.iops": 1454.95852355,
+ "rr.queue-depth.1.block-size.16384.read.lat_ns.mean": 685014.20465675,
+ "rr.queue-depth.1.block-size.16384.write.bw": 0.0,
+ "rr.queue-depth.1.block-size.16384.write.iops": 0.0,
+ "rr.queue-depth.1.block-size.16384.write.lat_ns.mean": 0.0,
+ "rr.queue-depth.1.block-size.2048.read.bw": 3482.675,
+ "rr.queue-depth.1.block-size.2048.read.iops": 1741.5907665250002,
+ "rr.queue-depth.1.block-size.2048.read.lat_ns.mean": 571669.70510285,
+ "rr.queue-depth.1.block-size.2048.write.bw": 0.0,
+ "rr.queue-depth.1.block-size.2048.write.iops": 0.0,
+ "rr.queue-depth.1.block-size.2048.write.lat_ns.mean": 0.0,
+ "rr.queue-depth.4.block-size.16384.read.bw": 70798.15,
+ "rr.queue-depth.4.block-size.16384.read.iops": 4424.9373438249995,
+ "rr.queue-depth.4.block-size.16384.read.lat_ns.mean": 902947.5005382501,
+ "rr.queue-depth.4.block-size.16384.write.bw": 0.0,
+ "rr.queue-depth.4.block-size.16384.write.iops": 0.0,
+ "rr.queue-depth.4.block-size.16384.write.lat_ns.mean": 0.0,
+ "rr.queue-depth.4.block-size.2048.read.bw": 18071.95,
+ "rr.queue-depth.4.block-size.2048.read.iops": 9036.2386844,
+ "rr.queue-depth.4.block-size.2048.read.lat_ns.mean": 441942.079353375,
+ "rr.queue-depth.4.block-size.2048.write.bw": 0.0,
+ "rr.queue-depth.4.block-size.2048.write.iops": 0.0,
+ "rr.queue-depth.4.block-size.2048.write.lat_ns.mean": 0.0,
+ "rw.queue-depth.1.block-size.16384.read.bw": 1310.625,
+ "rw.queue-depth.1.block-size.16384.read.iops": 81.941868925,
+ "rw.queue-depth.1.block-size.16384.read.lat_ns.mean": 744755.4328218249,
+ "rw.queue-depth.1.block-size.16384.write.bw": 562.925,
+ "rw.queue-depth.1.block-size.16384.write.iops": 35.220991899999994,
+ "rw.queue-depth.1.block-size.16384.write.lat_ns.mean": 26672462.6469775,
+ "rw.queue-depth.1.block-size.2048.read.bw": 182.1,
+ "rw.queue-depth.1.block-size.2048.read.iops": 91.3338343,
+ "rw.queue-depth.1.block-size.2048.read.lat_ns.mean": 652775.7743236,
+ "rw.queue-depth.1.block-size.2048.write.bw": 77.925,
+ "rw.queue-depth.1.block-size.2048.write.iops": 39.2276214,
+ "rw.queue-depth.1.block-size.2048.write.lat_ns.mean": 23968749.281880002,
+ "rw.queue-depth.4.block-size.16384.read.bw": 3805.1136363636365,
+ "rw.queue-depth.4.block-size.16384.read.iops": 237.8518300227273,
+ "rw.queue-depth.4.block-size.16384.read.lat_ns.mean": 855206.7247332727,
+ "rw.queue-depth.4.block-size.16384.write.bw": 1626.7954545454545,
+ "rw.queue-depth.4.block-size.16384.write.iops": 101.71744379545454,
+ "rw.queue-depth.4.block-size.16384.write.lat_ns.mean": 37320054.15207728,
+ "rw.queue-depth.4.block-size.2048.read.bw": 551.4318181818181,
+ "rw.queue-depth.4.block-size.2048.read.iops": 275.97128706818177,
+ "rw.queue-depth.4.block-size.2048.read.lat_ns.mean": 776064.3235494773,
+ "rw.queue-depth.4.block-size.2048.write.bw": 236.13636363636363,
+ "rw.queue-depth.4.block-size.2048.write.iops": 118.33779147727273,
+ "rw.queue-depth.4.block-size.2048.write.lat_ns.mean": 31987561.42978636,
+ "wr.queue-depth.1.block-size.16384.read.bw": 0.0,
+ "wr.queue-depth.1.block-size.16384.read.iops": 0.0,
+ "wr.queue-depth.1.block-size.16384.read.lat_ns.mean": 0.0,
+ "wr.queue-depth.1.block-size.16384.write.bw": 269.3,
+ "wr.queue-depth.1.block-size.16384.write.iops": 16.87236295,
+ "wr.queue-depth.1.block-size.16384.write.lat_ns.mean": 59294358.97014,
+ "wr.queue-depth.1.block-size.2048.read.bw": 0.0,
+ "wr.queue-depth.1.block-size.2048.read.iops": 0.0,
+ "wr.queue-depth.1.block-size.2048.read.lat_ns.mean": 0.0,
+ "wr.queue-depth.1.block-size.2048.write.bw": 19.975,
+ "wr.queue-depth.1.block-size.2048.write.iops": 10.204217175,
+ "wr.queue-depth.1.block-size.2048.write.lat_ns.mean": 98120232.6412325,
+ "wr.queue-depth.4.block-size.16384.read.bw": 0.0,
+ "wr.queue-depth.4.block-size.16384.read.iops": 0.0,
+ "wr.queue-depth.4.block-size.16384.read.lat_ns.mean": 0.0,
+ "wr.queue-depth.4.block-size.16384.write.bw": 446.325,
+ "wr.queue-depth.4.block-size.16384.write.iops": 27.956442499999998,
+ "wr.queue-depth.4.block-size.16384.write.lat_ns.mean": 143127451.022475,
+ "wr.queue-depth.4.block-size.2048.read.bw": 0.0,
+ "wr.queue-depth.4.block-size.2048.read.iops": 0.0,
+ "wr.queue-depth.4.block-size.2048.read.lat_ns.mean": 0.0,
+ "wr.queue-depth.4.block-size.2048.write.bw": 30.8,
+ "wr.queue-depth.4.block-size.2048.write.iops": 15.681040024999998,
+ "wr.queue-depth.4.block-size.2048.write.lat_ns.mean": 255499390.59607497
+ },
+ "pod_name": "intel-pod9",
+ "public_network": "external",
+ "report_data": {
+ "_warm_up.queue-depth.8.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ],
+ [
+ 28,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 2442.159090909091,
+ "range": 26.25,
+ "series": [
+ [
+ 18,
+ 2447.25
+ ],
+ [
+ 19,
+ 2425.25
+ ],
+ [
+ 20,
+ 2433.75
+ ],
+ [
+ 21,
+ 2444.25
+ ],
+ [
+ 22,
+ 2446.25
+ ],
+ [
+ 23,
+ 2448.0
+ ],
+ [
+ 24,
+ 2450.0
+ ],
+ [
+ 25,
+ 2451.5
+ ],
+ [
+ 26,
+ 2436.5
+ ],
+ [
+ 27,
+ 2438.0
+ ],
+ [
+ 28,
+ 2443.0
+ ]
+ ],
+ "slope": 0.5113636363636364,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ],
+ [
+ 28,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 152.67229545454546,
+ "range": 1.654131250000006,
+ "series": [
+ [
+ 18,
+ 153.002465
+ ],
+ [
+ 19,
+ 151.60518525
+ ],
+ [
+ 20,
+ 152.17070425
+ ],
+ [
+ 21,
+ 152.795179
+ ],
+ [
+ 22,
+ 152.92461025
+ ],
+ [
+ 23,
+ 153.03740825
+ ],
+ [
+ 24,
+ 153.14771775
+ ],
+ [
+ 25,
+ 153.2593165
+ ],
+ [
+ 26,
+ 152.32215225
+ ],
+ [
+ 27,
+ 152.40347300000002
+ ],
+ [
+ 28,
+ 152.7270385
+ ]
+ ],
+ "slope": 0.03110677272726951,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ],
+ [
+ 28,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 52399663.62545227,
+ "range": 569567.4302249998,
+ "series": [
+ [
+ 18,
+ 52282143.740175
+ ],
+ [
+ 19,
+ 52769391.291575
+ ],
+ [
+ 20,
+ 52572977.703549996
+ ],
+ [
+ 21,
+ 52356297.584425
+ ],
+ [
+ 22,
+ 52314344.385175005
+ ],
+ [
+ 23,
+ 52274590.066
+ ],
+ [
+ 24,
+ 52234812.62019999
+ ],
+ [
+ 25,
+ 52199823.86135
+ ],
+ [
+ 26,
+ 52519633.930875
+ ],
+ [
+ 27,
+ 52492539.93277499
+ ],
+ [
+ 28,
+ 52379744.763875
+ ]
+ ],
+ "slope": -10653.73496227422,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 23278.675,
+ "range": 357.75,
+ "series": [
+ [
+ 0,
+ 23524.5
+ ],
+ [
+ 1,
+ 23470.5
+ ],
+ [
+ 2,
+ 23425.75
+ ],
+ [
+ 3,
+ 23275.0
+ ],
+ [
+ 4,
+ 23166.75
+ ],
+ [
+ 5,
+ 23177.0
+ ],
+ [
+ 6,
+ 23169.75
+ ],
+ [
+ 7,
+ 23185.5
+ ],
+ [
+ 8,
+ 23200.0
+ ],
+ [
+ 9,
+ 23192.0
+ ]
+ ],
+ "slope": -38.74393939393939,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 1454.95852355,
+ "range": 22.38621900000021,
+ "series": [
+ [
+ 0,
+ 1470.33406525
+ ],
+ [
+ 1,
+ 1466.9315737499999
+ ],
+ [
+ 2,
+ 1464.13754975
+ ],
+ [
+ 3,
+ 1454.7335749999997
+ ],
+ [
+ 4,
+ 1447.9478462499999
+ ],
+ [
+ 5,
+ 1448.588623
+ ],
+ [
+ 6,
+ 1448.1611979999998
+ ],
+ [
+ 7,
+ 1449.136414
+ ],
+ [
+ 8,
+ 1450.05599175
+ ],
+ [
+ 9,
+ 1449.55839875
+ ]
+ ],
+ "slope": -2.419346093939561,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 685014.20465675,
+ "range": 10277.795737750013,
+ "series": [
+ [
+ 0,
+ 678018.49524875
+ ],
+ [
+ 1,
+ 679499.34946025
+ ],
+ [
+ 2,
+ 680758.8571815
+ ],
+ [
+ 3,
+ 685080.5778377501
+ ],
+ [
+ 4,
+ 688296.2909865
+ ],
+ [
+ 5,
+ 687973.2626924999
+ ],
+ [
+ 6,
+ 688147.64543675
+ ],
+ [
+ 7,
+ 687643.637137
+ ],
+ [
+ 8,
+ 687251.014811
+ ],
+ [
+ 9,
+ 687472.9157755
+ ]
+ ],
+ "slope": 1106.9910089484852,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 3482.675,
+ "range": 81.0,
+ "series": [
+ [
+ 0,
+ 3422.25
+ ],
+ [
+ 1,
+ 3485.0
+ ],
+ [
+ 2,
+ 3497.0
+ ],
+ [
+ 3,
+ 3503.25
+ ],
+ [
+ 4,
+ 3499.0
+ ],
+ [
+ 5,
+ 3495.0
+ ],
+ [
+ 6,
+ 3490.0
+ ],
+ [
+ 7,
+ 3483.25
+ ],
+ [
+ 8,
+ 3477.75
+ ],
+ [
+ 9,
+ 3474.25
+ ]
+ ],
+ "slope": 1.846969696969697,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 1741.5907665250002,
+ "range": 40.35265900000013,
+ "series": [
+ [
+ 0,
+ 1711.4677935
+ ],
+ [
+ 1,
+ 1742.74011275
+ ],
+ [
+ 2,
+ 1748.66750375
+ ],
+ [
+ 3,
+ 1751.8204525
+ ],
+ [
+ 4,
+ 1749.7108684999998
+ ],
+ [
+ 5,
+ 1747.79429725
+ ],
+ [
+ 6,
+ 1745.2317174999998
+ ],
+ [
+ 7,
+ 1741.8611717499998
+ ],
+ [
+ 8,
+ 1739.1206825
+ ],
+ [
+ 9,
+ 1737.49306525
+ ]
+ ],
+ "slope": 0.9283454409090689,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 571669.70510285,
+ "range": 13564.286016499973,
+ "series": [
+ [
+ 0,
+ 581859.52372375
+ ],
+ [
+ 1,
+ 571291.19813375
+ ],
+ [
+ 2,
+ 569363.874197
+ ],
+ [
+ 3,
+ 568295.23770725
+ ],
+ [
+ 4,
+ 568954.6609914999
+ ],
+ [
+ 5,
+ 569593.2458615
+ ],
+ [
+ 6,
+ 570427.41187525
+ ],
+ [
+ 7,
+ 571525.8923985
+ ],
+ [
+ 8,
+ 572426.9007042501
+ ],
+ [
+ 9,
+ 572959.10543575
+ ]
+ ],
+ "slope": -329.14332252719186,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 70798.15,
+ "range": 68.5,
+ "series": [
+ [
+ 0,
+ 70755.25
+ ],
+ [
+ 1,
+ 70793.25
+ ],
+ [
+ 2,
+ 70823.5
+ ],
+ [
+ 3,
+ 70822.75
+ ],
+ [
+ 4,
+ 70823.75
+ ],
+ [
+ 5,
+ 70808.0
+ ],
+ [
+ 6,
+ 70798.0
+ ],
+ [
+ 7,
+ 70792.5
+ ],
+ [
+ 8,
+ 70787.5
+ ],
+ [
+ 9,
+ 70777.0
+ ]
+ ],
+ "slope": -0.5424242424242425,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 4424.9373438249995,
+ "range": 4.222559249999904,
+ "series": [
+ [
+ 0,
+ 4422.311134500001
+ ],
+ [
+ 1,
+ 4424.652576500001
+ ],
+ [
+ 2,
+ 4426.533693750001
+ ],
+ [
+ 3,
+ 4426.45693525
+ ],
+ [
+ 4,
+ 4426.523972999999
+ ],
+ [
+ 5,
+ 4425.5413714999995
+ ],
+ [
+ 6,
+ 4424.915972
+ ],
+ [
+ 7,
+ 4424.56032225
+ ],
+ [
+ 8,
+ 4424.27146875
+ ],
+ [
+ 9,
+ 4423.60599075
+ ]
+ ],
+ "slope": -0.03931149545464326,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 902947.5005382501,
+ "range": 867.8855902500218,
+ "series": [
+ [
+ 0,
+ 903478.1562600001
+ ],
+ [
+ 1,
+ 903004.60039675
+ ],
+ [
+ 2,
+ 902618.8256610001
+ ],
+ [
+ 3,
+ 902631.3474814999
+ ],
+ [
+ 4,
+ 902610.27066975
+ ],
+ [
+ 5,
+ 902823.41454275
+ ],
+ [
+ 6,
+ 902953.1293135
+ ],
+ [
+ 7,
+ 903028.50376225
+ ],
+ [
+ 8,
+ 903099.0596355001
+ ],
+ [
+ 9,
+ 903227.6976595
+ ]
+ ],
+ "slope": 9.902831163550868,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 18071.95,
+ "range": 154.25,
+ "series": [
+ [
+ 0,
+ 17968.75
+ ],
+ [
+ 1,
+ 18059.75
+ ],
+ [
+ 2,
+ 18080.5
+ ],
+ [
+ 3,
+ 18123.0
+ ],
+ [
+ 4,
+ 18107.25
+ ],
+ [
+ 5,
+ 18086.5
+ ],
+ [
+ 6,
+ 18068.0
+ ],
+ [
+ 7,
+ 18076.5
+ ],
+ [
+ 8,
+ 18078.5
+ ],
+ [
+ 9,
+ 18070.75
+ ]
+ ],
+ "slope": 5.112121212121212,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 9036.2386844,
+ "range": 77.11275874999956,
+ "series": [
+ [
+ 0,
+ 8984.65737175
+ ],
+ [
+ 1,
+ 9030.06075025
+ ],
+ [
+ 2,
+ 9040.52915425
+ ],
+ [
+ 3,
+ 9061.7701305
+ ],
+ [
+ 4,
+ 9053.944019
+ ],
+ [
+ 5,
+ 9043.54000675
+ ],
+ [
+ 6,
+ 9034.338848749998
+ ],
+ [
+ 7,
+ 9038.40084475
+ ],
+ [
+ 8,
+ 9039.473146749999
+ ],
+ [
+ 9,
+ 9035.67257125
+ ]
+ ],
+ "slope": 2.5556616121208804,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 441942.079353375,
+ "range": 3802.071887500002,
+ "series": [
+ [
+ 0,
+ 444498.5090825
+ ],
+ [
+ 1,
+ 442240.54937625
+ ],
+ [
+ 2,
+ 441721.771946
+ ],
+ [
+ 3,
+ 440696.437195
+ ],
+ [
+ 4,
+ 441082.73860625003
+ ],
+ [
+ 5,
+ 441581.835519
+ ],
+ [
+ 6,
+ 442016.55701075
+ ],
+ [
+ 7,
+ 441824.99160525005
+ ],
+ [
+ 8,
+ 441783.07098375
+ ],
+ [
+ 9,
+ 441974.33220899996
+ ]
+ ],
+ "slope": -126.93567244089012,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 1310.625,
+ "range": 101.25,
+ "series": [
+ [
+ 1,
+ 1254.25
+ ],
+ [
+ 2,
+ 1276.5
+ ],
+ [
+ 3,
+ 1270.75
+ ],
+ [
+ 4,
+ 1284.25
+ ],
+ [
+ 5,
+ 1305.5
+ ],
+ [
+ 6,
+ 1330.75
+ ],
+ [
+ 7,
+ 1336.25
+ ],
+ [
+ 8,
+ 1350.25
+ ],
+ [
+ 9,
+ 1355.5
+ ],
+ [
+ 10,
+ 1342.25
+ ]
+ ],
+ "slope": 11.659090909090908,
+ "steady_state": true
+ },
+ "write": {
+ "average": 562.925,
+ "range": 37.25,
+ "series": [
+ [
+ 1,
+ 562.25
+ ],
+ [
+ 2,
+ 549.25
+ ],
+ [
+ 3,
+ 542.0
+ ],
+ [
+ 4,
+ 546.0
+ ],
+ [
+ 5,
+ 558.0
+ ],
+ [
+ 6,
+ 568.0
+ ],
+ [
+ 7,
+ 572.25
+ ],
+ [
+ 8,
+ 577.25
+ ],
+ [
+ 9,
+ 579.25
+ ],
+ [
+ 10,
+ 575.0
+ ]
+ ],
+ "slope": 3.574242424242424,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 81.941868925,
+ "range": 6.324675749999997,
+ "series": [
+ [
+ 1,
+ 78.41648275
+ ],
+ [
+ 2,
+ 79.81019325
+ ],
+ [
+ 3,
+ 79.44523625000001
+ ],
+ [
+ 4,
+ 80.29072525
+ ],
+ [
+ 5,
+ 81.6181105
+ ],
+ [
+ 6,
+ 83.20611099999999
+ ],
+ [
+ 7,
+ 83.55752575
+ ],
+ [
+ 8,
+ 84.41663525
+ ],
+ [
+ 9,
+ 84.7411585
+ ],
+ [
+ 10,
+ 83.91651074999999
+ ]
+ ],
+ "slope": 0.7288630651515224,
+ "steady_state": true
+ },
+ "write": {
+ "average": 35.220991899999994,
+ "range": 2.32674875,
+ "series": [
+ [
+ 1,
+ 35.176824999999994
+ ],
+ [
+ 2,
+ 34.37592625
+ ],
+ [
+ 3,
+ 33.91217875
+ ],
+ [
+ 4,
+ 34.167818249999996
+ ],
+ [
+ 5,
+ 34.920485
+ ],
+ [
+ 6,
+ 35.53176125
+ ],
+ [
+ 7,
+ 35.80432975
+ ],
+ [
+ 8,
+ 36.10310175
+ ],
+ [
+ 9,
+ 36.2389275
+ ],
+ [
+ 10,
+ 35.9785655
+ ]
+ ],
+ "slope": 0.22261878181818193,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 744755.4328218249,
+ "range": 101110.05582925002,
+ "series": [
+ [
+ 1,
+ 822005.89203525
+ ],
+ [
+ 2,
+ 772464.8443979999
+ ],
+ [
+ 3,
+ 751715.141232
+ ],
+ [
+ 4,
+ 743972.11608375
+ ],
+ [
+ 5,
+ 735029.3901047499
+ ],
+ [
+ 6,
+ 729551.90465475
+ ],
+ [
+ 7,
+ 726158.24538475
+ ],
+ [
+ 8,
+ 723080.75612525
+ ],
+ [
+ 9,
+ 722680.20199375
+ ],
+ [
+ 10,
+ 720895.836206
+ ]
+ ],
+ "slope": -8851.963771962108,
+ "steady_state": true
+ },
+ "write": {
+ "average": 26672462.6469775,
+ "range": 1853926.9006499983,
+ "series": [
+ [
+ 1,
+ 26591572.3627
+ ],
+ [
+ 2,
+ 27296979.006024998
+ ],
+ [
+ 3,
+ 27750268.23435
+ ],
+ [
+ 4,
+ 27514845.418700002
+ ],
+ [
+ 5,
+ 26913649.720349997
+ ],
+ [
+ 6,
+ 26428035.127650004
+ ],
+ [
+ 7,
+ 26227505.887425
+ ],
+ [
+ 8,
+ 25999640.7372
+ ],
+ [
+ 9,
+ 25896341.3337
+ ],
+ [
+ 10,
+ 26105788.641675003
+ ]
+ ],
+ "slope": -165316.8961683331,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 182.1,
+ "range": 13.5,
+ "series": [
+ [
+ 1,
+ 172.5
+ ],
+ [
+ 2,
+ 182.25
+ ],
+ [
+ 3,
+ 186.0
+ ],
+ [
+ 4,
+ 184.25
+ ],
+ [
+ 5,
+ 184.25
+ ],
+ [
+ 6,
+ 184.75
+ ],
+ [
+ 7,
+ 183.0
+ ],
+ [
+ 8,
+ 181.25
+ ],
+ [
+ 9,
+ 181.25
+ ],
+ [
+ 10,
+ 181.5
+ ]
+ ],
+ "slope": 0.28484848484848485,
+ "steady_state": true
+ },
+ "write": {
+ "average": 77.925,
+ "range": 2.25,
+ "series": [
+ [
+ 1,
+ 76.5
+ ],
+ [
+ 2,
+ 78.5
+ ],
+ [
+ 3,
+ 78.5
+ ],
+ [
+ 4,
+ 78.5
+ ],
+ [
+ 5,
+ 78.75
+ ],
+ [
+ 6,
+ 78.75
+ ],
+ [
+ 7,
+ 77.75
+ ],
+ [
+ 8,
+ 77.0
+ ],
+ [
+ 9,
+ 77.5
+ ],
+ [
+ 10,
+ 77.5
+ ]
+ ],
+ "slope": -0.04696969696969697,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 91.3338343,
+ "range": 6.843188499999997,
+ "series": [
+ [
+ 1,
+ 86.467166
+ ],
+ [
+ 2,
+ 91.3800825
+ ],
+ [
+ 3,
+ 93.3103545
+ ],
+ [
+ 4,
+ 92.37313725000001
+ ],
+ [
+ 5,
+ 92.46950925
+ ],
+ [
+ 6,
+ 92.67890575000001
+ ],
+ [
+ 7,
+ 91.6733995
+ ],
+ [
+ 8,
+ 90.95597125
+ ],
+ [
+ 9,
+ 90.965409
+ ],
+ [
+ 10,
+ 91.064408
+ ]
+ ],
+ "slope": 0.15036806363636226,
+ "steady_state": true
+ },
+ "write": {
+ "average": 39.2276214,
+ "range": 1.0653259999999989,
+ "series": [
+ [
+ 1,
+ 38.619971750000005
+ ],
+ [
+ 2,
+ 39.377038750000004
+ ],
+ [
+ 3,
+ 39.58797825
+ ],
+ [
+ 4,
+ 39.446772
+ ],
+ [
+ 5,
+ 39.610499250000004
+ ],
+ [
+ 6,
+ 39.685297750000004
+ ],
+ [
+ 7,
+ 39.20491200000001
+ ],
+ [
+ 8,
+ 38.785641749999996
+ ],
+ [
+ 9,
+ 38.919427
+ ],
+ [
+ 10,
+ 39.038675500000004
+ ]
+ ],
+ "slope": -0.02483280303029901,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 652775.7743236,
+ "range": 46192.98928524996,
+ "series": [
+ [
+ 1,
+ 621775.8958852501
+ ],
+ [
+ 2,
+ 648223.14742175
+ ],
+ [
+ 3,
+ 645372.87529975
+ ],
+ [
+ 4,
+ 657276.1430370001
+ ],
+ [
+ 5,
+ 654257.19495375
+ ],
+ [
+ 6,
+ 655335.9018947501
+ ],
+ [
+ 7,
+ 655621.9879970001
+ ],
+ [
+ 8,
+ 657927.8251415
+ ],
+ [
+ 9,
+ 663997.8864347499
+ ],
+ [
+ 10,
+ 667968.8851705
+ ]
+ ],
+ "slope": 3545.764046594013,
+ "steady_state": true
+ },
+ "write": {
+ "average": 23968749.281880002,
+ "range": 842843.8421249986,
+ "series": [
+ [
+ 1,
+ 24504602.2941
+ ],
+ [
+ 2,
+ 23887023.372224998
+ ],
+ [
+ 3,
+ 23732428.53185
+ ],
+ [
+ 4,
+ 23804393.864874996
+ ],
+ [
+ 5,
+ 23711794.223699998
+ ],
+ [
+ 6,
+ 23661758.451975003
+ ],
+ [
+ 7,
+ 23966846.622950003
+ ],
+ [
+ 8,
+ 24232985.308650002
+ ],
+ [
+ 9,
+ 24135223.1466
+ ],
+ [
+ 10,
+ 24050437.001875
+ ]
+ ],
+ "slope": 3575.86167938926,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 3805.1136363636365,
+ "range": 57.0,
+ "series": [
+ [
+ 3,
+ 3789.0
+ ],
+ [
+ 4,
+ 3817.0
+ ],
+ [
+ 5,
+ 3821.0
+ ],
+ [
+ 6,
+ 3815.75
+ ],
+ [
+ 7,
+ 3828.75
+ ],
+ [
+ 8,
+ 3833.0
+ ],
+ [
+ 9,
+ 3827.0
+ ],
+ [
+ 10,
+ 3783.5
+ ],
+ [
+ 11,
+ 3776.0
+ ],
+ [
+ 12,
+ 3783.25
+ ],
+ [
+ 13,
+ 3782.0
+ ]
+ ],
+ "slope": -3.375,
+ "steady_state": true
+ },
+ "write": {
+ "average": 1626.7954545454545,
+ "range": 21.75,
+ "series": [
+ [
+ 3,
+ 1618.5
+ ],
+ [
+ 4,
+ 1632.5
+ ],
+ [
+ 5,
+ 1628.25
+ ],
+ [
+ 6,
+ 1630.25
+ ],
+ [
+ 7,
+ 1632.75
+ ],
+ [
+ 8,
+ 1637.5
+ ],
+ [
+ 9,
+ 1635.75
+ ],
+ [
+ 10,
+ 1618.75
+ ],
+ [
+ 11,
+ 1615.75
+ ],
+ [
+ 12,
+ 1621.5
+ ],
+ [
+ 13,
+ 1623.25
+ ]
+ ],
+ "slope": -0.7068181818181818,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 237.8518300227273,
+ "range": 3.5741677499999867,
+ "series": [
+ [
+ 3,
+ 236.85735475
+ ],
+ [
+ 4,
+ 238.59302474999998
+ ],
+ [
+ 5,
+ 238.84927825
+ ],
+ [
+ 6,
+ 238.52756725
+ ],
+ [
+ 7,
+ 239.31984175
+ ],
+ [
+ 8,
+ 239.585296
+ ],
+ [
+ 9,
+ 239.2257635
+ ],
+ [
+ 10,
+ 236.516558
+ ],
+ [
+ 11,
+ 236.01112825
+ ],
+ [
+ 12,
+ 236.4740965
+ ],
+ [
+ 13,
+ 236.41022125
+ ]
+ ],
+ "slope": -0.21219933863641688,
+ "steady_state": true
+ },
+ "write": {
+ "average": 101.71744379545454,
+ "range": 1.3891794999999831,
+ "series": [
+ [
+ 3,
+ 101.204595
+ ],
+ [
+ 4,
+ 102.065697
+ ],
+ [
+ 5,
+ 101.8206255
+ ],
+ [
+ 6,
+ 101.929414
+ ],
+ [
+ 7,
+ 102.0802785
+ ],
+ [
+ 8,
+ 102.40876549999999
+ ],
+ [
+ 9,
+ 102.27807725
+ ],
+ [
+ 10,
+ 101.20648625
+ ],
+ [
+ 11,
+ 101.019586
+ ],
+ [
+ 12,
+ 101.3810635
+ ],
+ [
+ 13,
+ 101.49729325
+ ]
+ ],
+ "slope": -0.04478379999999869,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 855206.7247332727,
+ "range": 110578.93891725002,
+ "series": [
+ [
+ 3,
+ 932853.3201380001
+ ],
+ [
+ 4,
+ 897743.1733765
+ ],
+ [
+ 5,
+ 871288.74400125
+ ],
+ [
+ 6,
+ 855873.4151395
+ ],
+ [
+ 7,
+ 843855.86137025
+ ],
+ [
+ 8,
+ 840175.37097675
+ ],
+ [
+ 9,
+ 837188.414013
+ ],
+ [
+ 10,
+ 834072.30381025
+ ],
+ [
+ 11,
+ 828519.8494099999
+ ],
+ [
+ 12,
+ 822274.38122075
+ ],
+ [
+ 13,
+ 843429.13860975
+ ]
+ ],
+ "slope": -8432.476636852312,
+ "steady_state": true
+ },
+ "write": {
+ "average": 37320054.15207728,
+ "range": 576300.5183249936,
+ "series": [
+ [
+ 3,
+ 37338969.157900006
+ ],
+ [
+ 4,
+ 37088417.18935
+ ],
+ [
+ 5,
+ 37237218.661575004
+ ],
+ [
+ 6,
+ 37235915.148274995
+ ],
+ [
+ 7,
+ 37201201.509100005
+ ],
+ [
+ 8,
+ 37078883.965550005
+ ],
+ [
+ 9,
+ 37145597.079525
+ ],
+ [
+ 10,
+ 37567921.3586
+ ],
+ [
+ 11,
+ 37655184.483875
+ ],
+ [
+ 12,
+ 37531768.67039999
+ ],
+ [
+ 13,
+ 37439518.448699996
+ ]
+ ],
+ "slope": 37622.343965218286,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 551.4318181818181,
+ "range": 10.0,
+ "series": [
+ [
+ 7,
+ 549.5
+ ],
+ [
+ 8,
+ 546.75
+ ],
+ [
+ 9,
+ 547.75
+ ],
+ [
+ 10,
+ 550.0
+ ],
+ [
+ 11,
+ 548.75
+ ],
+ [
+ 12,
+ 550.5
+ ],
+ [
+ 13,
+ 551.5
+ ],
+ [
+ 14,
+ 555.0
+ ],
+ [
+ 15,
+ 555.75
+ ],
+ [
+ 16,
+ 556.75
+ ],
+ [
+ 17,
+ 553.5
+ ]
+ ],
+ "slope": 0.8795454545454545,
+ "steady_state": true
+ },
+ "write": {
+ "average": 236.13636363636363,
+ "range": 5.25,
+ "series": [
+ [
+ 7,
+ 234.75
+ ],
+ [
+ 8,
+ 233.5
+ ],
+ [
+ 9,
+ 233.75
+ ],
+ [
+ 10,
+ 235.0
+ ],
+ [
+ 11,
+ 235.0
+ ],
+ [
+ 12,
+ 236.0
+ ],
+ [
+ 13,
+ 237.0
+ ],
+ [
+ 14,
+ 238.0
+ ],
+ [
+ 15,
+ 238.0
+ ],
+ [
+ 16,
+ 238.75
+ ],
+ [
+ 17,
+ 237.75
+ ]
+ ],
+ "slope": 0.5159090909090909,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 275.97128706818177,
+ "range": 4.90368275000003,
+ "series": [
+ [
+ 7,
+ 275.1130405
+ ],
+ [
+ 8,
+ 273.70902175
+ ],
+ [
+ 9,
+ 274.13107274999993
+ ],
+ [
+ 10,
+ 275.24420575
+ ],
+ [
+ 11,
+ 274.52797225
+ ],
+ [
+ 12,
+ 275.40411925
+ ],
+ [
+ 13,
+ 275.95782975
+ ],
+ [
+ 14,
+ 277.78932
+ ],
+ [
+ 15,
+ 278.27340725
+ ],
+ [
+ 16,
+ 278.6127045
+ ],
+ [
+ 17,
+ 276.921464
+ ]
+ ],
+ "slope": 0.4327630727273828,
+ "steady_state": true
+ },
+ "write": {
+ "average": 118.33779147727273,
+ "range": 2.6493554999999844,
+ "series": [
+ [
+ 7,
+ 117.53103974999999
+ ],
+ [
+ 8,
+ 116.95441875
+ ],
+ [
+ 9,
+ 117.190206
+ ],
+ [
+ 10,
+ 117.87310550000001
+ ],
+ [
+ 11,
+ 117.83548400000001
+ ],
+ [
+ 12,
+ 118.33194
+ ],
+ [
+ 13,
+ 118.6819445
+ ],
+ [
+ 14,
+ 119.280167
+ ],
+ [
+ 15,
+ 119.41626525000001
+ ],
+ [
+ 16,
+ 119.60377424999999
+ ],
+ [
+ 17,
+ 119.01736125
+ ]
+ ],
+ "slope": 0.25788900681818483,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 776064.3235494773,
+ "range": 137818.4189197499,
+ "series": [
+ [
+ 7,
+ 863992.89186925
+ ],
+ [
+ 8,
+ 834468.69317075
+ ],
+ [
+ 9,
+ 812117.7467410001
+ ],
+ [
+ 10,
+ 794354.0940095
+ ],
+ [
+ 11,
+ 777927.1127770001
+ ],
+ [
+ 12,
+ 763903.82277575
+ ],
+ [
+ 13,
+ 752451.767848
+ ],
+ [
+ 14,
+ 743534.5682617499
+ ],
+ [
+ 15,
+ 737270.8734619999
+ ],
+ [
+ 16,
+ 730511.51517975
+ ],
+ [
+ 17,
+ 726174.4729495001
+ ]
+ ],
+ "slope": -13241.59838931127,
+ "steady_state": true
+ },
+ "write": {
+ "average": 31987561.42978636,
+ "range": 506973.9770999998,
+ "series": [
+ [
+ 7,
+ 32005053.237275004
+ ],
+ [
+ 8,
+ 32242932.03055
+ ],
+ [
+ 9,
+ 32226980.84875
+ ],
+ [
+ 10,
+ 32074567.632749997
+ ],
+ [
+ 11,
+ 32127470.278575003
+ ],
+ [
+ 12,
+ 32019408.51935
+ ],
+ [
+ 13,
+ 31948293.288824998
+ ],
+ [
+ 14,
+ 31797168.148775
+ ],
+ [
+ 15,
+ 31772295.639025
+ ],
+ [
+ 16,
+ 31735958.05345
+ ],
+ [
+ 17,
+ 31913048.050325
+ ]
+ ],
+ "slope": -41690.48572750249,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 269.3,
+ "range": 9.0,
+ "series": [
+ [
+ 0,
+ 268.25
+ ],
+ [
+ 1,
+ 269.25
+ ],
+ [
+ 2,
+ 267.5
+ ],
+ [
+ 3,
+ 273.25
+ ],
+ [
+ 4,
+ 275.0
+ ],
+ [
+ 5,
+ 271.75
+ ],
+ [
+ 6,
+ 268.75
+ ],
+ [
+ 7,
+ 266.75
+ ],
+ [
+ 8,
+ 266.5
+ ],
+ [
+ 9,
+ 266.0
+ ]
+ ],
+ "slope": -0.36363636363636365,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 16.87236295,
+ "range": 0.5536242499999986,
+ "series": [
+ [
+ 0,
+ 16.80591225
+ ],
+ [
+ 1,
+ 16.887452500000002
+ ],
+ [
+ 2,
+ 16.760388999999996
+ ],
+ [
+ 3,
+ 17.121153
+ ],
+ [
+ 4,
+ 17.2199365
+ ],
+ [
+ 5,
+ 17.015619
+ ],
+ [
+ 6,
+ 16.83225625
+ ],
+ [
+ 7,
+ 16.72180325
+ ],
+ [
+ 8,
+ 16.692795500000003
+ ],
+ [
+ 9,
+ 16.66631225
+ ]
+ ],
+ "slope": -0.02353294242424013,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 59294358.97014,
+ "range": 1916589.0123249888,
+ "series": [
+ [
+ 0,
+ 59522176.288575
+ ],
+ [
+ 1,
+ 59236643.531124994
+ ],
+ [
+ 2,
+ 59676371.742249995
+ ],
+ [
+ 3,
+ 58416022.216175
+ ],
+ [
+ 4,
+ 58087143.683450006
+ ],
+ [
+ 5,
+ 58771541.297725
+ ],
+ [
+ 6,
+ 59421065.549375005
+ ],
+ [
+ 7,
+ 59809931.3152
+ ],
+ [
+ 8,
+ 59998961.38175
+ ],
+ [
+ 9,
+ 60003732.695774995
+ ]
+ ],
+ "slope": 85076.10968362981,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 19.975,
+ "range": 0.25,
+ "series": [
+ [
+ 0,
+ 19.75
+ ],
+ [
+ 1,
+ 20.0
+ ],
+ [
+ 2,
+ 20.0
+ ],
+ [
+ 3,
+ 20.0
+ ],
+ [
+ 4,
+ 20.0
+ ],
+ [
+ 5,
+ 20.0
+ ],
+ [
+ 6,
+ 20.0
+ ],
+ [
+ 7,
+ 20.0
+ ],
+ [
+ 8,
+ 20.0
+ ],
+ [
+ 9,
+ 20.0
+ ]
+ ],
+ "slope": 0.013636363636363636,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 10.204217175,
+ "range": 0.26680874999999915,
+ "series": [
+ [
+ 0,
+ 10.074453250000001
+ ],
+ [
+ 1,
+ 10.341262
+ ],
+ [
+ 2,
+ 10.3328155
+ ],
+ [
+ 3,
+ 10.31187825
+ ],
+ [
+ 4,
+ 10.1951675
+ ],
+ [
+ 5,
+ 10.1826555
+ ],
+ [
+ 6,
+ 10.177904999999999
+ ],
+ [
+ 7,
+ 10.093086
+ ],
+ [
+ 8,
+ 10.146526
+ ],
+ [
+ 9,
+ 10.186422749999998
+ ]
+ ],
+ "slope": -0.011930337878788343,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 98120232.6412325,
+ "range": 2629237.6797500104,
+ "series": [
+ [
+ 0,
+ 99449931.07772501
+ ],
+ [
+ 1,
+ 97294419.27002499
+ ],
+ [
+ 2,
+ 96820693.397975
+ ],
+ [
+ 3,
+ 97011027.33095
+ ],
+ [
+ 4,
+ 98122352.925825
+ ],
+ [
+ 5,
+ 98387995.18522501
+ ],
+ [
+ 6,
+ 98283875.1544
+ ],
+ [
+ 7,
+ 99089735.20230001
+ ],
+ [
+ 8,
+ 98567385.477125
+ ],
+ [
+ 9,
+ 98174911.390775
+ ]
+ ],
+ "slope": 77969.58193044951,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 446.325,
+ "range": 34.5,
+ "series": [
+ [
+ 0,
+ 472.25
+ ],
+ [
+ 1,
+ 462.0
+ ],
+ [
+ 2,
+ 447.75
+ ],
+ [
+ 3,
+ 437.75
+ ],
+ [
+ 4,
+ 439.75
+ ],
+ [
+ 5,
+ 442.0
+ ],
+ [
+ 6,
+ 442.25
+ ],
+ [
+ 7,
+ 440.0
+ ],
+ [
+ 8,
+ 441.0
+ ],
+ [
+ 9,
+ 438.5
+ ]
+ ],
+ "slope": -2.871212121212121,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 27.956442499999998,
+ "range": 2.2239615000000015,
+ "series": [
+ [
+ 0,
+ 29.6296295
+ ],
+ [
+ 1,
+ 28.961062499999997
+ ],
+ [
+ 2,
+ 28.05607075
+ ],
+ [
+ 3,
+ 27.405668
+ ],
+ [
+ 4,
+ 27.544134
+ ],
+ [
+ 5,
+ 27.676602
+ ],
+ [
+ 6,
+ 27.699227999999998
+ ],
+ [
+ 7,
+ 27.53501175
+ ],
+ [
+ 8,
+ 27.61699825
+ ],
+ [
+ 9,
+ 27.44002025
+ ]
+ ],
+ "slope": -0.18610351515151374,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 143127451.022475,
+ "range": 10436229.717999995,
+ "series": [
+ [
+ 0,
+ 135255958.74175
+ ],
+ [
+ 1,
+ 138033159.43375
+ ],
+ [
+ 2,
+ 142620885.35325
+ ],
+ [
+ 3,
+ 145692188.45975
+ ],
+ [
+ 4,
+ 144989367.80425
+ ],
+ [
+ 5,
+ 144476146.382
+ ],
+ [
+ 6,
+ 144398386.94925
+ ],
+ [
+ 7,
+ 145286895.76425
+ ],
+ [
+ 8,
+ 144844007.251
+ ],
+ [
+ 9,
+ 145677514.0855
+ ]
+ ],
+ "slope": 911547.6297924158,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 30.8,
+ "range": 2.25,
+ "series": [
+ [
+ 0,
+ 32.25
+ ],
+ [
+ 1,
+ 32.25
+ ],
+ [
+ 2,
+ 31.25
+ ],
+ [
+ 3,
+ 30.75
+ ],
+ [
+ 4,
+ 30.5
+ ],
+ [
+ 5,
+ 30.5
+ ],
+ [
+ 6,
+ 30.25
+ ],
+ [
+ 7,
+ 30.0
+ ],
+ [
+ 8,
+ 30.25
+ ],
+ [
+ 9,
+ 30.0
+ ]
+ ],
+ "slope": -0.2545454545454545,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 15.681040024999998,
+ "range": 1.2379174999999982,
+ "series": [
+ [
+ 0,
+ 16.38406675
+ ],
+ [
+ 1,
+ 16.47253125
+ ],
+ [
+ 2,
+ 15.95319125
+ ],
+ [
+ 3,
+ 15.608116999999998
+ ],
+ [
+ 4,
+ 15.546282999999999
+ ],
+ [
+ 5,
+ 15.532719250000001
+ ],
+ [
+ 6,
+ 15.43974175
+ ],
+ [
+ 7,
+ 15.234613750000001
+ ],
+ [
+ 8,
+ 15.337988
+ ],
+ [
+ 9,
+ 15.30114825
+ ]
+ ],
+ "slope": -0.13211906818181557,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 0,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 255499390.59607497,
+ "range": 19247145.36224997,
+ "series": [
+ [
+ 0,
+ 244860763.71899998
+ ],
+ [
+ 1,
+ 243075480.2195
+ ],
+ [
+ 2,
+ 251384643.62575
+ ],
+ [
+ 3,
+ 256453871.81949997
+ ],
+ [
+ 4,
+ 257315289.15225
+ ],
+ [
+ 5,
+ 257678887.43675
+ ],
+ [
+ 6,
+ 259230474.51975
+ ],
+ [
+ 7,
+ 262322625.58174998
+ ],
+ [
+ 8,
+ 260897607.8225
+ ],
+ [
+ 9,
+ 261774262.064
+ ]
+ ],
+ "slope": 2062786.0272197193,
+ "steady_state": true
+ }
+ }
+ }
+ },
+ "scenario_name": "os-nosdn-nofeature-noha",
+ "steady_state": {
+ "_warm_up.queue-depth.8.block-size.16384": true,
+ "rr.queue-depth.1.block-size.16384": true,
+ "rr.queue-depth.1.block-size.2048": true,
+ "rr.queue-depth.4.block-size.16384": true,
+ "rr.queue-depth.4.block-size.2048": true,
+ "rw.queue-depth.1.block-size.16384": true,
+ "rw.queue-depth.1.block-size.2048": true,
+ "rw.queue-depth.4.block-size.16384": true,
+ "rw.queue-depth.4.block-size.2048": true,
+ "wr.queue-depth.1.block-size.16384": true,
+ "wr.queue-depth.1.block-size.2048": true,
+ "wr.queue-depth.4.block-size.16384": true,
+ "wr.queue-depth.4.block-size.2048": true
+ },
+ "storage_node_count": 4,
+ "test_case": "snia_steady_state",
+ "timestart": 1503535495.555167,
+ "version": "master",
+ "volume_size": 4
+ },
+ "installer": "apex",
+ "pod_name": "intel-pod9",
+ "project_name": "storperf",
+ "public": "true",
+ "scenario": "os-nosdn-nofeature-noha",
+ "start_date": "2017-08-24 00:44:55",
+ "stop_date": "2017-08-24 03:24:09",
+ "trust_indicator": null,
+ "user": null,
+ "version": "master"
+ },
+ {
+ "_id": "599e1d5d56a44e000ef82100",
+ "build_tag": "jenkins-storperf-daily-danube-137",
+ "case_name": "snia_steady_state",
+ "criteria": "PASS",
+ "details": {
+ "agent_count": 4,
+ "build_tag": "jenkins-storperf-daily-danube-137",
+ "disk_type": "SSD",
+ "duration": 8488.861106872559,
+ "metrics": {
+ "_warm_up.queue-depth.8.block-size.16384.read.bw": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.read.iops": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.read.lat.mean": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.write.bw": 2564.474358974359,
+ "_warm_up.queue-depth.8.block-size.16384.write.iops": 160.3178846153846,
+ "_warm_up.queue-depth.8.block-size.16384.write.lat.mean": 49906.32294871795,
+ "rr.queue-depth.1.block-size.16384.read.bw": 21873.95,
+ "rr.queue-depth.1.block-size.16384.read.iops": 1367.158,
+ "rr.queue-depth.1.block-size.16384.read.lat.mean": 730.687,
+ "rr.queue-depth.1.block-size.16384.write.bw": 0.0,
+ "rr.queue-depth.1.block-size.16384.write.iops": 0.0,
+ "rr.queue-depth.1.block-size.16384.write.lat.mean": 0.0,
+ "rr.queue-depth.1.block-size.2048.read.bw": 3204.3,
+ "rr.queue-depth.1.block-size.2048.read.iops": 1602.4444999999998,
+ "rr.queue-depth.1.block-size.2048.read.lat.mean": 623.0723333333332,
+ "rr.queue-depth.1.block-size.2048.write.bw": 0.0,
+ "rr.queue-depth.1.block-size.2048.write.iops": 0.0,
+ "rr.queue-depth.1.block-size.2048.write.lat.mean": 0.0,
+ "rr.queue-depth.4.block-size.16384.read.bw": 72823.1,
+ "rr.queue-depth.4.block-size.16384.read.iops": 4551.4905,
+ "rr.queue-depth.4.block-size.16384.read.lat.mean": 877.48975,
+ "rr.queue-depth.4.block-size.16384.write.bw": 0.0,
+ "rr.queue-depth.4.block-size.16384.write.iops": 0.0,
+ "rr.queue-depth.4.block-size.16384.write.lat.mean": 0.0,
+ "rr.queue-depth.4.block-size.2048.read.bw": 18023.55,
+ "rr.queue-depth.4.block-size.2048.read.iops": 9012.054499999998,
+ "rr.queue-depth.4.block-size.2048.read.lat.mean": 442.88075,
+ "rr.queue-depth.4.block-size.2048.write.bw": 0.0,
+ "rr.queue-depth.4.block-size.2048.write.iops": 0.0,
+ "rr.queue-depth.4.block-size.2048.write.lat.mean": 0.0,
+ "rw.queue-depth.1.block-size.16384.read.bw": 1333.275,
+ "rw.queue-depth.1.block-size.16384.read.iops": 83.36150000000002,
+ "rw.queue-depth.1.block-size.16384.read.lat.mean": 804.327,
+ "rw.queue-depth.1.block-size.16384.write.bw": 570.625,
+ "rw.queue-depth.1.block-size.16384.write.iops": 35.702,
+ "rw.queue-depth.1.block-size.16384.write.lat.mean": 26133.83325,
+ "rw.queue-depth.1.block-size.2048.read.bw": 179.43333333333334,
+ "rw.queue-depth.1.block-size.2048.read.iops": 89.94,
+ "rw.queue-depth.1.block-size.2048.read.lat.mean": 656.7073333333333,
+ "rw.queue-depth.1.block-size.2048.write.bw": 76.66666666666666,
+ "rw.queue-depth.1.block-size.2048.write.iops": 38.56933333333334,
+ "rw.queue-depth.1.block-size.2048.write.lat.mean": 24392.78733333333,
+ "rw.queue-depth.4.block-size.16384.read.bw": 3730.525,
+ "rw.queue-depth.4.block-size.16384.read.iops": 233.19475000000003,
+ "rw.queue-depth.4.block-size.16384.read.lat.mean": 917.9795,
+ "rw.queue-depth.4.block-size.16384.write.bw": 1599.475,
+ "rw.queue-depth.4.block-size.16384.write.iops": 100.01575,
+ "rw.queue-depth.4.block-size.16384.write.lat.mean": 37857.07575,
+ "rw.queue-depth.4.block-size.2048.read.bw": 541.0,
+ "rw.queue-depth.4.block-size.2048.read.iops": 270.77562500000005,
+ "rw.queue-depth.4.block-size.2048.read.lat.mean": 819.9216666666666,
+ "rw.queue-depth.4.block-size.2048.write.bw": 231.9375,
+ "rw.queue-depth.4.block-size.2048.write.iops": 116.22145833333332,
+ "rw.queue-depth.4.block-size.2048.write.lat.mean": 32502.262708333335,
+ "wr.queue-depth.1.block-size.16384.read.bw": 0.0,
+ "wr.queue-depth.1.block-size.16384.read.iops": 0.0,
+ "wr.queue-depth.1.block-size.16384.read.lat.mean": 0.0,
+ "wr.queue-depth.1.block-size.16384.write.bw": 255.675,
+ "wr.queue-depth.1.block-size.16384.write.iops": 16.014499999999998,
+ "wr.queue-depth.1.block-size.16384.write.lat.mean": 62550.03525,
+ "wr.queue-depth.1.block-size.2048.read.bw": 0.0,
+ "wr.queue-depth.1.block-size.2048.read.iops": 0.0,
+ "wr.queue-depth.1.block-size.2048.read.lat.mean": 0.0,
+ "wr.queue-depth.1.block-size.2048.write.bw": 20.725,
+ "wr.queue-depth.1.block-size.2048.write.iops": 10.62075,
+ "wr.queue-depth.1.block-size.2048.write.lat.mean": 94289.97625,
+ "wr.queue-depth.4.block-size.16384.read.bw": 0.0,
+ "wr.queue-depth.4.block-size.16384.read.iops": 0.0,
+ "wr.queue-depth.4.block-size.16384.read.lat.mean": 0.0,
+ "wr.queue-depth.4.block-size.16384.write.bw": 431.55,
+ "wr.queue-depth.4.block-size.16384.write.iops": 27.0265,
+ "wr.queue-depth.4.block-size.16384.write.lat.mean": 148132.73825,
+ "wr.queue-depth.4.block-size.2048.read.bw": 0.0,
+ "wr.queue-depth.4.block-size.2048.read.iops": 0.0,
+ "wr.queue-depth.4.block-size.2048.read.lat.mean": 0.0,
+ "wr.queue-depth.4.block-size.2048.write.bw": 29.75,
+ "wr.queue-depth.4.block-size.2048.write.iops": 15.151250000000001,
+ "wr.queue-depth.4.block-size.2048.write.lat.mean": 264400.87025000004
+ },
+ "pod_name": "intel-pod9",
+ "public_network": "external",
+ "report_data": {
+ "_warm_up.queue-depth.8.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 16,
+ 0.0
+ ],
+ [
+ 17,
+ 0.0
+ ],
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 2564.474358974359,
+ "range": 54.25,
+ "series": [
+ [
+ 16,
+ 2540.75
+ ],
+ [
+ 17,
+ 2547.25
+ ],
+ [
+ 18,
+ 2551.25
+ ],
+ [
+ 19,
+ 2559.0
+ ],
+ [
+ 20,
+ 2562.0
+ ],
+ [
+ 21,
+ 2570.0
+ ],
+ [
+ 22,
+ 2570.5
+ ],
+ [
+ 23,
+ 2570.25
+ ],
+ [
+ 24,
+ 2576.0
+ ],
+ [
+ 25,
+ 2576.5
+ ],
+ [
+ 26,
+ 2563.0
+ ],
+ [
+ 27,
+ 2595.0
+ ],
+ [
+ 27,
+ 2556.6666666666665
+ ]
+ ],
+ "slope": 2.7486498649864988,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 16,
+ 0.0
+ ],
+ [
+ 17,
+ 0.0
+ ],
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 160.3178846153846,
+ "range": 3.3574999999999875,
+ "series": [
+ [
+ 16,
+ 158.8425
+ ],
+ [
+ 17,
+ 159.24
+ ],
+ [
+ 18,
+ 159.5025
+ ],
+ [
+ 19,
+ 159.975
+ ],
+ [
+ 20,
+ 160.16
+ ],
+ [
+ 21,
+ 160.665
+ ],
+ [
+ 22,
+ 160.7125
+ ],
+ [
+ 23,
+ 160.675
+ ],
+ [
+ 24,
+ 161.0375
+ ],
+ [
+ 25,
+ 161.075
+ ],
+ [
+ 26,
+ 160.2175
+ ],
+ [
+ 27,
+ 162.2
+ ],
+ [
+ 27,
+ 159.82999999999998
+ ]
+ ],
+ "slope": 0.17047367236728073,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 16,
+ 0.0
+ ],
+ [
+ 17,
+ 0.0
+ ],
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 49906.32294871795,
+ "range": 1051.4650000000038,
+ "series": [
+ [
+ 16,
+ 50370.915
+ ],
+ [
+ 17,
+ 50243.555
+ ],
+ [
+ 18,
+ 50160.075000000004
+ ],
+ [
+ 19,
+ 50013.705
+ ],
+ [
+ 20,
+ 49954.674999999996
+ ],
+ [
+ 21,
+ 49796.520000000004
+ ],
+ [
+ 22,
+ 49783.842500000006
+ ],
+ [
+ 23,
+ 49795.23
+ ],
+ [
+ 24,
+ 49682.1075
+ ],
+ [
+ 25,
+ 49670.755000000005
+ ],
+ [
+ 26,
+ 49936.025
+ ],
+ [
+ 27,
+ 49319.45
+ ],
+ [
+ 27,
+ 50055.34333333333
+ ]
+ ],
+ "slope": -53.44187893790237,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 21873.95,
+ "range": 486.0,
+ "series": [
+ [
+ 1,
+ 21644.5
+ ],
+ [
+ 1,
+ 21553.5
+ ],
+ [
+ 2,
+ 21923.0
+ ],
+ [
+ 2,
+ 21670.5
+ ],
+ [
+ 3,
+ 21988.0
+ ],
+ [
+ 3,
+ 21883.5
+ ],
+ [
+ 4,
+ 22039.5
+ ],
+ [
+ 4,
+ 21989.0
+ ],
+ [
+ 5,
+ 22024.5
+ ],
+ [
+ 5,
+ 22023.5
+ ]
+ ],
+ "slope": 106.75,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 1367.158,
+ "range": 30.345000000000027,
+ "series": [
+ [
+ 1,
+ 1352.815
+ ],
+ [
+ 1,
+ 1347.145
+ ],
+ [
+ 2,
+ 1370.2399999999998
+ ],
+ [
+ 2,
+ 1354.4450000000002
+ ],
+ [
+ 3,
+ 1374.2849999999999
+ ],
+ [
+ 3,
+ 1367.7649999999999
+ ],
+ [
+ 4,
+ 1377.49
+ ],
+ [
+ 4,
+ 1374.335
+ ],
+ [
+ 5,
+ 1376.56
+ ],
+ [
+ 5,
+ 1376.5
+ ]
+ ],
+ "slope": 6.667000000000116,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 730.687,
+ "range": 16.089999999999918,
+ "series": [
+ [
+ 1,
+ 738.9549999999999
+ ],
+ [
+ 1,
+ 741.29
+ ],
+ [
+ 2,
+ 729.55
+ ],
+ [
+ 2,
+ 736.95
+ ],
+ [
+ 3,
+ 727.19
+ ],
+ [
+ 3,
+ 730.02
+ ],
+ [
+ 4,
+ 725.2
+ ],
+ [
+ 4,
+ 726.615
+ ],
+ [
+ 5,
+ 725.7950000000001
+ ],
+ [
+ 5,
+ 725.3050000000001
+ ]
+ ],
+ "slope": -3.6487499999998545,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 3204.3,
+ "range": 477.5,
+ "series": [
+ [
+ 1,
+ 3300.3333333333335
+ ],
+ [
+ 1,
+ 2995.0
+ ],
+ [
+ 2,
+ 3323.3333333333335
+ ],
+ [
+ 2,
+ 3042.0
+ ],
+ [
+ 3,
+ 3338.0
+ ],
+ [
+ 3,
+ 3071.0
+ ],
+ [
+ 4,
+ 3343.3333333333335
+ ],
+ [
+ 4,
+ 3080.0
+ ],
+ [
+ 5,
+ 3472.5
+ ],
+ [
+ 5,
+ 3077.5
+ ]
+ ],
+ "slope": 28.36666666666744,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 1602.4444999999998,
+ "range": 239.135,
+ "series": [
+ [
+ 1,
+ 1650.4399999999998
+ ],
+ [
+ 1,
+ 1497.59
+ ],
+ [
+ 2,
+ 1661.9733333333334
+ ],
+ [
+ 2,
+ 1521.44
+ ],
+ [
+ 3,
+ 1669.3066666666666
+ ],
+ [
+ 3,
+ 1535.83
+ ],
+ [
+ 4,
+ 1671.8100000000002
+ ],
+ [
+ 4,
+ 1540.4
+ ],
+ [
+ 5,
+ 1736.725
+ ],
+ [
+ 5,
+ 1538.9299999999998
+ ]
+ ],
+ "slope": 14.202333333333662,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 623.0723333333332,
+ "range": 90.89999999999998,
+ "series": [
+ [
+ 1,
+ 604.3433333333334
+ ],
+ [
+ 1,
+ 664.17
+ ],
+ [
+ 2,
+ 600.5533333333334
+ ],
+ [
+ 2,
+ 653.7
+ ],
+ [
+ 3,
+ 598.15
+ ],
+ [
+ 3,
+ 647.55
+ ],
+ [
+ 4,
+ 597.0966666666667
+ ],
+ [
+ 4,
+ 645.65
+ ],
+ [
+ 5,
+ 573.27
+ ],
+ [
+ 5,
+ 646.24
+ ]
+ ],
+ "slope": -5.475666666666512,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 72823.1,
+ "range": 70.25,
+ "series": [
+ [
+ 1,
+ 72831.0
+ ],
+ [
+ 2,
+ 72858.75
+ ],
+ [
+ 3,
+ 72841.25
+ ],
+ [
+ 4,
+ 72835.5
+ ],
+ [
+ 5,
+ 72822.0
+ ],
+ [
+ 6,
+ 72822.75
+ ],
+ [
+ 7,
+ 72822.75
+ ],
+ [
+ 8,
+ 72809.25
+ ],
+ [
+ 9,
+ 72799.25
+ ],
+ [
+ 10,
+ 72788.5
+ ]
+ ],
+ "slope": -6.039393939393939,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 4551.4905,
+ "range": 4.427499999999782,
+ "series": [
+ [
+ 1,
+ 4552.022500000001
+ ],
+ [
+ 2,
+ 4553.745
+ ],
+ [
+ 3,
+ 4552.635
+ ],
+ [
+ 4,
+ 4552.2625
+ ],
+ [
+ 5,
+ 4551.407499999999
+ ],
+ [
+ 6,
+ 4551.4625
+ ],
+ [
+ 7,
+ 4551.4575
+ ],
+ [
+ 8,
+ 4550.6125
+ ],
+ [
+ 9,
+ 4549.9825
+ ],
+ [
+ 10,
+ 4549.3175
+ ]
+ ],
+ "slope": -0.3827575757574629,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 877.48975,
+ "range": 0.8599999999999,
+ "series": [
+ [
+ 1,
+ 877.3725
+ ],
+ [
+ 2,
+ 877.0550000000001
+ ],
+ [
+ 3,
+ 877.2574999999999
+ ],
+ [
+ 4,
+ 877.3325
+ ],
+ [
+ 5,
+ 877.5050000000001
+ ],
+ [
+ 6,
+ 877.5025
+ ],
+ [
+ 7,
+ 877.5024999999999
+ ],
+ [
+ 8,
+ 877.665
+ ],
+ [
+ 9,
+ 877.79
+ ],
+ [
+ 10,
+ 877.915
+ ]
+ ],
+ "slope": 0.07619696969709669,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 18023.55,
+ "range": 39.0,
+ "series": [
+ [
+ 1,
+ 18046.0
+ ],
+ [
+ 2,
+ 18007.0
+ ],
+ [
+ 3,
+ 18008.25
+ ],
+ [
+ 4,
+ 18041.25
+ ],
+ [
+ 5,
+ 18023.5
+ ],
+ [
+ 6,
+ 18014.5
+ ],
+ [
+ 7,
+ 18007.0
+ ],
+ [
+ 8,
+ 18037.25
+ ],
+ [
+ 9,
+ 18027.75
+ ],
+ [
+ 10,
+ 18023.0
+ ]
+ ],
+ "slope": -0.17272727272727273,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 9012.054499999998,
+ "range": 19.67749999999978,
+ "series": [
+ [
+ 1,
+ 9023.33
+ ],
+ [
+ 2,
+ 9003.6525
+ ],
+ [
+ 3,
+ 9004.4025
+ ],
+ [
+ 4,
+ 9020.9525
+ ],
+ [
+ 5,
+ 9012.182499999999
+ ],
+ [
+ 6,
+ 9007.535
+ ],
+ [
+ 7,
+ 9003.787499999999
+ ],
+ [
+ 8,
+ 9018.892500000002
+ ],
+ [
+ 9,
+ 9014.03
+ ],
+ [
+ 10,
+ 9011.78
+ ]
+ ],
+ "slope": -0.09090909090796204,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 442.88075,
+ "range": 0.9850000000000136,
+ "series": [
+ [
+ 1,
+ 442.3325
+ ],
+ [
+ 2,
+ 443.3175
+ ],
+ [
+ 3,
+ 443.26750000000004
+ ],
+ [
+ 4,
+ 442.45000000000005
+ ],
+ [
+ 5,
+ 442.8675
+ ],
+ [
+ 6,
+ 443.0975
+ ],
+ [
+ 7,
+ 443.27750000000003
+ ],
+ [
+ 8,
+ 442.5375
+ ],
+ [
+ 9,
+ 442.7725
+ ],
+ [
+ 10,
+ 442.88750000000005
+ ]
+ ],
+ "slope": 0.0014696969696899142,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 1333.275,
+ "range": 77.25,
+ "series": [
+ [
+ 1,
+ 1347.5
+ ],
+ [
+ 2,
+ 1366.75
+ ],
+ [
+ 3,
+ 1361.5
+ ],
+ [
+ 4,
+ 1319.0
+ ],
+ [
+ 5,
+ 1289.5
+ ],
+ [
+ 6,
+ 1307.0
+ ],
+ [
+ 7,
+ 1328.25
+ ],
+ [
+ 8,
+ 1330.75
+ ],
+ [
+ 9,
+ 1338.75
+ ],
+ [
+ 10,
+ 1343.75
+ ]
+ ],
+ "slope": -2.05,
+ "steady_state": true
+ },
+ "write": {
+ "average": 570.625,
+ "range": 25.25,
+ "series": [
+ [
+ 1,
+ 573.0
+ ],
+ [
+ 2,
+ 582.75
+ ],
+ [
+ 3,
+ 577.25
+ ],
+ [
+ 4,
+ 567.25
+ ],
+ [
+ 5,
+ 557.5
+ ],
+ [
+ 6,
+ 561.75
+ ],
+ [
+ 7,
+ 568.0
+ ],
+ [
+ 8,
+ 569.75
+ ],
+ [
+ 9,
+ 573.25
+ ],
+ [
+ 10,
+ 575.75
+ ]
+ ],
+ "slope": -0.4409090909090909,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 83.36150000000002,
+ "range": 4.844999999999999,
+ "series": [
+ [
+ 1,
+ 84.2525
+ ],
+ [
+ 2,
+ 85.455
+ ],
+ [
+ 3,
+ 85.1225
+ ],
+ [
+ 4,
+ 82.4725
+ ],
+ [
+ 5,
+ 80.61
+ ],
+ [
+ 6,
+ 81.73
+ ],
+ [
+ 7,
+ 83.05000000000001
+ ],
+ [
+ 8,
+ 83.21000000000001
+ ],
+ [
+ 9,
+ 83.70500000000001
+ ],
+ [
+ 10,
+ 84.00750000000001
+ ]
+ ],
+ "slope": -0.1282727272727414,
+ "steady_state": true
+ },
+ "write": {
+ "average": 35.702,
+ "range": 1.5774999999999935,
+ "series": [
+ [
+ 1,
+ 35.86
+ ],
+ [
+ 2,
+ 36.4625
+ ],
+ [
+ 3,
+ 36.135
+ ],
+ [
+ 4,
+ 35.49
+ ],
+ [
+ 5,
+ 34.885000000000005
+ ],
+ [
+ 6,
+ 35.1475
+ ],
+ [
+ 7,
+ 35.535
+ ],
+ [
+ 8,
+ 35.6325
+ ],
+ [
+ 9,
+ 35.847500000000004
+ ],
+ [
+ 10,
+ 36.025
+ ]
+ ],
+ "slope": -0.02990909090908562,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 804.327,
+ "range": 40.53749999999991,
+ "series": [
+ [
+ 1,
+ 798.405
+ ],
+ [
+ 2,
+ 806.9225
+ ],
+ [
+ 3,
+ 797.2875
+ ],
+ [
+ 4,
+ 815.2125
+ ],
+ [
+ 5,
+ 817.6949999999999
+ ],
+ [
+ 6,
+ 822.6299999999999
+ ],
+ [
+ 7,
+ 812.1175000000001
+ ],
+ [
+ 8,
+ 800.6575
+ ],
+ [
+ 9,
+ 790.25
+ ],
+ [
+ 10,
+ 782.0925
+ ]
+ ],
+ "slope": -1.521333333333305,
+ "steady_state": true
+ },
+ "write": {
+ "average": 26133.83325,
+ "range": 1240.4424999999974,
+ "series": [
+ [
+ 1,
+ 26012.307500000003
+ ],
+ [
+ 2,
+ 25531.915
+ ],
+ [
+ 3,
+ 25792.162500000002
+ ],
+ [
+ 4,
+ 26283.825
+ ],
+ [
+ 5,
+ 26772.3575
+ ],
+ [
+ 6,
+ 26539.620000000003
+ ],
+ [
+ 7,
+ 26242.925
+ ],
+ [
+ 8,
+ 26188.6525
+ ],
+ [
+ 9,
+ 26044.93
+ ],
+ [
+ 10,
+ 25929.6375
+ ]
+ ],
+ "slope": 27.115681818184076,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 179.43333333333334,
+ "range": 7.0,
+ "series": [
+ [
+ 1,
+ 177.0
+ ],
+ [
+ 1,
+ 175.0
+ ],
+ [
+ 2,
+ 180.0
+ ],
+ [
+ 2,
+ 179.33333333333334
+ ],
+ [
+ 3,
+ 182.0
+ ],
+ [
+ 3,
+ 181.66666666666666
+ ],
+ [
+ 4,
+ 180.0
+ ],
+ [
+ 4,
+ 179.33333333333334
+ ],
+ [
+ 5,
+ 180.0
+ ],
+ [
+ 5,
+ 180.0
+ ]
+ ],
+ "slope": 0.8,
+ "steady_state": true
+ },
+ "write": {
+ "average": 76.66666666666666,
+ "range": 2.666666666666657,
+ "series": [
+ [
+ 1,
+ 76.0
+ ],
+ [
+ 1,
+ 74.66666666666667
+ ],
+ [
+ 2,
+ 77.0
+ ],
+ [
+ 2,
+ 76.33333333333333
+ ],
+ [
+ 3,
+ 77.0
+ ],
+ [
+ 3,
+ 77.33333333333333
+ ],
+ [
+ 4,
+ 77.0
+ ],
+ [
+ 4,
+ 77.0
+ ],
+ [
+ 5,
+ 77.0
+ ],
+ [
+ 5,
+ 77.33333333333333
+ ]
+ ],
+ "slope": 0.4,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 89.94,
+ "range": 3.3300000000000125,
+ "series": [
+ [
+ 1,
+ 88.82
+ ],
+ [
+ 1,
+ 87.83999999999999
+ ],
+ [
+ 2,
+ 90.26
+ ],
+ [
+ 2,
+ 89.80333333333333
+ ],
+ [
+ 3,
+ 91.17
+ ],
+ [
+ 3,
+ 90.95666666666666
+ ],
+ [
+ 4,
+ 90.05
+ ],
+ [
+ 4,
+ 89.98333333333333
+ ],
+ [
+ 5,
+ 90.3
+ ],
+ [
+ 5,
+ 90.21666666666665
+ ]
+ ],
+ "slope": 0.3841666666666606,
+ "steady_state": true
+ },
+ "write": {
+ "average": 38.56933333333334,
+ "range": 1.3799999999999955,
+ "series": [
+ [
+ 1,
+ 38.03
+ ],
+ [
+ 1,
+ 37.580000000000005
+ ],
+ [
+ 2,
+ 38.58
+ ],
+ [
+ 2,
+ 38.35333333333333
+ ],
+ [
+ 3,
+ 38.96
+ ],
+ [
+ 3,
+ 38.8
+ ],
+ [
+ 4,
+ 38.81
+ ],
+ [
+ 4,
+ 38.76
+ ],
+ [
+ 5,
+ 38.92
+ ],
+ [
+ 5,
+ 38.900000000000006
+ ]
+ ],
+ "slope": 0.2528333333333376,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 656.7073333333333,
+ "range": 96.33666666666659,
+ "series": [
+ [
+ 1,
+ 649.88
+ ],
+ [
+ 1,
+ 721.9066666666666
+ ],
+ [
+ 2,
+ 626.15
+ ],
+ [
+ 2,
+ 675.4133333333333
+ ],
+ [
+ 3,
+ 625.57
+ ],
+ [
+ 3,
+ 652.4533333333334
+ ],
+ [
+ 4,
+ 649.98
+ ],
+ [
+ 4,
+ 649.4399999999999
+ ],
+ [
+ 5,
+ 659.96
+ ],
+ [
+ 5,
+ 656.32
+ ]
+ ],
+ "slope": -5.657833333333401,
+ "steady_state": true
+ },
+ "write": {
+ "average": 24392.78733333333,
+ "range": 762.6366666666654,
+ "series": [
+ [
+ 1,
+ 24774.03
+ ],
+ [
+ 1,
+ 24917.256666666664
+ ],
+ [
+ 2,
+ 24446.85
+ ],
+ [
+ 2,
+ 24486.826666666664
+ ],
+ [
+ 3,
+ 24196.63
+ ],
+ [
+ 3,
+ 24240.12
+ ],
+ [
+ 4,
+ 24250.96
+ ],
+ [
+ 4,
+ 24283.793333333335
+ ],
+ [
+ 5,
+ 24154.62
+ ],
+ [
+ 5,
+ 24176.786666666667
+ ]
+ ],
+ "slope": -155.9341666666651,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 3730.525,
+ "range": 207.75,
+ "series": [
+ [
+ 1,
+ 3856.25
+ ],
+ [
+ 2,
+ 3780.0
+ ],
+ [
+ 3,
+ 3724.5
+ ],
+ [
+ 4,
+ 3668.5
+ ],
+ [
+ 5,
+ 3648.5
+ ],
+ [
+ 6,
+ 3688.25
+ ],
+ [
+ 7,
+ 3713.5
+ ],
+ [
+ 8,
+ 3728.25
+ ],
+ [
+ 9,
+ 3745.25
+ ],
+ [
+ 10,
+ 3752.25
+ ]
+ ],
+ "slope": -5.974242424242425,
+ "steady_state": true
+ },
+ "write": {
+ "average": 1599.475,
+ "range": 66.5,
+ "series": [
+ [
+ 1,
+ 1629.75
+ ],
+ [
+ 2,
+ 1631.25
+ ],
+ [
+ 3,
+ 1596.5
+ ],
+ [
+ 4,
+ 1574.75
+ ],
+ [
+ 5,
+ 1564.75
+ ],
+ [
+ 6,
+ 1580.75
+ ],
+ [
+ 7,
+ 1592.25
+ ],
+ [
+ 8,
+ 1599.75
+ ],
+ [
+ 9,
+ 1609.5
+ ],
+ [
+ 10,
+ 1615.5
+ ]
+ ],
+ "slope": -1.1863636363636363,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 233.19475000000003,
+ "range": 13.017500000000013,
+ "series": [
+ [
+ 1,
+ 241.07
+ ],
+ [
+ 2,
+ 236.29
+ ],
+ [
+ 3,
+ 232.8225
+ ],
+ [
+ 4,
+ 229.3225
+ ],
+ [
+ 5,
+ 228.05249999999998
+ ],
+ [
+ 6,
+ 230.5475
+ ],
+ [
+ 7,
+ 232.13000000000002
+ ],
+ [
+ 8,
+ 233.04500000000002
+ ],
+ [
+ 9,
+ 234.115
+ ],
+ [
+ 10,
+ 234.5525
+ ]
+ ],
+ "slope": -0.3748636363636505,
+ "steady_state": true
+ },
+ "write": {
+ "average": 100.01575,
+ "range": 4.172499999999999,
+ "series": [
+ [
+ 1,
+ 101.93750000000001
+ ],
+ [
+ 2,
+ 102.01249999999999
+ ],
+ [
+ 3,
+ 99.845
+ ],
+ [
+ 4,
+ 98.4625
+ ],
+ [
+ 5,
+ 97.83999999999999
+ ],
+ [
+ 6,
+ 98.82499999999999
+ ],
+ [
+ 7,
+ 99.55000000000001
+ ],
+ [
+ 8,
+ 100.01750000000001
+ ],
+ [
+ 9,
+ 100.655
+ ],
+ [
+ 10,
+ 101.0125
+ ]
+ ],
+ "slope": -0.07707575757575934,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 917.9795,
+ "range": 101.93750000000011,
+ "series": [
+ [
+ 1,
+ 995.1675
+ ],
+ [
+ 2,
+ 939.015
+ ],
+ [
+ 3,
+ 919.7925
+ ],
+ [
+ 4,
+ 905.0825
+ ],
+ [
+ 5,
+ 907.05
+ ],
+ [
+ 6,
+ 903.48
+ ],
+ [
+ 7,
+ 905.1025
+ ],
+ [
+ 8,
+ 907.3725
+ ],
+ [
+ 9,
+ 904.5024999999999
+ ],
+ [
+ 10,
+ 893.2299999999999
+ ]
+ ],
+ "slope": -7.422030303030359,
+ "steady_state": true
+ },
+ "write": {
+ "average": 37857.07575,
+ "range": 1877.3324999999968,
+ "series": [
+ [
+ 1,
+ 36889.2575
+ ],
+ [
+ 2,
+ 37028.307499999995
+ ],
+ [
+ 3,
+ 37914.33500000001
+ ],
+ [
+ 4,
+ 38513.7025
+ ],
+ [
+ 5,
+ 38766.59
+ ],
+ [
+ 6,
+ 38363.9375
+ ],
+ [
+ 7,
+ 38066.53
+ ],
+ [
+ 8,
+ 37875.19
+ ],
+ [
+ 9,
+ 37632.3575
+ ],
+ [
+ 10,
+ 37520.55
+ ]
+ ],
+ "slope": 48.30356060606061,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 541.0,
+ "range": 9.0,
+ "series": [
+ [
+ 7,
+ 536.25
+ ],
+ [
+ 8,
+ 538.0
+ ],
+ [
+ 9,
+ 539.5
+ ],
+ [
+ 10,
+ 542.25
+ ],
+ [
+ 11,
+ 544.5
+ ],
+ [
+ 12,
+ 545.25
+ ],
+ [
+ 13,
+ 542.0
+ ],
+ [
+ 14,
+ 544.0
+ ],
+ [
+ 15,
+ 540.25
+ ],
+ [
+ 16,
+ 538.5
+ ],
+ [
+ 17,
+ 539.75
+ ],
+ [
+ 18,
+ 541.75
+ ]
+ ],
+ "slope": 0.19055944055944055,
+ "steady_state": true
+ },
+ "write": {
+ "average": 231.9375,
+ "range": 4.0,
+ "series": [
+ [
+ 7,
+ 230.0
+ ],
+ [
+ 8,
+ 231.0
+ ],
+ [
+ 9,
+ 232.0
+ ],
+ [
+ 10,
+ 233.0
+ ],
+ [
+ 11,
+ 234.0
+ ],
+ [
+ 12,
+ 234.0
+ ],
+ [
+ 13,
+ 232.25
+ ],
+ [
+ 14,
+ 232.75
+ ],
+ [
+ 15,
+ 231.25
+ ],
+ [
+ 16,
+ 230.25
+ ],
+ [
+ 17,
+ 231.0
+ ],
+ [
+ 18,
+ 231.75
+ ]
+ ],
+ "slope": -0.025349650349650348,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 270.77562500000005,
+ "range": 4.5400000000000205,
+ "series": [
+ [
+ 7,
+ 268.415
+ ],
+ [
+ 8,
+ 269.285
+ ],
+ [
+ 9,
+ 270.06
+ ],
+ [
+ 10,
+ 271.27750000000003
+ ],
+ [
+ 11,
+ 272.5125
+ ],
+ [
+ 12,
+ 272.95500000000004
+ ],
+ [
+ 13,
+ 271.2975
+ ],
+ [
+ 14,
+ 272.2375
+ ],
+ [
+ 15,
+ 270.40000000000003
+ ],
+ [
+ 16,
+ 269.5325
+ ],
+ [
+ 17,
+ 270.245
+ ],
+ [
+ 18,
+ 271.09000000000003
+ ]
+ ],
+ "slope": 0.09616258741259555,
+ "steady_state": true
+ },
+ "write": {
+ "average": 116.22145833333332,
+ "range": 2.0575000000000045,
+ "series": [
+ [
+ 7,
+ 115.19
+ ],
+ [
+ 8,
+ 115.76
+ ],
+ [
+ 9,
+ 116.33500000000001
+ ],
+ [
+ 10,
+ 116.73499999999999
+ ],
+ [
+ 11,
+ 117.2175
+ ],
+ [
+ 12,
+ 117.2475
+ ],
+ [
+ 13,
+ 116.345
+ ],
+ [
+ 14,
+ 116.6175
+ ],
+ [
+ 15,
+ 115.86000000000001
+ ],
+ [
+ 16,
+ 115.445
+ ],
+ [
+ 17,
+ 115.76
+ ],
+ [
+ 18,
+ 116.145
+ ]
+ ],
+ "slope": -0.009798951048952407,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 819.9216666666666,
+ "range": 129.9699999999999,
+ "series": [
+ [
+ 7,
+ 907.03
+ ],
+ [
+ 8,
+ 879.1175000000001
+ ],
+ [
+ 9,
+ 858.7974999999999
+ ],
+ [
+ 10,
+ 842.3525
+ ],
+ [
+ 11,
+ 824.2275
+ ],
+ [
+ 12,
+ 810.6300000000001
+ ],
+ [
+ 13,
+ 800.8125
+ ],
+ [
+ 14,
+ 792.5899999999999
+ ],
+ [
+ 15,
+ 785.365
+ ],
+ [
+ 16,
+ 781.4174999999999
+ ],
+ [
+ 17,
+ 779.6599999999999
+ ],
+ [
+ 18,
+ 777.0600000000001
+ ]
+ ],
+ "slope": -11.385017482517586,
+ "steady_state": true
+ },
+ "write": {
+ "average": 32502.262708333335,
+ "range": 616.6949999999961,
+ "series": [
+ [
+ 7,
+ 32606.585
+ ],
+ [
+ 8,
+ 32503.11
+ ],
+ [
+ 9,
+ 32385.059999999998
+ ],
+ [
+ 10,
+ 32302.475
+ ],
+ [
+ 11,
+ 32202.77
+ ],
+ [
+ 12,
+ 32223.52
+ ],
+ [
+ 13,
+ 32507.15
+ ],
+ [
+ 14,
+ 32443.930000000004
+ ],
+ [
+ 15,
+ 32684.445000000003
+ ],
+ [
+ 16,
+ 32819.465
+ ],
+ [
+ 17,
+ 32727.7725
+ ],
+ [
+ 18,
+ 32620.87
+ ]
+ ],
+ "slope": 28.450673076921166,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 255.675,
+ "range": 23.5,
+ "series": [
+ [
+ 1,
+ 273.75
+ ],
+ [
+ 2,
+ 255.5
+ ],
+ [
+ 3,
+ 252.25
+ ],
+ [
+ 4,
+ 251.0
+ ],
+ [
+ 5,
+ 251.25
+ ],
+ [
+ 6,
+ 256.25
+ ],
+ [
+ 7,
+ 255.75
+ ],
+ [
+ 8,
+ 256.5
+ ],
+ [
+ 9,
+ 254.25
+ ],
+ [
+ 10,
+ 250.25
+ ]
+ ],
+ "slope": -1.0893939393939394,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 16.014499999999998,
+ "range": 1.452499999999997,
+ "series": [
+ [
+ 1,
+ 17.1425
+ ],
+ [
+ 2,
+ 16.0025
+ ],
+ [
+ 3,
+ 15.8025
+ ],
+ [
+ 4,
+ 15.7175
+ ],
+ [
+ 5,
+ 15.739999999999998
+ ],
+ [
+ 6,
+ 16.065
+ ],
+ [
+ 7,
+ 16.015
+ ],
+ [
+ 8,
+ 16.065
+ ],
+ [
+ 9,
+ 15.905000000000001
+ ],
+ [
+ 10,
+ 15.690000000000001
+ ]
+ ],
+ "slope": -0.06803030303030302,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 62550.03525,
+ "range": 4874.504999999997,
+ "series": [
+ [
+ 1,
+ 58905.652500000004
+ ],
+ [
+ 2,
+ 62506.0675
+ ],
+ [
+ 3,
+ 63323.9675
+ ],
+ [
+ 4,
+ 63629.745
+ ],
+ [
+ 5,
+ 63545.2975
+ ],
+ [
+ 6,
+ 62247.8425
+ ],
+ [
+ 7,
+ 62451.735
+ ],
+ [
+ 8,
+ 62239.195
+ ],
+ [
+ 9,
+ 62870.692500000005
+ ],
+ [
+ 10,
+ 63780.1575
+ ]
+ ],
+ "slope": 219.19740909090547,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 20.725,
+ "range": 1.0,
+ "series": [
+ [
+ 1,
+ 20.0
+ ],
+ [
+ 2,
+ 20.5
+ ],
+ [
+ 3,
+ 21.0
+ ],
+ [
+ 4,
+ 21.0
+ ],
+ [
+ 5,
+ 21.0
+ ],
+ [
+ 6,
+ 21.0
+ ],
+ [
+ 7,
+ 21.0
+ ],
+ [
+ 8,
+ 21.0
+ ],
+ [
+ 9,
+ 20.25
+ ],
+ [
+ 10,
+ 20.5
+ ]
+ ],
+ "slope": 0.016666666666666666,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 10.62075,
+ "range": 0.4949999999999992,
+ "series": [
+ [
+ 1,
+ 10.3
+ ],
+ [
+ 2,
+ 10.4875
+ ],
+ [
+ 3,
+ 10.6275
+ ],
+ [
+ 4,
+ 10.732499999999998
+ ],
+ [
+ 5,
+ 10.787500000000001
+ ],
+ [
+ 6,
+ 10.795
+ ],
+ [
+ 7,
+ 10.7575
+ ],
+ [
+ 8,
+ 10.7225
+ ],
+ [
+ 9,
+ 10.47
+ ],
+ [
+ 10,
+ 10.5275
+ ]
+ ],
+ "slope": 0.015045454545456088,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 94289.97625,
+ "range": 5262.222499999989,
+ "series": [
+ [
+ 1,
+ 97917.5825
+ ],
+ [
+ 2,
+ 95377.58750000001
+ ],
+ [
+ 3,
+ 94132.3575
+ ],
+ [
+ 4,
+ 93200.08
+ ],
+ [
+ 5,
+ 92737.20000000001
+ ],
+ [
+ 6,
+ 92655.36000000002
+ ],
+ [
+ 7,
+ 93043.365
+ ],
+ [
+ 8,
+ 93311.225
+ ],
+ [
+ 9,
+ 95523.84
+ ],
+ [
+ 10,
+ 95001.16500000001
+ ]
+ ],
+ "slope": -181.10083333334236,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 431.55,
+ "range": 34.5,
+ "series": [
+ [
+ 1,
+ 411.75
+ ],
+ [
+ 2,
+ 411.25
+ ],
+ [
+ 3,
+ 441.75
+ ],
+ [
+ 4,
+ 445.75
+ ],
+ [
+ 5,
+ 434.25
+ ],
+ [
+ 6,
+ 435.25
+ ],
+ [
+ 7,
+ 435.5
+ ],
+ [
+ 8,
+ 432.25
+ ],
+ [
+ 9,
+ 435.0
+ ],
+ [
+ 10,
+ 432.75
+ ]
+ ],
+ "slope": 1.6848484848484848,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 27.0265,
+ "range": 2.1650000000000027,
+ "series": [
+ [
+ 1,
+ 25.817500000000003
+ ],
+ [
+ 2,
+ 25.7475
+ ],
+ [
+ 3,
+ 27.6775
+ ],
+ [
+ 4,
+ 27.9125
+ ],
+ [
+ 5,
+ 27.189999999999998
+ ],
+ [
+ 6,
+ 27.242500000000003
+ ],
+ [
+ 7,
+ 27.275000000000002
+ ],
+ [
+ 8,
+ 27.0725
+ ],
+ [
+ 9,
+ 27.2425
+ ],
+ [
+ 10,
+ 27.087500000000002
+ ]
+ ],
+ "slope": 0.10309090909091041,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 148132.73825,
+ "range": 11873.054999999993,
+ "series": [
+ [
+ 1,
+ 155219.93
+ ],
+ [
+ 2,
+ 155188.17250000002
+ ],
+ [
+ 3,
+ 144552.5775
+ ],
+ [
+ 4,
+ 143346.875
+ ],
+ [
+ 5,
+ 147150.3925
+ ],
+ [
+ 6,
+ 146823.985
+ ],
+ [
+ 7,
+ 146675.64500000002
+ ],
+ [
+ 8,
+ 147785.5075
+ ],
+ [
+ 9,
+ 146890.655
+ ],
+ [
+ 10,
+ 147693.64250000002
+ ]
+ ],
+ "slope": -606.0282272727381,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 29.75,
+ "range": 0.75,
+ "series": [
+ [
+ 1,
+ 29.5
+ ],
+ [
+ 2,
+ 30.0
+ ],
+ [
+ 3,
+ 30.25
+ ],
+ [
+ 4,
+ 29.75
+ ],
+ [
+ 5,
+ 29.75
+ ],
+ [
+ 6,
+ 29.75
+ ],
+ [
+ 7,
+ 29.75
+ ],
+ [
+ 8,
+ 29.75
+ ],
+ [
+ 9,
+ 29.5
+ ],
+ [
+ 10,
+ 29.5
+ ]
+ ],
+ "slope": -0.03636363636363636,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 15.151250000000001,
+ "range": 0.4175000000000004,
+ "series": [
+ [
+ 1,
+ 15.122499999999999
+ ],
+ [
+ 2,
+ 15.3475
+ ],
+ [
+ 3,
+ 15.3725
+ ],
+ [
+ 4,
+ 15.205
+ ],
+ [
+ 5,
+ 15.1275
+ ],
+ [
+ 6,
+ 15.0975
+ ],
+ [
+ 7,
+ 15.155
+ ],
+ [
+ 8,
+ 15.11
+ ],
+ [
+ 9,
+ 14.955
+ ],
+ [
+ 10,
+ 15.02
+ ]
+ ],
+ "slope": -0.031287878787880995,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 264400.87025000004,
+ "range": 7209.97000000003,
+ "series": [
+ [
+ 1,
+ 265282.68
+ ],
+ [
+ 2,
+ 261112.06
+ ],
+ [
+ 3,
+ 260559.1125
+ ],
+ [
+ 4,
+ 263398.645
+ ],
+ [
+ 5,
+ 264771.96
+ ],
+ [
+ 6,
+ 265201.485
+ ],
+ [
+ 7,
+ 264248.9175
+ ],
+ [
+ 8,
+ 265034.7225
+ ],
+ [
+ 9,
+ 267769.0825
+ ],
+ [
+ 10,
+ 266630.03750000003
+ ]
+ ],
+ "slope": 509.598590909062,
+ "steady_state": true
+ }
+ }
+ }
+ },
+ "scenario_name": "os-nosdn-nofeature-noha",
+ "steady_state": {
+ "_warm_up.queue-depth.8.block-size.16384": true,
+ "rr.queue-depth.1.block-size.16384": true,
+ "rr.queue-depth.1.block-size.2048": true,
+ "rr.queue-depth.4.block-size.16384": true,
+ "rr.queue-depth.4.block-size.2048": true,
+ "rw.queue-depth.1.block-size.16384": true,
+ "rw.queue-depth.1.block-size.2048": true,
+ "rw.queue-depth.4.block-size.16384": true,
+ "rw.queue-depth.4.block-size.2048": true,
+ "wr.queue-depth.1.block-size.16384": true,
+ "wr.queue-depth.1.block-size.2048": true,
+ "wr.queue-depth.4.block-size.16384": true,
+ "wr.queue-depth.4.block-size.2048": true
+ },
+ "storage_node_count": 4,
+ "test_case": "snia_steady_state",
+ "timestart": 1503525940.609359,
+ "version": "danube",
+ "volume_size": 4
+ },
+ "installer": "apex",
+ "pod_name": "intel-pod9",
+ "project_name": "storperf",
+ "public": "true",
+ "scenario": "os-nosdn-nofeature-noha",
+ "start_date": "2017-08-23 22:05:40",
+ "stop_date": "2017-08-24 00:27:09",
+ "trust_indicator": null,
+ "user": null,
+ "version": "danube"
+ },
+ {
+ "_id": "599cf8f056a44e000ef81fff",
+ "build_tag": "jenkins-storperf-daily-master-228",
+ "case_name": "snia_steady_state",
+ "criteria": "PASS",
+ "details": {
+ "agent_count": 4,
+ "build_tag": "jenkins-storperf-daily-master-228",
+ "disk_type": "SSD",
+ "duration": 10044.74294090271,
+ "metrics": {
+ "_warm_up.queue-depth.8.block-size.16384.read.bw": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.read.iops": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.read.lat_ns.mean": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.write.bw": 2359.7678571428573,
+ "_warm_up.queue-depth.8.block-size.16384.write.iops": 147.52290969642857,
+ "_warm_up.queue-depth.8.block-size.16384.write.lat_ns.mean": 54231739.13554524,
+ "rr.queue-depth.1.block-size.16384.read.bw": 22812.575,
+ "rr.queue-depth.1.block-size.16384.read.iops": 1425.828365475,
+ "rr.queue-depth.1.block-size.16384.read.lat_ns.mean": 698820.32884055,
+ "rr.queue-depth.1.block-size.16384.write.bw": 0.0,
+ "rr.queue-depth.1.block-size.16384.write.iops": 0.0,
+ "rr.queue-depth.1.block-size.16384.write.lat_ns.mean": 0.0,
+ "rr.queue-depth.1.block-size.2048.read.bw": 2996.125,
+ "rr.queue-depth.1.block-size.2048.read.iops": 1498.3165643500001,
+ "rr.queue-depth.1.block-size.2048.read.lat_ns.mean": 667365.8417893499,
+ "rr.queue-depth.1.block-size.2048.write.bw": 0.0,
+ "rr.queue-depth.1.block-size.2048.write.iops": 0.0,
+ "rr.queue-depth.1.block-size.2048.write.lat_ns.mean": 0.0,
+ "rr.queue-depth.4.block-size.16384.read.bw": 69828.575,
+ "rr.queue-depth.4.block-size.16384.read.iops": 4364.338146325,
+ "rr.queue-depth.4.block-size.16384.read.lat_ns.mean": 915354.994682925,
+ "rr.queue-depth.4.block-size.16384.write.bw": 0.0,
+ "rr.queue-depth.4.block-size.16384.write.iops": 0.0,
+ "rr.queue-depth.4.block-size.16384.write.lat_ns.mean": 0.0,
+ "rr.queue-depth.4.block-size.2048.read.bw": 17963.925,
+ "rr.queue-depth.4.block-size.2048.read.iops": 8982.234849825003,
+ "rr.queue-depth.4.block-size.2048.read.lat_ns.mean": 444451.94056445005,
+ "rr.queue-depth.4.block-size.2048.write.bw": 0.0,
+ "rr.queue-depth.4.block-size.2048.write.iops": 0.0,
+ "rr.queue-depth.4.block-size.2048.write.lat_ns.mean": 0.0,
+ "rw.queue-depth.1.block-size.16384.read.bw": 1330.875,
+ "rw.queue-depth.1.block-size.16384.read.iops": 83.20840005,
+ "rw.queue-depth.1.block-size.16384.read.lat_ns.mean": 713643.3585713999,
+ "rw.queue-depth.1.block-size.16384.write.bw": 571.2,
+ "rw.queue-depth.1.block-size.16384.write.iops": 35.731828125,
+ "rw.queue-depth.1.block-size.16384.write.lat_ns.mean": 26323213.9715425,
+ "rw.queue-depth.1.block-size.2048.read.bw": 175.625,
+ "rw.queue-depth.1.block-size.2048.read.iops": 88.0461904,
+ "rw.queue-depth.1.block-size.2048.read.lat_ns.mean": 660567.21077405,
+ "rw.queue-depth.1.block-size.2048.write.bw": 75.025,
+ "rw.queue-depth.1.block-size.2048.write.iops": 37.805796324999996,
+ "rw.queue-depth.1.block-size.2048.write.lat_ns.mean": 24908322.7872575,
+ "rw.queue-depth.4.block-size.16384.read.bw": 3759.7083333333335,
+ "rw.queue-depth.4.block-size.16384.read.iops": 235.01586260416673,
+ "rw.queue-depth.4.block-size.16384.read.lat_ns.mean": 869829.5887364306,
+ "rw.queue-depth.4.block-size.16384.write.bw": 1607.8125,
+ "rw.queue-depth.4.block-size.16384.write.iops": 100.5299154236111,
+ "rw.queue-depth.4.block-size.16384.write.lat_ns.mean": 37754948.236839585,
+ "rw.queue-depth.4.block-size.2048.read.bw": 528.6458333333334,
+ "rw.queue-depth.4.block-size.2048.read.iops": 264.559783875,
+ "rw.queue-depth.4.block-size.2048.read.lat_ns.mean": 781605.2382714376,
+ "rw.queue-depth.4.block-size.2048.write.bw": 226.55555555555554,
+ "rw.queue-depth.4.block-size.2048.write.iops": 113.51736854166667,
+ "rw.queue-depth.4.block-size.2048.write.lat_ns.mean": 33418557.713774994,
+ "wr.queue-depth.1.block-size.16384.read.bw": 0.0,
+ "wr.queue-depth.1.block-size.16384.read.iops": 0.0,
+ "wr.queue-depth.1.block-size.16384.read.lat_ns.mean": 0.0,
+ "wr.queue-depth.1.block-size.16384.write.bw": 248.225,
+ "wr.queue-depth.1.block-size.16384.write.iops": 15.549817324999998,
+ "wr.queue-depth.1.block-size.16384.write.lat_ns.mean": 64427931.15620749,
+ "wr.queue-depth.1.block-size.2048.read.bw": 0.0,
+ "wr.queue-depth.1.block-size.2048.read.iops": 0.0,
+ "wr.queue-depth.1.block-size.2048.read.lat_ns.mean": 0.0,
+ "wr.queue-depth.1.block-size.2048.write.bw": 20.125,
+ "wr.queue-depth.1.block-size.2048.write.iops": 10.427344899999998,
+ "wr.queue-depth.1.block-size.2048.write.lat_ns.mean": 95963155.1299075,
+ "wr.queue-depth.4.block-size.16384.read.bw": 0.0,
+ "wr.queue-depth.4.block-size.16384.read.iops": 0.0,
+ "wr.queue-depth.4.block-size.16384.read.lat_ns.mean": 0.0,
+ "wr.queue-depth.4.block-size.16384.write.bw": 427.775,
+ "wr.queue-depth.4.block-size.16384.write.iops": 26.78937345,
+ "wr.queue-depth.4.block-size.16384.write.lat_ns.mean": 149598772.13805,
+ "wr.queue-depth.4.block-size.2048.read.bw": 0.0,
+ "wr.queue-depth.4.block-size.2048.read.iops": 0.0,
+ "wr.queue-depth.4.block-size.2048.read.lat_ns.mean": 0.0,
+ "wr.queue-depth.4.block-size.2048.write.bw": 30.475,
+ "wr.queue-depth.4.block-size.2048.write.iops": 15.548998325,
+ "wr.queue-depth.4.block-size.2048.write.lat_ns.mean": 257251372.43019995
+ },
+ "pod_name": "intel-pod9",
+ "public_network": "external",
+ "report_data": {
+ "_warm_up.queue-depth.8.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ],
+ [
+ 28,
+ 0.0
+ ],
+ [
+ 29,
+ 0.0
+ ],
+ [
+ 29,
+ 0.0
+ ],
+ [
+ 29,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 2359.7678571428573,
+ "range": 55.25,
+ "series": [
+ [
+ 18,
+ 2336.75
+ ],
+ [
+ 19,
+ 2331.75
+ ],
+ [
+ 20,
+ 2326.5
+ ],
+ [
+ 21,
+ 2338.5
+ ],
+ [
+ 22,
+ 2343.25
+ ],
+ [
+ 23,
+ 2352.5
+ ],
+ [
+ 24,
+ 2363.0
+ ],
+ [
+ 25,
+ 2373.25
+ ],
+ [
+ 26,
+ 2377.25
+ ],
+ [
+ 27,
+ 2378.25
+ ],
+ [
+ 28,
+ 2381.75
+ ],
+ [
+ 29,
+ 2380.0
+ ],
+ [
+ 29,
+ 2379.0
+ ],
+ [
+ 29,
+ 2375.0
+ ]
+ ],
+ "slope": 5.032807917888563,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ],
+ [
+ 28,
+ 0.0
+ ],
+ [
+ 29,
+ 0.0
+ ],
+ [
+ 29,
+ 0.0
+ ],
+ [
+ 29,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 147.52290969642857,
+ "range": 3.4335882499999855,
+ "series": [
+ [
+ 18,
+ 146.0636545
+ ],
+ [
+ 19,
+ 145.786321
+ ],
+ [
+ 20,
+ 145.45032575000002
+ ],
+ [
+ 21,
+ 146.20678575
+ ],
+ [
+ 22,
+ 146.50045599999999
+ ],
+ [
+ 23,
+ 147.06975175
+ ],
+ [
+ 24,
+ 147.74129566666667
+ ],
+ [
+ 25,
+ 148.34622525
+ ],
+ [
+ 26,
+ 148.6297215
+ ],
+ [
+ 27,
+ 148.676407
+ ],
+ [
+ 28,
+ 148.883914
+ ],
+ [
+ 29,
+ 148.78439425
+ ],
+ [
+ 29,
+ 148.722624
+ ],
+ [
+ 29,
+ 148.45885933333332
+ ]
+ ],
+ "slope": 0.3135755635386427,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 27,
+ 0.0
+ ],
+ [
+ 28,
+ 0.0
+ ],
+ [
+ 29,
+ 0.0
+ ],
+ [
+ 29,
+ 0.0
+ ],
+ [
+ 29,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 54231739.13554524,
+ "range": 1268377.977699995,
+ "series": [
+ [
+ 18,
+ 54770881.2458
+ ],
+ [
+ 19,
+ 54872593.148425
+ ],
+ [
+ 20,
+ 55000944.188774996
+ ],
+ [
+ 21,
+ 54714188.9262
+ ],
+ [
+ 22,
+ 54606258.7746
+ ],
+ [
+ 23,
+ 54396173.7819
+ ],
+ [
+ 24,
+ 54148265.12076666
+ ],
+ [
+ 25,
+ 53927856.376925
+ ],
+ [
+ 26,
+ 53824311.480475
+ ],
+ [
+ 27,
+ 53807977.35955
+ ],
+ [
+ 28,
+ 53732566.211075
+ ],
+ [
+ 29,
+ 53767020.054875
+ ],
+ [
+ 29,
+ 53789865.8471
+ ],
+ [
+ 29,
+ 53885445.38116667
+ ]
+ ],
+ "slope": -115612.45134280923,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 22812.575,
+ "range": 228.5,
+ "series": [
+ [
+ 1,
+ 22855.5
+ ],
+ [
+ 2,
+ 22682.5
+ ],
+ [
+ 3,
+ 22728.25
+ ],
+ [
+ 4,
+ 22763.75
+ ],
+ [
+ 5,
+ 22771.75
+ ],
+ [
+ 6,
+ 22807.5
+ ],
+ [
+ 7,
+ 22876.5
+ ],
+ [
+ 8,
+ 22865.0
+ ],
+ [
+ 9,
+ 22864.0
+ ],
+ [
+ 10,
+ 22911.0
+ ]
+ ],
+ "slope": 17.137878787878787,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 1425.828365475,
+ "range": 14.266063999999915,
+ "series": [
+ [
+ 1,
+ 1428.51766025
+ ],
+ [
+ 2,
+ 1417.71322425
+ ],
+ [
+ 3,
+ 1420.55975925
+ ],
+ [
+ 4,
+ 1422.7741732499999
+ ],
+ [
+ 5,
+ 1423.2744834999999
+ ],
+ [
+ 6,
+ 1425.51276475
+ ],
+ [
+ 7,
+ 1429.82596525
+ ],
+ [
+ 8,
+ 1429.09289775
+ ],
+ [
+ 9,
+ 1429.03343825
+ ],
+ [
+ 10,
+ 1431.9792882499999
+ ]
+ ],
+ "slope": 1.0694272712119997,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 698820.32884055,
+ "range": 7012.453493249952,
+ "series": [
+ [
+ 1,
+ 697569.31445525
+ ],
+ [
+ 2,
+ 702825.1151335
+ ],
+ [
+ 3,
+ 701393.078253
+ ],
+ [
+ 4,
+ 700299.3181975
+ ],
+ [
+ 5,
+ 700066.56179975
+ ],
+ [
+ 6,
+ 698949.4092512501
+ ],
+ [
+ 7,
+ 696851.349361
+ ],
+ [
+ 8,
+ 697206.79142775
+ ],
+ [
+ 9,
+ 697229.68888625
+ ],
+ [
+ 10,
+ 695812.66164025
+ ]
+ ],
+ "slope": -529.5172863636595,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 2996.125,
+ "range": 553.5,
+ "series": [
+ [
+ 1,
+ 3300.0
+ ],
+ [
+ 2,
+ 3348.25
+ ],
+ [
+ 3,
+ 3022.5
+ ],
+ [
+ 4,
+ 2839.75
+ ],
+ [
+ 5,
+ 2794.75
+ ],
+ [
+ 6,
+ 2824.25
+ ],
+ [
+ 7,
+ 2878.5
+ ],
+ [
+ 8,
+ 2932.0
+ ],
+ [
+ 9,
+ 2987.75
+ ],
+ [
+ 10,
+ 3033.5
+ ]
+ ],
+ "slope": -31.689393939393938,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 1498.3165643500001,
+ "range": 276.68849624999984,
+ "series": [
+ [
+ 1,
+ 1650.3770205
+ ],
+ [
+ 2,
+ 1674.3220619999997
+ ],
+ [
+ 3,
+ 1511.5078644999999
+ ],
+ [
+ 4,
+ 1420.289155
+ ],
+ [
+ 5,
+ 1397.63356575
+ ],
+ [
+ 6,
+ 1412.39573875
+ ],
+ [
+ 7,
+ 1439.4445095
+ ],
+ [
+ 8,
+ 1466.1750945
+ ],
+ [
+ 9,
+ 1494.1109250000002
+ ],
+ [
+ 10,
+ 1516.9097080000001
+ ]
+ ],
+ "slope": -15.86132960606042,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 667365.8417893499,
+ "range": 118592.30281699996,
+ "series": [
+ [
+ 1,
+ 603441.11692275
+ ],
+ [
+ 2,
+ 594653.075249
+ ],
+ [
+ 3,
+ 659079.0837805
+ ],
+ [
+ 4,
+ 701790.9651467501
+ ],
+ [
+ 5,
+ 713245.378066
+ ],
+ [
+ 6,
+ 705789.4179867499
+ ],
+ [
+ 7,
+ 692399.439768
+ ],
+ [
+ 8,
+ 679631.632365
+ ],
+ [
+ 9,
+ 666861.8369005
+ ],
+ [
+ 10,
+ 656766.47170825
+ ]
+ ],
+ "slope": 6378.919583860744,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 69828.575,
+ "range": 30.5,
+ "series": [
+ [
+ 1,
+ 69826.5
+ ],
+ [
+ 2,
+ 69836.0
+ ],
+ [
+ 3,
+ 69842.75
+ ],
+ [
+ 4,
+ 69843.5
+ ],
+ [
+ 5,
+ 69837.5
+ ],
+ [
+ 6,
+ 69820.75
+ ],
+ [
+ 7,
+ 69813.0
+ ],
+ [
+ 8,
+ 69816.0
+ ],
+ [
+ 9,
+ 69821.0
+ ],
+ [
+ 10,
+ 69828.75
+ ]
+ ],
+ "slope": -1.9803030303030302,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 4364.338146325,
+ "range": 1.8952434999991965,
+ "series": [
+ [
+ 1,
+ 4364.265395
+ ],
+ [
+ 2,
+ 4364.800217
+ ],
+ [
+ 3,
+ 4365.2239712499995
+ ],
+ [
+ 4,
+ 4365.2563295
+ ],
+ [
+ 5,
+ 4364.90316175
+ ],
+ [
+ 6,
+ 4363.8532455
+ ],
+ [
+ 7,
+ 4363.361086000001
+ ],
+ [
+ 8,
+ 4363.53488625
+ ],
+ [
+ 9,
+ 4363.8518395
+ ],
+ [
+ 10,
+ 4364.3313315
+ ]
+ ],
+ "slope": -0.12864415606032267,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 915354.994682925,
+ "range": 401.2702937499853,
+ "series": [
+ [
+ 1,
+ 915363.0159750001
+ ],
+ [
+ 2,
+ 915226.0476357499
+ ],
+ [
+ 3,
+ 915160.22655975
+ ],
+ [
+ 4,
+ 915164.7903277501
+ ],
+ [
+ 5,
+ 915240.41143925
+ ],
+ [
+ 6,
+ 915466.608319
+ ],
+ [
+ 7,
+ 915561.4968535
+ ],
+ [
+ 8,
+ 915526.5923025
+ ],
+ [
+ 9,
+ 915468.625782
+ ],
+ [
+ 10,
+ 915372.1316347499
+ ]
+ ],
+ "slope": 30.474140195557567,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 17963.925,
+ "range": 145.0,
+ "series": [
+ [
+ 1,
+ 17857.25
+ ],
+ [
+ 2,
+ 17917.5
+ ],
+ [
+ 3,
+ 17932.0
+ ],
+ [
+ 4,
+ 17995.5
+ ],
+ [
+ 5,
+ 17981.25
+ ],
+ [
+ 6,
+ 17981.5
+ ],
+ [
+ 7,
+ 17982.5
+ ],
+ [
+ 8,
+ 18002.25
+ ],
+ [
+ 9,
+ 17998.25
+ ],
+ [
+ 10,
+ 17991.25
+ ]
+ ],
+ "slope": 12.628787878787879,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 8982.234849825003,
+ "range": 72.55309549999947,
+ "series": [
+ [
+ 1,
+ 8928.86176775
+ ],
+ [
+ 2,
+ 8959.12158225
+ ],
+ [
+ 3,
+ 8966.29909375
+ ],
+ [
+ 4,
+ 8997.961387750001
+ ],
+ [
+ 5,
+ 8990.83782975
+ ],
+ [
+ 6,
+ 8991.08754525
+ ],
+ [
+ 7,
+ 8991.43106375
+ ],
+ [
+ 8,
+ 9001.41486325
+ ],
+ [
+ 9,
+ 8999.336867000002
+ ],
+ [
+ 10,
+ 8995.99649775
+ ]
+ ],
+ "slope": 6.314891843938015,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 444451.94056445005,
+ "range": 3660.5768782499363,
+ "series": [
+ [
+ 1,
+ 447149.3614765
+ ],
+ [
+ 2,
+ 445623.84847799997
+ ],
+ [
+ 3,
+ 445255.257604
+ ],
+ [
+ 4,
+ 443665.78191649995
+ ],
+ [
+ 5,
+ 444013.81306724995
+ ],
+ [
+ 6,
+ 444005.78507875
+ ],
+ [
+ 7,
+ 443986.33350575
+ ],
+ [
+ 8,
+ 443488.78459825006
+ ],
+ [
+ 9,
+ 443585.49237225
+ ],
+ [
+ 10,
+ 443744.94754724996
+ ]
+ ],
+ "slope": -319.9209475939924,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 1330.875,
+ "range": 106.0,
+ "series": [
+ [
+ 1,
+ 1267.0
+ ],
+ [
+ 2,
+ 1353.25
+ ],
+ [
+ 3,
+ 1373.0
+ ],
+ [
+ 4,
+ 1366.75
+ ],
+ [
+ 5,
+ 1321.25
+ ],
+ [
+ 6,
+ 1319.25
+ ],
+ [
+ 7,
+ 1320.25
+ ],
+ [
+ 8,
+ 1324.0
+ ],
+ [
+ 9,
+ 1329.75
+ ],
+ [
+ 10,
+ 1334.25
+ ]
+ ],
+ "slope": 0.3287878787878788,
+ "steady_state": true
+ },
+ "write": {
+ "average": 571.2,
+ "range": 19.0,
+ "series": [
+ [
+ 1,
+ 567.5
+ ],
+ [
+ 2,
+ 582.25
+ ],
+ [
+ 3,
+ 582.25
+ ],
+ [
+ 4,
+ 580.0
+ ],
+ [
+ 5,
+ 565.5
+ ],
+ [
+ 6,
+ 563.25
+ ],
+ [
+ 7,
+ 565.5
+ ],
+ [
+ 8,
+ 566.5
+ ],
+ [
+ 9,
+ 568.25
+ ],
+ [
+ 10,
+ 571.0
+ ]
+ ],
+ "slope": -1.1575757575757575,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 83.20840005,
+ "range": 6.627747249999999,
+ "series": [
+ [
+ 1,
+ 79.212592
+ ],
+ [
+ 2,
+ 84.60981925
+ ],
+ [
+ 3,
+ 85.84033925
+ ],
+ [
+ 4,
+ 85.45991475000001
+ ],
+ [
+ 5,
+ 82.61655675
+ ],
+ [
+ 6,
+ 82.493754
+ ],
+ [
+ 7,
+ 82.54040075
+ ],
+ [
+ 8,
+ 82.785349
+ ],
+ [
+ 9,
+ 83.12856749999999
+ ],
+ [
+ 10,
+ 83.39670725
+ ]
+ ],
+ "slope": 0.018981690909078513,
+ "steady_state": true
+ },
+ "write": {
+ "average": 35.731828125,
+ "range": 1.175861250000004,
+ "series": [
+ [
+ 1,
+ 35.501898249999996
+ ],
+ [
+ 2,
+ 36.41712375
+ ],
+ [
+ 3,
+ 36.4260405
+ ],
+ [
+ 4,
+ 36.276751250000004
+ ],
+ [
+ 5,
+ 35.37554025
+ ],
+ [
+ 6,
+ 35.250179249999995
+ ],
+ [
+ 7,
+ 35.3746275
+ ],
+ [
+ 8,
+ 35.43255425
+ ],
+ [
+ 9,
+ 35.5444435
+ ],
+ [
+ 10,
+ 35.71912275
+ ]
+ ],
+ "slope": -0.07244184696969266,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 713643.3585713999,
+ "range": 23709.858276249957,
+ "series": [
+ [
+ 1,
+ 729675.775388
+ ],
+ [
+ 2,
+ 723769.014894
+ ],
+ [
+ 3,
+ 708981.4517677499
+ ],
+ [
+ 4,
+ 705965.91711175
+ ],
+ [
+ 5,
+ 708071.8299872499
+ ],
+ [
+ 6,
+ 710454.4180582501
+ ],
+ [
+ 7,
+ 710105.607196
+ ],
+ [
+ 8,
+ 711470.3763349999
+ ],
+ [
+ 9,
+ 713888.46273575
+ ],
+ [
+ 10,
+ 714050.73224025
+ ]
+ ],
+ "slope": -1106.3210441059778,
+ "steady_state": true
+ },
+ "write": {
+ "average": 26323213.9715425,
+ "range": 925469.424674999,
+ "series": [
+ [
+ 1,
+ 26535405.306149997
+ ],
+ [
+ 2,
+ 25772864.233225
+ ],
+ [
+ 3,
+ 25783687.9498
+ ],
+ [
+ 4,
+ 25896125.514599998
+ ],
+ [
+ 5,
+ 26609687.126824997
+ ],
+ [
+ 6,
+ 26698333.657899998
+ ],
+ [
+ 7,
+ 26604209.8052
+ ],
+ [
+ 8,
+ 26552244.285975
+ ],
+ [
+ 9,
+ 26457646.3019
+ ],
+ [
+ 10,
+ 26321935.53385
+ ]
+ ],
+ "slope": 54108.65220469619,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 175.625,
+ "range": 10.0,
+ "series": [
+ [
+ 1,
+ 170.25
+ ],
+ [
+ 2,
+ 178.25
+ ],
+ [
+ 3,
+ 180.25
+ ],
+ [
+ 4,
+ 175.0
+ ],
+ [
+ 5,
+ 173.25
+ ],
+ [
+ 6,
+ 175.25
+ ],
+ [
+ 7,
+ 175.5
+ ],
+ [
+ 8,
+ 176.0
+ ],
+ [
+ 9,
+ 176.5
+ ],
+ [
+ 10,
+ 176.0
+ ]
+ ],
+ "slope": 0.1318181818181818,
+ "steady_state": true
+ },
+ "write": {
+ "average": 75.025,
+ "range": 2.5,
+ "series": [
+ [
+ 1,
+ 75.5
+ ],
+ [
+ 2,
+ 76.25
+ ],
+ [
+ 3,
+ 76.25
+ ],
+ [
+ 4,
+ 74.25
+ ],
+ [
+ 5,
+ 73.75
+ ],
+ [
+ 6,
+ 74.25
+ ],
+ [
+ 7,
+ 75.0
+ ],
+ [
+ 8,
+ 75.0
+ ],
+ [
+ 9,
+ 75.0
+ ],
+ [
+ 10,
+ 75.0
+ ]
+ ],
+ "slope": -0.10151515151515152,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 88.0461904,
+ "range": 5.085554000000002,
+ "series": [
+ [
+ 1,
+ 85.2725215
+ ],
+ [
+ 2,
+ 89.37518025
+ ],
+ [
+ 3,
+ 90.3580755
+ ],
+ [
+ 4,
+ 87.71597175000001
+ ],
+ [
+ 5,
+ 86.82775775000002
+ ],
+ [
+ 6,
+ 87.8079625
+ ],
+ [
+ 7,
+ 88.00866399999998
+ ],
+ [
+ 8,
+ 88.34511325000001
+ ],
+ [
+ 9,
+ 88.514125
+ ],
+ [
+ 10,
+ 88.2365325
+ ]
+ ],
+ "slope": 0.07540716666667405,
+ "steady_state": true
+ },
+ "write": {
+ "average": 37.805796324999996,
+ "range": 1.374406250000007,
+ "series": [
+ [
+ 1,
+ 37.976800250000004
+ ],
+ [
+ 2,
+ 38.470439750000004
+ ],
+ [
+ 3,
+ 38.4640515
+ ],
+ [
+ 4,
+ 37.4480165
+ ],
+ [
+ 5,
+ 37.0960335
+ ],
+ [
+ 6,
+ 37.4679625
+ ],
+ [
+ 7,
+ 37.70626225
+ ],
+ [
+ 8,
+ 37.73367725
+ ],
+ [
+ 9,
+ 37.8695385
+ ],
+ [
+ 10,
+ 37.82518125
+ ]
+ ],
+ "slope": -0.04894596818181471,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 660567.21077405,
+ "range": 32847.555445999955,
+ "series": [
+ [
+ 1,
+ 639942.52965125
+ ],
+ [
+ 2,
+ 648349.40450475
+ ],
+ [
+ 3,
+ 650934.31853675
+ ],
+ [
+ 4,
+ 659612.2412109999
+ ],
+ [
+ 5,
+ 665196.01840625
+ ],
+ [
+ 6,
+ 665988.5059235
+ ],
+ [
+ 7,
+ 665874.66341
+ ],
+ [
+ 8,
+ 666393.8091404999
+ ],
+ [
+ 9,
+ 670590.53185925
+ ],
+ [
+ 10,
+ 672790.08509725
+ ]
+ ],
+ "slope": 3322.3824098696855,
+ "steady_state": true
+ },
+ "write": {
+ "average": 24908322.7872575,
+ "range": 929658.9088499993,
+ "series": [
+ [
+ 1,
+ 24891161.6188
+ ],
+ [
+ 2,
+ 24481773.708975002
+ ],
+ [
+ 3,
+ 24462363.6983
+ ],
+ [
+ 4,
+ 25150615.79225
+ ],
+ [
+ 5,
+ 25392022.60715
+ ],
+ [
+ 6,
+ 25123415.23245
+ ],
+ [
+ 7,
+ 24957986.5507
+ ],
+ [
+ 8,
+ 24932681.8004
+ ],
+ [
+ 9,
+ 24830841.943375
+ ],
+ [
+ 10,
+ 24860364.920174997
+ ]
+ ],
+ "slope": 22250.925844393645,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 3759.7083333333335,
+ "range": 178.25,
+ "series": [
+ [
+ 2,
+ 3860.0
+ ],
+ [
+ 3,
+ 3867.25
+ ],
+ [
+ 4,
+ 3816.0
+ ],
+ [
+ 5,
+ 3709.0
+ ],
+ [
+ 6,
+ 3689.0
+ ],
+ [
+ 7,
+ 3716.25
+ ],
+ [
+ 8,
+ 3727.0
+ ],
+ [
+ 9,
+ 3733.0
+ ],
+ [
+ 10,
+ 3748.25
+ ],
+ [
+ 11,
+ 3754.5
+ ],
+ [
+ 12,
+ 3744.75
+ ],
+ [
+ 13,
+ 3751.5
+ ]
+ ],
+ "slope": -8.347902097902098,
+ "steady_state": true
+ },
+ "write": {
+ "average": 1607.8125,
+ "range": 75.25,
+ "series": [
+ [
+ 2,
+ 1653.25
+ ],
+ [
+ 3,
+ 1649.0
+ ],
+ [
+ 4,
+ 1632.0
+ ],
+ [
+ 5,
+ 1578.0
+ ],
+ [
+ 6,
+ 1578.5
+ ],
+ [
+ 7,
+ 1587.25
+ ],
+ [
+ 8,
+ 1593.75
+ ],
+ [
+ 9,
+ 1597.0
+ ],
+ [
+ 10,
+ 1603.75
+ ],
+ [
+ 11,
+ 1606.5
+ ],
+ [
+ 12,
+ 1604.75
+ ],
+ [
+ 13,
+ 1610.0
+ ]
+ ],
+ "slope": -3.013111888111888,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 235.01586260416673,
+ "range": 11.166116249999988,
+ "series": [
+ [
+ 2,
+ 241.284111
+ ],
+ [
+ 3,
+ 241.75304125
+ ],
+ [
+ 4,
+ 238.53233175
+ ],
+ [
+ 5,
+ 231.850515
+ ],
+ [
+ 6,
+ 230.586925
+ ],
+ [
+ 7,
+ 232.29514899999998
+ ],
+ [
+ 8,
+ 232.95487749999998
+ ],
+ [
+ 9,
+ 233.354535
+ ],
+ [
+ 10,
+ 234.30577050000002
+ ],
+ [
+ 11,
+ 234.685025
+ ],
+ [
+ 12,
+ 234.08291975
+ ],
+ [
+ 13,
+ 234.50515049999998
+ ]
+ ],
+ "slope": -0.5219998959790645,
+ "steady_state": true
+ },
+ "write": {
+ "average": 100.5299154236111,
+ "range": 4.696515166666671,
+ "series": [
+ [
+ 2,
+ 103.3875215
+ ],
+ [
+ 3,
+ 103.10701925
+ ],
+ [
+ 4,
+ 102.04162174999999
+ ],
+ [
+ 5,
+ 98.69100633333333
+ ],
+ [
+ 6,
+ 98.70211099999999
+ ],
+ [
+ 7,
+ 99.24166499999998
+ ],
+ [
+ 8,
+ 99.63026325
+ ],
+ [
+ 9,
+ 99.86072475
+ ],
+ [
+ 10,
+ 100.28377125
+ ],
+ [
+ 11,
+ 100.43036849999999
+ ],
+ [
+ 12,
+ 100.328593
+ ],
+ [
+ 13,
+ 100.6543195
+ ]
+ ],
+ "slope": -0.19063484935896713,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 869829.5887364306,
+ "range": 147644.24025625002,
+ "series": [
+ [
+ 2,
+ 978890.98869
+ ],
+ [
+ 3,
+ 919887.399798
+ ],
+ [
+ 4,
+ 893034.3425267499
+ ],
+ [
+ 5,
+ 876293.6837116666
+ ],
+ [
+ 6,
+ 867294.3551447501
+ ],
+ [
+ 7,
+ 862025.42090125
+ ],
+ [
+ 8,
+ 852724.3719520001
+ ],
+ [
+ 9,
+ 845383.48817375
+ ],
+ [
+ 10,
+ 840950.2438845
+ ],
+ [
+ 11,
+ 836751.18347425
+ ],
+ [
+ 12,
+ 833472.8381465
+ ],
+ [
+ 13,
+ 831246.74843375
+ ]
+ ],
+ "slope": -10655.771538628704,
+ "steady_state": true
+ },
+ "write": {
+ "average": 37754948.236839585,
+ "range": 2069883.4225750044,
+ "series": [
+ [
+ 2,
+ 36405460.7472
+ ],
+ [
+ 3,
+ 36636013.998050004
+ ],
+ [
+ 4,
+ 37108164.065050006
+ ],
+ [
+ 5,
+ 38432470.1458
+ ],
+ [
+ 6,
+ 38475344.169775
+ ],
+ [
+ 7,
+ 38279723.029
+ ],
+ [
+ 8,
+ 38149861.655275
+ ],
+ [
+ 9,
+ 38076365.02615
+ ],
+ [
+ 10,
+ 37915814.999524996
+ ],
+ [
+ 11,
+ 37867296.676525004
+ ],
+ [
+ 12,
+ 37918802.7299
+ ],
+ [
+ 13,
+ 37794061.599824995
+ ]
+ ],
+ "slope": 98683.78220236274,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 528.6458333333334,
+ "range": 26.0,
+ "series": [
+ [
+ 8,
+ 511.5
+ ],
+ [
+ 9,
+ 518.5
+ ],
+ [
+ 10,
+ 523.75
+ ],
+ [
+ 11,
+ 526.25
+ ],
+ [
+ 12,
+ 529.25
+ ],
+ [
+ 13,
+ 531.25
+ ],
+ [
+ 14,
+ 530.25
+ ],
+ [
+ 15,
+ 531.25
+ ],
+ [
+ 16,
+ 533.5
+ ],
+ [
+ 17,
+ 534.75
+ ],
+ [
+ 18,
+ 536.0
+ ],
+ [
+ 19,
+ 537.5
+ ]
+ ],
+ "slope": 1.9641608391608392,
+ "steady_state": true
+ },
+ "write": {
+ "average": 226.55555555555554,
+ "range": 11.75,
+ "series": [
+ [
+ 8,
+ 218.75
+ ],
+ [
+ 9,
+ 221.75
+ ],
+ [
+ 10,
+ 223.75
+ ],
+ [
+ 11,
+ 225.0
+ ],
+ [
+ 12,
+ 226.75
+ ],
+ [
+ 13,
+ 228.25
+ ],
+ [
+ 14,
+ 227.5
+ ],
+ [
+ 15,
+ 228.0
+ ],
+ [
+ 16,
+ 228.75
+ ],
+ [
+ 17,
+ 229.66666666666666
+ ],
+ [
+ 18,
+ 230.0
+ ],
+ [
+ 19,
+ 230.5
+ ]
+ ],
+ "slope": 0.9324009324008985,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 264.559783875,
+ "range": 13.029766249999994,
+ "series": [
+ [
+ 8,
+ 255.973987
+ ],
+ [
+ 9,
+ 259.44517974999997
+ ],
+ [
+ 10,
+ 262.12450724999997
+ ],
+ [
+ 11,
+ 263.29059574999997
+ ],
+ [
+ 12,
+ 264.98096449999997
+ ],
+ [
+ 13,
+ 265.8923445
+ ],
+ [
+ 14,
+ 265.3140345
+ ],
+ [
+ 15,
+ 265.817487
+ ],
+ [
+ 16,
+ 266.95039825000003
+ ],
+ [
+ 17,
+ 267.60802125000004
+ ],
+ [
+ 18,
+ 268.3161335
+ ],
+ [
+ 19,
+ 269.00375325
+ ]
+ ],
+ "slope": 0.9852478339160833,
+ "steady_state": true
+ },
+ "write": {
+ "average": 113.51736854166667,
+ "range": 6.01005425000001,
+ "series": [
+ [
+ 8,
+ 109.52134575
+ ],
+ [
+ 9,
+ 111.04706125000001
+ ],
+ [
+ 10,
+ 112.19716
+ ],
+ [
+ 11,
+ 112.85240974999999
+ ],
+ [
+ 12,
+ 113.6415475
+ ],
+ [
+ 13,
+ 114.33963449999999
+ ],
+ [
+ 14,
+ 114.07103125
+ ],
+ [
+ 15,
+ 114.15031499999999
+ ],
+ [
+ 16,
+ 114.6166525
+ ],
+ [
+ 17,
+ 114.97107999999999
+ ],
+ [
+ 18,
+ 115.26878500000001
+ ],
+ [
+ 19,
+ 115.5314
+ ]
+ ],
+ "slope": 0.4671414807692203,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 781605.2382714376,
+ "range": 146207.02399675013,
+ "series": [
+ [
+ 8,
+ 873853.1999967501
+ ],
+ [
+ 9,
+ 844807.6597279999
+ ],
+ [
+ 10,
+ 821485.5685464999
+ ],
+ [
+ 11,
+ 805120.41171975
+ ],
+ [
+ 12,
+ 788870.0182625
+ ],
+ [
+ 13,
+ 776105.47828775
+ ],
+ [
+ 14,
+ 765798.8111862501
+ ],
+ [
+ 15,
+ 755340.47095375
+ ],
+ [
+ 16,
+ 747625.1725295
+ ],
+ [
+ 17,
+ 739716.02985775
+ ],
+ [
+ 18,
+ 732893.86218875
+ ],
+ [
+ 19,
+ 727646.176
+ ]
+ ],
+ "slope": -12539.369642020105,
+ "steady_state": true
+ },
+ "write": {
+ "average": 33418557.713774994,
+ "range": 1552656.050900001,
+ "series": [
+ [
+ 8,
+ 34475084.852325
+ ],
+ [
+ 9,
+ 34041348.639699996
+ ],
+ [
+ 10,
+ 33727006.273274995
+ ],
+ [
+ 11,
+ 33560890.344925
+ ],
+ [
+ 12,
+ 33352520.323925
+ ],
+ [
+ 13,
+ 33172782.0964
+ ],
+ [
+ 14,
+ 33278536.274675
+ ],
+ [
+ 15,
+ 33275970.927474998
+ ],
+ [
+ 16,
+ 33151511.570274998
+ ],
+ [
+ 17,
+ 33075035.275100004
+ ],
+ [
+ 18,
+ 32989577.1858
+ ],
+ [
+ 19,
+ 32922428.801425
+ ]
+ ],
+ "slope": -116362.74306485814,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 248.225,
+ "range": 36.75,
+ "series": [
+ [
+ 1,
+ 273.5
+ ],
+ [
+ 2,
+ 255.0
+ ],
+ [
+ 3,
+ 255.75
+ ],
+ [
+ 4,
+ 251.0
+ ],
+ [
+ 5,
+ 246.0
+ ],
+ [
+ 6,
+ 242.5
+ ],
+ [
+ 7,
+ 236.75
+ ],
+ [
+ 8,
+ 238.5
+ ],
+ [
+ 9,
+ 242.75
+ ],
+ [
+ 10,
+ 240.5
+ ]
+ ],
+ "slope": -3.1227272727272726,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 15.549817324999998,
+ "range": 2.2912782500000013,
+ "series": [
+ [
+ 1,
+ 17.1320055
+ ],
+ [
+ 2,
+ 15.968691750000001
+ ],
+ [
+ 3,
+ 16.03436
+ ],
+ [
+ 4,
+ 15.721307
+ ],
+ [
+ 5,
+ 15.41014775
+ ],
+ [
+ 6,
+ 15.201199250000002
+ ],
+ [
+ 7,
+ 14.84072725
+ ],
+ [
+ 8,
+ 14.9333655
+ ],
+ [
+ 9,
+ 15.21108975
+ ],
+ [
+ 10,
+ 15.0452795
+ ]
+ ],
+ "slope": -0.19660247424242147,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 64427931.15620749,
+ "range": 8999619.853124999,
+ "series": [
+ [
+ 1,
+ 58380828.476075
+ ],
+ [
+ 2,
+ 62631188.758175
+ ],
+ [
+ 3,
+ 62364158.91305
+ ],
+ [
+ 4,
+ 63633429.88015
+ ],
+ [
+ 5,
+ 64909101.665675
+ ],
+ [
+ 6,
+ 65813404.35165
+ ],
+ [
+ 7,
+ 67380448.3292
+ ],
+ [
+ 8,
+ 66964105.875149995
+ ],
+ [
+ 9,
+ 65738859.9587
+ ],
+ [
+ 10,
+ 66463785.35425
+ ]
+ ],
+ "slope": 785729.7160659143,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 20.125,
+ "range": 1.0,
+ "series": [
+ [
+ 1,
+ 20.0
+ ],
+ [
+ 2,
+ 20.0
+ ],
+ [
+ 3,
+ 20.25
+ ],
+ [
+ 4,
+ 20.0
+ ],
+ [
+ 5,
+ 20.0
+ ],
+ [
+ 6,
+ 20.0
+ ],
+ [
+ 7,
+ 20.0
+ ],
+ [
+ 8,
+ 20.0
+ ],
+ [
+ 9,
+ 21.0
+ ],
+ [
+ 10,
+ 20.0
+ ]
+ ],
+ "slope": 0.03484848484848485,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 10.427344899999998,
+ "range": 0.32037200000000077,
+ "series": [
+ [
+ 1,
+ 10.203911249999999
+ ],
+ [
+ 2,
+ 10.374599499999999
+ ],
+ [
+ 3,
+ 10.496638
+ ],
+ [
+ 4,
+ 10.409741499999999
+ ],
+ [
+ 5,
+ 10.481813500000001
+ ],
+ [
+ 6,
+ 10.42780175
+ ],
+ [
+ 7,
+ 10.412356749999999
+ ],
+ [
+ 8,
+ 10.46591325
+ ],
+ [
+ 9,
+ 10.52428325
+ ],
+ [
+ 10,
+ 10.47639025
+ ]
+ ],
+ "slope": 0.02000186363636396,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 95963155.1299075,
+ "range": 3038524.031124994,
+ "series": [
+ [
+ 1,
+ 98065360.800225
+ ],
+ [
+ 2,
+ 96692756.31844999
+ ],
+ [
+ 3,
+ 95318794.1948
+ ],
+ [
+ 4,
+ 96086671.524875
+ ],
+ [
+ 5,
+ 95413878.554575
+ ],
+ [
+ 6,
+ 95907119.502475
+ ],
+ [
+ 7,
+ 96088066.142825
+ ],
+ [
+ 8,
+ 95555966.24024999
+ ],
+ [
+ 9,
+ 95026836.76910001
+ ],
+ [
+ 10,
+ 95476101.2515
+ ]
+ ],
+ "slope": -201705.98639378403,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 427.775,
+ "range": 67.0,
+ "series": [
+ [
+ 1,
+ 477.75
+ ],
+ [
+ 2,
+ 418.5
+ ],
+ [
+ 3,
+ 441.25
+ ],
+ [
+ 4,
+ 444.0
+ ],
+ [
+ 5,
+ 422.25
+ ],
+ [
+ 6,
+ 418.25
+ ],
+ [
+ 7,
+ 418.0
+ ],
+ [
+ 8,
+ 414.0
+ ],
+ [
+ 9,
+ 413.0
+ ],
+ [
+ 10,
+ 410.75
+ ]
+ ],
+ "slope": -5.210606060606061,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 26.78937345,
+ "range": 4.253062,
+ "series": [
+ [
+ 1,
+ 29.9558875
+ ],
+ [
+ 2,
+ 26.23842875
+ ],
+ [
+ 3,
+ 27.649475
+ ],
+ [
+ 4,
+ 27.78868975
+ ],
+ [
+ 5,
+ 26.44498875
+ ],
+ [
+ 6,
+ 26.193269
+ ],
+ [
+ 7,
+ 26.162226750000002
+ ],
+ [
+ 8,
+ 25.91197175
+ ],
+ [
+ 9,
+ 25.84597175
+ ],
+ [
+ 10,
+ 25.7028255
+ ]
+ ],
+ "slope": -0.33238413333333233,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 149598772.13805,
+ "range": 21937585.74699998,
+ "series": [
+ [
+ 1,
+ 133719332.153
+ ],
+ [
+ 2,
+ 152361153.3495
+ ],
+ [
+ 3,
+ 144744121.23375
+ ],
+ [
+ 4,
+ 143992851.85549998
+ ],
+ [
+ 5,
+ 151314282.59375
+ ],
+ [
+ 6,
+ 152289796.7005
+ ],
+ [
+ 7,
+ 152947144.571
+ ],
+ [
+ 8,
+ 154300356.265
+ ],
+ [
+ 9,
+ 154661764.75849998
+ ],
+ [
+ 10,
+ 155656917.89999998
+ ]
+ ],
+ "slope": 1752497.6908818285,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 30.475,
+ "range": 1.25,
+ "series": [
+ [
+ 1,
+ 31.25
+ ],
+ [
+ 2,
+ 31.25
+ ],
+ [
+ 3,
+ 30.25
+ ],
+ [
+ 4,
+ 30.75
+ ],
+ [
+ 5,
+ 31.0
+ ],
+ [
+ 6,
+ 30.25
+ ],
+ [
+ 7,
+ 30.0
+ ],
+ [
+ 8,
+ 30.0
+ ],
+ [
+ 9,
+ 30.0
+ ],
+ [
+ 10,
+ 30.0
+ ]
+ ],
+ "slope": -0.14696969696969697,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 15.548998325,
+ "range": 0.6998595000000023,
+ "series": [
+ [
+ 1,
+ 15.92157825
+ ],
+ [
+ 2,
+ 16.01863
+ ],
+ [
+ 3,
+ 15.52162825
+ ],
+ [
+ 4,
+ 15.57092875
+ ],
+ [
+ 5,
+ 15.594784
+ ],
+ [
+ 6,
+ 15.462772000000001
+ ],
+ [
+ 7,
+ 15.379908
+ ],
+ [
+ 8,
+ 15.377563749999998
+ ],
+ [
+ 9,
+ 15.32341975
+ ],
+ [
+ 10,
+ 15.3187705
+ ]
+ ],
+ "slope": -0.07101295909091167,
+ "steady_state": true
+ }
+ },
+ "lat_ns.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 257251372.43019995,
+ "range": 10965972.155000031,
+ "series": [
+ [
+ 1,
+ 251726407.56699997
+ ],
+ [
+ 2,
+ 249662338.34149998
+ ],
+ [
+ 3,
+ 257039601.8285
+ ],
+ [
+ 4,
+ 257145376.43175
+ ],
+ [
+ 5,
+ 256644813.18375
+ ],
+ [
+ 6,
+ 258877218.7745
+ ],
+ [
+ 7,
+ 260241030.71649998
+ ],
+ [
+ 8,
+ 260166879.5025
+ ],
+ [
+ 9,
+ 260628310.49650002
+ ],
+ [
+ 10,
+ 260381747.45949998
+ ]
+ ],
+ "slope": 1101912.854136371,
+ "steady_state": true
+ }
+ }
+ }
+ },
+ "scenario_name": "os-nosdn-nofeature-noha",
+ "steady_state": {
+ "_warm_up.queue-depth.8.block-size.16384": true,
+ "rr.queue-depth.1.block-size.16384": true,
+ "rr.queue-depth.1.block-size.2048": true,
+ "rr.queue-depth.4.block-size.16384": true,
+ "rr.queue-depth.4.block-size.2048": true,
+ "rw.queue-depth.1.block-size.16384": true,
+ "rw.queue-depth.1.block-size.2048": true,
+ "rw.queue-depth.4.block-size.16384": true,
+ "rw.queue-depth.4.block-size.2048": true,
+ "wr.queue-depth.1.block-size.16384": true,
+ "wr.queue-depth.1.block-size.2048": true,
+ "wr.queue-depth.4.block-size.16384": true,
+ "wr.queue-depth.4.block-size.2048": true
+ },
+ "storage_node_count": 4,
+ "test_case": "snia_steady_state",
+ "timestart": 1503449523.541749,
+ "version": "master",
+ "volume_size": 4
+ },
+ "installer": "apex",
+ "pod_name": "intel-pod9",
+ "project_name": "storperf",
+ "public": "true",
+ "scenario": "os-nosdn-nofeature-noha",
+ "start_date": "2017-08-23 00:52:03",
+ "stop_date": "2017-08-23 03:39:28",
+ "trust_indicator": null,
+ "user": null,
+ "version": "master"
+ },
+ {
+ "_id": "599ccfee56a44e000ef81fdd",
+ "build_tag": "jenkins-storperf-daily-danube-136",
+ "case_name": "snia_steady_state",
+ "criteria": "PASS",
+ "details": {
+ "agent_count": 4,
+ "build_tag": "jenkins-storperf-daily-danube-136",
+ "disk_type": "SSD",
+ "duration": 9532.934885025024,
+ "metrics": {
+ "_warm_up.queue-depth.8.block-size.16384.read.bw": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.read.iops": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.read.lat.mean": 0.0,
+ "_warm_up.queue-depth.8.block-size.16384.write.bw": 2743.578125,
+ "_warm_up.queue-depth.8.block-size.16384.write.iops": 171.50671875000003,
+ "_warm_up.queue-depth.8.block-size.16384.write.lat.mean": 46647.60656250001,
+ "rr.queue-depth.1.block-size.16384.read.bw": 23310.55,
+ "rr.queue-depth.1.block-size.16384.read.iops": 1456.9434999999999,
+ "rr.queue-depth.1.block-size.16384.read.lat.mean": 683.8729999999999,
+ "rr.queue-depth.1.block-size.16384.write.bw": 0.0,
+ "rr.queue-depth.1.block-size.16384.write.iops": 0.0,
+ "rr.queue-depth.1.block-size.16384.write.lat.mean": 0.0,
+ "rr.queue-depth.1.block-size.2048.read.bw": 3415.0,
+ "rr.queue-depth.1.block-size.2048.read.iops": 1707.7765,
+ "rr.queue-depth.1.block-size.2048.read.lat.mean": 583.12175,
+ "rr.queue-depth.1.block-size.2048.write.bw": 0.0,
+ "rr.queue-depth.1.block-size.2048.write.iops": 0.0,
+ "rr.queue-depth.1.block-size.2048.write.lat.mean": 0.0,
+ "rr.queue-depth.4.block-size.16384.read.bw": 69811.975,
+ "rr.queue-depth.4.block-size.16384.read.iops": 4363.3005,
+ "rr.queue-depth.4.block-size.16384.read.lat.mean": 917.0989999999999,
+ "rr.queue-depth.4.block-size.16384.write.bw": 0.0,
+ "rr.queue-depth.4.block-size.16384.write.iops": 0.0,
+ "rr.queue-depth.4.block-size.16384.write.lat.mean": 0.0,
+ "rr.queue-depth.4.block-size.2048.read.bw": 18082.45,
+ "rr.queue-depth.4.block-size.2048.read.iops": 9041.48675,
+ "rr.queue-depth.4.block-size.2048.read.lat.mean": 441.44575,
+ "rr.queue-depth.4.block-size.2048.write.bw": 0.0,
+ "rr.queue-depth.4.block-size.2048.write.iops": 0.0,
+ "rr.queue-depth.4.block-size.2048.write.lat.mean": 0.0,
+ "rw.queue-depth.1.block-size.16384.read.bw": 1384.525,
+ "rw.queue-depth.1.block-size.16384.read.iops": 86.566,
+ "rw.queue-depth.1.block-size.16384.read.lat.mean": 738.3205,
+ "rw.queue-depth.1.block-size.16384.write.bw": 592.8,
+ "rw.queue-depth.1.block-size.16384.write.iops": 37.08725,
+ "rw.queue-depth.1.block-size.16384.write.lat.mean": 25236.5115,
+ "rw.queue-depth.1.block-size.2048.read.bw": 180.325,
+ "rw.queue-depth.1.block-size.2048.read.iops": 90.42750000000001,
+ "rw.queue-depth.1.block-size.2048.read.lat.mean": 676.5899999999999,
+ "rw.queue-depth.1.block-size.2048.write.bw": 77.075,
+ "rw.queue-depth.1.block-size.2048.write.iops": 38.80025,
+ "rw.queue-depth.1.block-size.2048.write.lat.mean": 24190.365249999995,
+ "rw.queue-depth.4.block-size.16384.read.bw": 3844.7916666666665,
+ "rw.queue-depth.4.block-size.16384.read.iops": 240.33729166666663,
+ "rw.queue-depth.4.block-size.16384.read.lat.mean": 835.3579166666665,
+ "rw.queue-depth.4.block-size.16384.write.bw": 1650.9375,
+ "rw.queue-depth.4.block-size.16384.write.iops": 103.2275,
+ "rw.queue-depth.4.block-size.16384.write.lat.mean": 36799.755208333336,
+ "rw.queue-depth.4.block-size.2048.read.bw": 531.2916666666666,
+ "rw.queue-depth.4.block-size.2048.read.iops": 265.9016666666667,
+ "rw.queue-depth.4.block-size.2048.read.lat.mean": 768.5285416666666,
+ "rw.queue-depth.4.block-size.2048.write.bw": 227.77083333333334,
+ "rw.queue-depth.4.block-size.2048.write.iops": 114.14020833333332,
+ "rw.queue-depth.4.block-size.2048.write.lat.mean": 33255.332708333335,
+ "wr.queue-depth.1.block-size.16384.read.bw": 0.0,
+ "wr.queue-depth.1.block-size.16384.read.iops": 0.0,
+ "wr.queue-depth.1.block-size.16384.read.lat.mean": 0.0,
+ "wr.queue-depth.1.block-size.16384.write.bw": 253.425,
+ "wr.queue-depth.1.block-size.16384.write.iops": 15.87725,
+ "wr.queue-depth.1.block-size.16384.write.lat.mean": 63037.021250000005,
+ "wr.queue-depth.1.block-size.2048.read.bw": 0.0,
+ "wr.queue-depth.1.block-size.2048.read.iops": 0.0,
+ "wr.queue-depth.1.block-size.2048.read.lat.mean": 0.0,
+ "wr.queue-depth.1.block-size.2048.write.bw": 20.85,
+ "wr.queue-depth.1.block-size.2048.write.iops": 10.7745,
+ "wr.queue-depth.1.block-size.2048.write.lat.mean": 92933.133,
+ "wr.queue-depth.4.block-size.16384.read.bw": 0.0,
+ "wr.queue-depth.4.block-size.16384.read.iops": 0.0,
+ "wr.queue-depth.4.block-size.16384.read.lat.mean": 0.0,
+ "wr.queue-depth.4.block-size.16384.write.bw": 409.6,
+ "wr.queue-depth.4.block-size.16384.write.iops": 25.655,
+ "wr.queue-depth.4.block-size.16384.write.lat.mean": 156202.00424999997,
+ "wr.queue-depth.4.block-size.2048.read.bw": 0.0,
+ "wr.queue-depth.4.block-size.2048.read.iops": 0.0,
+ "wr.queue-depth.4.block-size.2048.read.lat.mean": 0.0,
+ "wr.queue-depth.4.block-size.2048.write.bw": 31.55,
+ "wr.queue-depth.4.block-size.2048.write.iops": 16.063,
+ "wr.queue-depth.4.block-size.2048.write.lat.mean": 248749.96375000002
+ },
+ "pod_name": "intel-pod9",
+ "public_network": "external",
+ "report_data": {
+ "_warm_up.queue-depth.8.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 14,
+ 0.0
+ ],
+ [
+ 15,
+ 0.0
+ ],
+ [
+ 16,
+ 0.0
+ ],
+ [
+ 17,
+ 0.0
+ ],
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 2743.578125,
+ "range": 48.0,
+ "series": [
+ [
+ 14,
+ 2744.5
+ ],
+ [
+ 15,
+ 2763.25
+ ],
+ [
+ 16,
+ 2740.0
+ ],
+ [
+ 17,
+ 2746.0
+ ],
+ [
+ 18,
+ 2744.25
+ ],
+ [
+ 19,
+ 2747.25
+ ],
+ [
+ 20,
+ 2746.5
+ ],
+ [
+ 21,
+ 2745.25
+ ],
+ [
+ 22,
+ 2742.5
+ ],
+ [
+ 23,
+ 2743.75
+ ],
+ [
+ 24,
+ 2739.0
+ ],
+ [
+ 25,
+ 2737.0
+ ],
+ [
+ 25,
+ 2764.0
+ ],
+ [
+ 25,
+ 2754.0
+ ],
+ [
+ 26,
+ 2724.0
+ ],
+ [
+ 26,
+ 2716.0
+ ]
+ ],
+ "slope": -1.1180555555555556,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 14,
+ 0.0
+ ],
+ [
+ 15,
+ 0.0
+ ],
+ [
+ 16,
+ 0.0
+ ],
+ [
+ 17,
+ 0.0
+ ],
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 171.50671875000003,
+ "range": 3.009999999999991,
+ "series": [
+ [
+ 14,
+ 171.57
+ ],
+ [
+ 15,
+ 172.7175
+ ],
+ [
+ 16,
+ 171.28
+ ],
+ [
+ 17,
+ 171.67249999999999
+ ],
+ [
+ 18,
+ 171.555
+ ],
+ [
+ 19,
+ 171.745
+ ],
+ [
+ 20,
+ 171.685
+ ],
+ [
+ 21,
+ 171.625
+ ],
+ [
+ 22,
+ 171.4375
+ ],
+ [
+ 23,
+ 171.5175
+ ],
+ [
+ 24,
+ 171.23
+ ],
+ [
+ 25,
+ 171.09250000000003
+ ],
+ [
+ 25,
+ 172.78
+ ],
+ [
+ 25,
+ 172.17
+ ],
+ [
+ 26,
+ 170.26
+ ],
+ [
+ 26,
+ 169.77
+ ]
+ ],
+ "slope": -0.07040674603180493,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 14,
+ 0.0
+ ],
+ [
+ 15,
+ 0.0
+ ],
+ [
+ 16,
+ 0.0
+ ],
+ [
+ 17,
+ 0.0
+ ],
+ [
+ 18,
+ 0.0
+ ],
+ [
+ 19,
+ 0.0
+ ],
+ [
+ 20,
+ 0.0
+ ],
+ [
+ 21,
+ 0.0
+ ],
+ [
+ 22,
+ 0.0
+ ],
+ [
+ 23,
+ 0.0
+ ],
+ [
+ 24,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 25,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ],
+ [
+ 26,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 46647.60656250001,
+ "range": 821.6600000000035,
+ "series": [
+ [
+ 14,
+ 46631.7625
+ ],
+ [
+ 15,
+ 46319.89749999999
+ ],
+ [
+ 16,
+ 46709.1
+ ],
+ [
+ 17,
+ 46601.287500000006
+ ],
+ [
+ 18,
+ 46635.5175
+ ],
+ [
+ 19,
+ 46583.445
+ ],
+ [
+ 20,
+ 46599.3475
+ ],
+ [
+ 21,
+ 46615.565
+ ],
+ [
+ 22,
+ 46666.299999999996
+ ],
+ [
+ 23,
+ 46645.2025
+ ],
+ [
+ 24,
+ 46724.49249999999
+ ],
+ [
+ 25,
+ 46761.0375
+ ],
+ [
+ 25,
+ 46299.02
+ ],
+ [
+ 25,
+ 46463.77
+ ],
+ [
+ 26,
+ 46985.28
+ ],
+ [
+ 26,
+ 47120.68
+ ]
+ ],
+ "slope": 19.00845238093346,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 23310.55,
+ "range": 834.75,
+ "series": [
+ [
+ 1,
+ 23918.0
+ ],
+ [
+ 2,
+ 23582.0
+ ],
+ [
+ 3,
+ 23468.5
+ ],
+ [
+ 4,
+ 23315.5
+ ],
+ [
+ 5,
+ 23197.5
+ ],
+ [
+ 6,
+ 23175.5
+ ],
+ [
+ 7,
+ 23100.75
+ ],
+ [
+ 8,
+ 23083.25
+ ],
+ [
+ 9,
+ 23119.25
+ ],
+ [
+ 10,
+ 23145.25
+ ]
+ ],
+ "slope": -77.4939393939394,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 1456.9434999999999,
+ "range": 52.19749999999999,
+ "series": [
+ [
+ 1,
+ 1494.925
+ ],
+ [
+ 2,
+ 1473.905
+ ],
+ [
+ 3,
+ 1466.8349999999998
+ ],
+ [
+ 4,
+ 1457.24
+ ],
+ [
+ 5,
+ 1449.8625
+ ],
+ [
+ 6,
+ 1448.515
+ ],
+ [
+ 7,
+ 1443.825
+ ],
+ [
+ 8,
+ 1442.7275
+ ],
+ [
+ 9,
+ 1444.9875000000002
+ ],
+ [
+ 10,
+ 1446.6125
+ ]
+ ],
+ "slope": -4.844636363636307,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 683.8729999999999,
+ "range": 23.874999999999886,
+ "series": [
+ [
+ 1,
+ 666.59
+ ],
+ [
+ 2,
+ 676.025
+ ],
+ [
+ 3,
+ 679.165
+ ],
+ [
+ 4,
+ 683.67
+ ],
+ [
+ 5,
+ 687.1099999999999
+ ],
+ [
+ 6,
+ 687.7199999999999
+ ],
+ [
+ 7,
+ 689.95
+ ],
+ [
+ 8,
+ 690.4649999999999
+ ],
+ [
+ 9,
+ 689.405
+ ],
+ [
+ 10,
+ 688.63
+ ]
+ ],
+ "slope": 2.2301212121212544,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 3415.0,
+ "range": 168.25,
+ "series": [
+ [
+ 1,
+ 3294.5
+ ],
+ [
+ 2,
+ 3378.5
+ ],
+ [
+ 3,
+ 3397.75
+ ],
+ [
+ 4,
+ 3407.0
+ ],
+ [
+ 5,
+ 3423.75
+ ],
+ [
+ 6,
+ 3436.5
+ ],
+ [
+ 7,
+ 3442.0
+ ],
+ [
+ 8,
+ 3448.0
+ ],
+ [
+ 9,
+ 3459.25
+ ],
+ [
+ 10,
+ 3462.75
+ ]
+ ],
+ "slope": 14.83939393939394,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 1707.7765,
+ "range": 84.05750000000012,
+ "series": [
+ [
+ 1,
+ 1647.5275
+ ],
+ [
+ 2,
+ 1689.6425
+ ],
+ [
+ 3,
+ 1699.1025
+ ],
+ [
+ 4,
+ 1703.7825
+ ],
+ [
+ 5,
+ 1712.07
+ ],
+ [
+ 6,
+ 1718.4675000000002
+ ],
+ [
+ 7,
+ 1721.2725
+ ],
+ [
+ 8,
+ 1724.3725
+ ],
+ [
+ 9,
+ 1729.9424999999999
+ ],
+ [
+ 10,
+ 1731.585
+ ]
+ ],
+ "slope": 7.4171818181818745,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 583.12175,
+ "range": 29.660000000000082,
+ "series": [
+ [
+ 1,
+ 604.53
+ ],
+ [
+ 2,
+ 589.47
+ ],
+ [
+ 3,
+ 586.0600000000001
+ ],
+ [
+ 4,
+ 584.3925
+ ],
+ [
+ 5,
+ 581.5024999999999
+ ],
+ [
+ 6,
+ 579.335
+ ],
+ [
+ 7,
+ 578.345
+ ],
+ [
+ 8,
+ 577.2925
+ ],
+ [
+ 9,
+ 575.4200000000001
+ ],
+ [
+ 10,
+ 574.8699999999999
+ ]
+ ],
+ "slope": -2.6026515151514444,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 69811.975,
+ "range": 42.0,
+ "series": [
+ [
+ 1,
+ 69839.75
+ ],
+ [
+ 2,
+ 69828.0
+ ],
+ [
+ 3,
+ 69820.5
+ ],
+ [
+ 4,
+ 69797.75
+ ],
+ [
+ 5,
+ 69802.5
+ ],
+ [
+ 6,
+ 69799.25
+ ],
+ [
+ 7,
+ 69811.0
+ ],
+ [
+ 8,
+ 69809.25
+ ],
+ [
+ 9,
+ 69805.25
+ ],
+ [
+ 10,
+ 69806.5
+ ]
+ ],
+ "slope": -2.8984848484848484,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 4363.3005,
+ "range": 2.6924999999991996,
+ "series": [
+ [
+ 1,
+ 4365.0875
+ ],
+ [
+ 2,
+ 4364.31
+ ],
+ [
+ 3,
+ 4363.845
+ ],
+ [
+ 4,
+ 4362.395
+ ],
+ [
+ 5,
+ 4362.717500000001
+ ],
+ [
+ 6,
+ 4362.5125
+ ],
+ [
+ 7,
+ 4363.2225
+ ],
+ [
+ 8,
+ 4363.110000000001
+ ],
+ [
+ 9,
+ 4362.855
+ ],
+ [
+ 10,
+ 4362.950000000001
+ ]
+ ],
+ "slope": -0.1867878787885561,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 917.0989999999999,
+ "range": 0.7775000000001455,
+ "series": [
+ [
+ 1,
+ 916.5274999999999
+ ],
+ [
+ 2,
+ 916.82
+ ],
+ [
+ 3,
+ 916.9300000000001
+ ],
+ [
+ 4,
+ 917.2674999999999
+ ],
+ [
+ 5,
+ 917.2550000000001
+ ],
+ [
+ 6,
+ 917.3050000000001
+ ],
+ [
+ 7,
+ 917.1725
+ ],
+ [
+ 8,
+ 917.2149999999999
+ ],
+ [
+ 9,
+ 917.2674999999999
+ ],
+ [
+ 10,
+ 917.23
+ ]
+ ],
+ "slope": 0.06451515151519385,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rr.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 18082.45,
+ "range": 93.25,
+ "series": [
+ [
+ 1,
+ 18023.0
+ ],
+ [
+ 2,
+ 18016.75
+ ],
+ [
+ 3,
+ 18049.75
+ ],
+ [
+ 4,
+ 18105.75
+ ],
+ [
+ 5,
+ 18109.0
+ ],
+ [
+ 6,
+ 18104.5
+ ],
+ [
+ 7,
+ 18098.5
+ ],
+ [
+ 8,
+ 18110.0
+ ],
+ [
+ 9,
+ 18107.0
+ ],
+ [
+ 10,
+ 18100.25
+ ]
+ ],
+ "slope": 9.709090909090909,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 9041.48675,
+ "range": 46.55999999999767,
+ "series": [
+ [
+ 1,
+ 9011.8725
+ ],
+ [
+ 2,
+ 9008.630000000001
+ ],
+ [
+ 3,
+ 9025.1325
+ ],
+ [
+ 4,
+ 9053.119999999999
+ ],
+ [
+ 5,
+ 9054.810000000001
+ ],
+ [
+ 6,
+ 9052.4425
+ ],
+ [
+ 7,
+ 9049.5875
+ ],
+ [
+ 8,
+ 9055.189999999999
+ ],
+ [
+ 9,
+ 9053.6225
+ ],
+ [
+ 10,
+ 9050.46
+ ]
+ ],
+ "slope": 4.845803030302579,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 441.44575,
+ "range": 2.267499999999984,
+ "series": [
+ [
+ 1,
+ 442.905
+ ],
+ [
+ 2,
+ 443.0425
+ ],
+ [
+ 3,
+ 442.2475
+ ],
+ [
+ 4,
+ 440.885
+ ],
+ [
+ 5,
+ 440.79499999999996
+ ],
+ [
+ 6,
+ 440.91
+ ],
+ [
+ 7,
+ 441.04499999999996
+ ],
+ [
+ 8,
+ 440.77500000000003
+ ],
+ [
+ 9,
+ 440.85
+ ],
+ [
+ 10,
+ 441.0025
+ ]
+ ],
+ "slope": -0.2378030303030303,
+ "steady_state": true
+ },
+ "write": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 1384.525,
+ "range": 36.75,
+ "series": [
+ [
+ 1,
+ 1387.0
+ ],
+ [
+ 2,
+ 1376.75
+ ],
+ [
+ 3,
+ 1388.25
+ ],
+ [
+ 4,
+ 1367.75
+ ],
+ [
+ 5,
+ 1368.0
+ ],
+ [
+ 6,
+ 1379.5
+ ],
+ [
+ 7,
+ 1393.75
+ ],
+ [
+ 8,
+ 1396.75
+ ],
+ [
+ 9,
+ 1404.5
+ ],
+ [
+ 10,
+ 1383.0
+ ]
+ ],
+ "slope": 1.759090909090909,
+ "steady_state": true
+ },
+ "write": {
+ "average": 592.8,
+ "range": 14.0,
+ "series": [
+ [
+ 1,
+ 590.25
+ ],
+ [
+ 2,
+ 586.75
+ ],
+ [
+ 3,
+ 589.5
+ ],
+ [
+ 4,
+ 588.0
+ ],
+ [
+ 5,
+ 591.75
+ ],
+ [
+ 6,
+ 592.5
+ ],
+ [
+ 7,
+ 596.75
+ ],
+ [
+ 8,
+ 599.0
+ ],
+ [
+ 9,
+ 600.75
+ ],
+ [
+ 10,
+ 592.75
+ ]
+ ],
+ "slope": 1.1818181818181819,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 86.566,
+ "range": 2.2974999999999994,
+ "series": [
+ [
+ 1,
+ 86.70250000000001
+ ],
+ [
+ 2,
+ 86.095
+ ],
+ [
+ 3,
+ 86.805
+ ],
+ [
+ 4,
+ 85.515
+ ],
+ [
+ 5,
+ 85.53250000000001
+ ],
+ [
+ 6,
+ 86.2525
+ ],
+ [
+ 7,
+ 87.1425
+ ],
+ [
+ 8,
+ 87.3325
+ ],
+ [
+ 9,
+ 87.8125
+ ],
+ [
+ 10,
+ 86.47000000000001
+ ]
+ ],
+ "slope": 0.11012121212121036,
+ "steady_state": true
+ },
+ "write": {
+ "average": 37.08725,
+ "range": 0.875,
+ "series": [
+ [
+ 1,
+ 36.949999999999996
+ ],
+ [
+ 2,
+ 36.7025
+ ],
+ [
+ 3,
+ 36.8925
+ ],
+ [
+ 4,
+ 36.785
+ ],
+ [
+ 5,
+ 37.025
+ ],
+ [
+ 6,
+ 37.0675
+ ],
+ [
+ 7,
+ 37.315
+ ],
+ [
+ 8,
+ 37.465
+ ],
+ [
+ 9,
+ 37.5775
+ ],
+ [
+ 10,
+ 37.0925
+ ]
+ ],
+ "slope": 0.07213636363636451,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 738.3205,
+ "range": 30.58000000000004,
+ "series": [
+ [
+ 1,
+ 758.5475
+ ],
+ [
+ 2,
+ 749.01
+ ],
+ [
+ 3,
+ 742.63
+ ],
+ [
+ 4,
+ 740.1600000000001
+ ],
+ [
+ 5,
+ 737.6325
+ ],
+ [
+ 6,
+ 737.0024999999999
+ ],
+ [
+ 7,
+ 732.9375
+ ],
+ [
+ 8,
+ 729.0450000000001
+ ],
+ [
+ 9,
+ 728.2725
+ ],
+ [
+ 10,
+ 727.9675
+ ]
+ ],
+ "slope": -3.094575757575786,
+ "steady_state": true
+ },
+ "write": {
+ "average": 25236.5115,
+ "range": 594.1824999999953,
+ "series": [
+ [
+ 1,
+ 25285.7225
+ ],
+ [
+ 2,
+ 25496.177499999998
+ ],
+ [
+ 3,
+ 25350.774999999998
+ ],
+ [
+ 4,
+ 25458.765
+ ],
+ [
+ 5,
+ 25297.09
+ ],
+ [
+ 6,
+ 25255.59
+ ],
+ [
+ 7,
+ 25078.3525
+ ],
+ [
+ 8,
+ 24984.6325
+ ],
+ [
+ 9,
+ 24901.995000000003
+ ],
+ [
+ 10,
+ 25256.015
+ ]
+ ],
+ "slope": -45.0914848484844,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 180.325,
+ "range": 4.25,
+ "series": [
+ [
+ 1,
+ 179.25
+ ],
+ [
+ 2,
+ 180.0
+ ],
+ [
+ 3,
+ 182.25
+ ],
+ [
+ 4,
+ 180.25
+ ],
+ [
+ 5,
+ 180.25
+ ],
+ [
+ 6,
+ 181.25
+ ],
+ [
+ 7,
+ 181.5
+ ],
+ [
+ 8,
+ 181.5
+ ],
+ [
+ 9,
+ 179.0
+ ],
+ [
+ 10,
+ 178.0
+ ]
+ ],
+ "slope": -0.10454545454545454,
+ "steady_state": true
+ },
+ "write": {
+ "average": 77.075,
+ "range": 2.0,
+ "series": [
+ [
+ 1,
+ 77.0
+ ],
+ [
+ 2,
+ 76.75
+ ],
+ [
+ 3,
+ 77.25
+ ],
+ [
+ 4,
+ 77.25
+ ],
+ [
+ 5,
+ 77.25
+ ],
+ [
+ 6,
+ 77.25
+ ],
+ [
+ 7,
+ 78.0
+ ],
+ [
+ 8,
+ 77.5
+ ],
+ [
+ 9,
+ 76.5
+ ],
+ [
+ 10,
+ 76.0
+ ]
+ ],
+ "slope": -0.04393939393939394,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 90.42750000000001,
+ "range": 2.0174999999999983,
+ "series": [
+ [
+ 1,
+ 89.9375
+ ],
+ [
+ 2,
+ 90.205
+ ],
+ [
+ 3,
+ 91.2975
+ ],
+ [
+ 4,
+ 90.4475
+ ],
+ [
+ 5,
+ 90.3575
+ ],
+ [
+ 6,
+ 90.9075
+ ],
+ [
+ 7,
+ 91.0725
+ ],
+ [
+ 8,
+ 91.08
+ ],
+ [
+ 9,
+ 89.69
+ ],
+ [
+ 10,
+ 89.28
+ ]
+ ],
+ "slope": -0.049606060606072956,
+ "steady_state": true
+ },
+ "write": {
+ "average": 38.80025,
+ "range": 0.7774999999999963,
+ "series": [
+ [
+ 1,
+ 38.6575
+ ],
+ [
+ 2,
+ 38.565
+ ],
+ [
+ 3,
+ 38.995
+ ],
+ [
+ 4,
+ 38.955
+ ],
+ [
+ 5,
+ 38.9725
+ ],
+ [
+ 6,
+ 38.962500000000006
+ ],
+ [
+ 7,
+ 39.105
+ ],
+ [
+ 8,
+ 39.01
+ ],
+ [
+ 9,
+ 38.4525
+ ],
+ [
+ 10,
+ 38.3275
+ ]
+ ],
+ "slope": -0.019651515151516915,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 676.5899999999999,
+ "range": 51.52750000000003,
+ "series": [
+ [
+ 1,
+ 640.325
+ ],
+ [
+ 2,
+ 670.5300000000001
+ ],
+ [
+ 3,
+ 673.8375
+ ],
+ [
+ 4,
+ 687.91
+ ],
+ [
+ 5,
+ 691.8525000000001
+ ],
+ [
+ 6,
+ 680.76
+ ],
+ [
+ 7,
+ 681.5524999999999
+ ],
+ [
+ 8,
+ 680.95
+ ],
+ [
+ 9,
+ 680.6225
+ ],
+ [
+ 10,
+ 677.56
+ ]
+ ],
+ "slope": 2.4918787878787736,
+ "steady_state": true
+ },
+ "write": {
+ "average": 24190.365249999995,
+ "range": 525.8575000000019,
+ "series": [
+ [
+ 1,
+ 24374.752500000002
+ ],
+ [
+ 2,
+ 24354.9975
+ ],
+ [
+ 3,
+ 24060.055
+ ],
+ [
+ 4,
+ 24065.5325
+ ],
+ [
+ 5,
+ 24046.289999999997
+ ],
+ [
+ 6,
+ 24070.0675
+ ],
+ [
+ 7,
+ 23978.199999999997
+ ],
+ [
+ 8,
+ 24036.08
+ ],
+ [
+ 9,
+ 24413.62
+ ],
+ [
+ 10,
+ 24504.0575
+ ]
+ ],
+ "slope": 7.369742424241973,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 3844.7916666666665,
+ "range": 95.25,
+ "series": [
+ [
+ 2,
+ 3876.25
+ ],
+ [
+ 3,
+ 3877.25
+ ],
+ [
+ 4,
+ 3869.0
+ ],
+ [
+ 5,
+ 3849.75
+ ],
+ [
+ 6,
+ 3868.0
+ ],
+ [
+ 7,
+ 3861.25
+ ],
+ [
+ 8,
+ 3850.5
+ ],
+ [
+ 9,
+ 3841.5
+ ],
+ [
+ 10,
+ 3782.0
+ ],
+ [
+ 11,
+ 3804.0
+ ],
+ [
+ 12,
+ 3824.5
+ ],
+ [
+ 13,
+ 3833.5
+ ]
+ ],
+ "slope": -6.395104895104895,
+ "steady_state": true
+ },
+ "write": {
+ "average": 1650.9375,
+ "range": 39.25,
+ "series": [
+ [
+ 2,
+ 1668.25
+ ],
+ [
+ 3,
+ 1659.75
+ ],
+ [
+ 4,
+ 1658.5
+ ],
+ [
+ 5,
+ 1651.25
+ ],
+ [
+ 6,
+ 1654.5
+ ],
+ [
+ 7,
+ 1655.25
+ ],
+ [
+ 8,
+ 1654.5
+ ],
+ [
+ 9,
+ 1650.0
+ ],
+ [
+ 10,
+ 1629.0
+ ],
+ [
+ 11,
+ 1637.25
+ ],
+ [
+ 12,
+ 1645.75
+ ],
+ [
+ 13,
+ 1647.25
+ ]
+ ],
+ "slope": -2.207167832167832,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 240.33729166666663,
+ "range": 5.9375,
+ "series": [
+ [
+ 2,
+ 242.30499999999998
+ ],
+ [
+ 3,
+ 242.3575
+ ],
+ [
+ 4,
+ 241.8575
+ ],
+ [
+ 5,
+ 240.6475
+ ],
+ [
+ 6,
+ 241.7825
+ ],
+ [
+ 7,
+ 241.3425
+ ],
+ [
+ 8,
+ 240.70250000000001
+ ],
+ [
+ 9,
+ 240.135
+ ],
+ [
+ 10,
+ 236.42
+ ],
+ [
+ 11,
+ 237.77999999999997
+ ],
+ [
+ 12,
+ 239.08249999999998
+ ],
+ [
+ 13,
+ 239.635
+ ]
+ ],
+ "slope": -0.39897727272724964,
+ "steady_state": true
+ },
+ "write": {
+ "average": 103.2275,
+ "range": 2.4975000000000023,
+ "series": [
+ [
+ 2,
+ 104.3325
+ ],
+ [
+ 3,
+ 103.78
+ ],
+ [
+ 4,
+ 103.71249999999999
+ ],
+ [
+ 5,
+ 103.2575
+ ],
+ [
+ 6,
+ 103.44999999999999
+ ],
+ [
+ 7,
+ 103.485
+ ],
+ [
+ 8,
+ 103.4625
+ ],
+ [
+ 9,
+ 103.1825
+ ],
+ [
+ 10,
+ 101.835
+ ],
+ [
+ 11,
+ 102.355
+ ],
+ [
+ 12,
+ 102.885
+ ],
+ [
+ 13,
+ 102.9925
+ ]
+ ],
+ "slope": -0.14068181818181175,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 835.3579166666665,
+ "range": 121.38750000000016,
+ "series": [
+ [
+ 2,
+ 927.9100000000001
+ ],
+ [
+ 3,
+ 873.9875
+ ],
+ [
+ 4,
+ 848.4324999999999
+ ],
+ [
+ 5,
+ 837.1774999999999
+ ],
+ [
+ 6,
+ 830.6675
+ ],
+ [
+ 7,
+ 823.6800000000001
+ ],
+ [
+ 8,
+ 817.845
+ ],
+ [
+ 9,
+ 810.2874999999999
+ ],
+ [
+ 10,
+ 809.4175
+ ],
+ [
+ 11,
+ 807.2975
+ ],
+ [
+ 12,
+ 806.5224999999999
+ ],
+ [
+ 13,
+ 831.0699999999999
+ ]
+ ],
+ "slope": -7.573933566433496,
+ "steady_state": true
+ },
+ "write": {
+ "average": 36799.755208333336,
+ "range": 1210.1299999999974,
+ "series": [
+ [
+ 2,
+ 36182.9625
+ ],
+ [
+ 3,
+ 36491.1325
+ ],
+ [
+ 4,
+ 36583.715000000004
+ ],
+ [
+ 5,
+ 36782.2625
+ ],
+ [
+ 6,
+ 36717.0375
+ ],
+ [
+ 7,
+ 36726.38250000001
+ ],
+ [
+ 8,
+ 36753.0525
+ ],
+ [
+ 9,
+ 36873.4975
+ ],
+ [
+ 10,
+ 37393.0925
+ ],
+ [
+ 11,
+ 37198.715
+ ],
+ [
+ 12,
+ 36997.655
+ ],
+ [
+ 13,
+ 36897.5575
+ ]
+ ],
+ "slope": 70.88967657342796,
+ "steady_state": true
+ }
+ }
+ },
+ "rw.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 531.2916666666666,
+ "range": 24.75,
+ "series": [
+ [
+ 8,
+ 520.25
+ ],
+ [
+ 9,
+ 518.0
+ ],
+ [
+ 10,
+ 520.5
+ ],
+ [
+ 11,
+ 523.25
+ ],
+ [
+ 12,
+ 527.5
+ ],
+ [
+ 13,
+ 531.0
+ ],
+ [
+ 14,
+ 534.5
+ ],
+ [
+ 15,
+ 537.25
+ ],
+ [
+ 16,
+ 539.0
+ ],
+ [
+ 17,
+ 541.0
+ ],
+ [
+ 18,
+ 542.75
+ ],
+ [
+ 19,
+ 540.5
+ ]
+ ],
+ "slope": 2.449300699300699,
+ "steady_state": true
+ },
+ "write": {
+ "average": 227.77083333333334,
+ "range": 9.5,
+ "series": [
+ [
+ 8,
+ 223.5
+ ],
+ [
+ 9,
+ 222.5
+ ],
+ [
+ 10,
+ 223.5
+ ],
+ [
+ 11,
+ 225.0
+ ],
+ [
+ 12,
+ 226.75
+ ],
+ [
+ 13,
+ 227.75
+ ],
+ [
+ 14,
+ 228.75
+ ],
+ [
+ 15,
+ 230.0
+ ],
+ [
+ 16,
+ 230.75
+ ],
+ [
+ 17,
+ 231.25
+ ],
+ [
+ 18,
+ 232.0
+ ],
+ [
+ 19,
+ 231.5
+ ]
+ ],
+ "slope": 0.9344405594405595,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 265.9016666666667,
+ "range": 12.512499999999932,
+ "series": [
+ [
+ 8,
+ 260.385
+ ],
+ [
+ 9,
+ 259.20500000000004
+ ],
+ [
+ 10,
+ 260.40250000000003
+ ],
+ [
+ 11,
+ 261.93
+ ],
+ [
+ 12,
+ 264.075
+ ],
+ [
+ 13,
+ 265.8225
+ ],
+ [
+ 14,
+ 267.56000000000006
+ ],
+ [
+ 15,
+ 268.8125
+ ],
+ [
+ 16,
+ 269.7675
+ ],
+ [
+ 17,
+ 270.7125
+ ],
+ [
+ 18,
+ 271.7175
+ ],
+ [
+ 19,
+ 270.42999999999995
+ ]
+ ],
+ "slope": 1.2252272727272333,
+ "steady_state": true
+ },
+ "write": {
+ "average": 114.14020833333332,
+ "range": 4.795000000000002,
+ "series": [
+ [
+ 8,
+ 111.91
+ ],
+ [
+ 9,
+ 111.6
+ ],
+ [
+ 10,
+ 112.08999999999999
+ ],
+ [
+ 11,
+ 112.72
+ ],
+ [
+ 12,
+ 113.58249999999998
+ ],
+ [
+ 13,
+ 114.105
+ ],
+ [
+ 14,
+ 114.61749999999999
+ ],
+ [
+ 15,
+ 115.17499999999998
+ ],
+ [
+ 16,
+ 115.555
+ ],
+ [
+ 17,
+ 115.9625
+ ],
+ [
+ 18,
+ 116.395
+ ],
+ [
+ 19,
+ 115.97
+ ]
+ ],
+ "slope": 0.46988636363638736,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 768.5285416666666,
+ "range": 139.36,
+ "series": [
+ [
+ 8,
+ 855.5699999999999
+ ],
+ [
+ 9,
+ 830.0825000000001
+ ],
+ [
+ 10,
+ 806.225
+ ],
+ [
+ 11,
+ 789.795
+ ],
+ [
+ 12,
+ 776.7774999999999
+ ],
+ [
+ 13,
+ 764.1675
+ ],
+ [
+ 14,
+ 754.4074999999999
+ ],
+ [
+ 15,
+ 744.6424999999999
+ ],
+ [
+ 16,
+ 735.035
+ ],
+ [
+ 17,
+ 727.8425000000001
+ ],
+ [
+ 18,
+ 721.5875
+ ],
+ [
+ 19,
+ 716.2099999999999
+ ]
+ ],
+ "slope": -12.021180069929917,
+ "steady_state": true
+ },
+ "write": {
+ "average": 33255.332708333335,
+ "range": 1234.1274999999987,
+ "series": [
+ [
+ 8,
+ 33746.005000000005
+ ],
+ [
+ 9,
+ 33909.06
+ ],
+ [
+ 10,
+ 33806.06
+ ],
+ [
+ 11,
+ 33644.89
+ ],
+ [
+ 12,
+ 33404.677500000005
+ ],
+ [
+ 13,
+ 33268.52
+ ],
+ [
+ 14,
+ 33130.832500000004
+ ],
+ [
+ 15,
+ 32985.1775
+ ],
+ [
+ 16,
+ 32892.49
+ ],
+ [
+ 17,
+ 32787.2025
+ ],
+ [
+ 18,
+ 32674.9325
+ ],
+ [
+ 19,
+ 32814.145
+ ]
+ ],
+ "slope": -117.64964160839821,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.1.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 253.425,
+ "range": 15.75,
+ "series": [
+ [
+ 1,
+ 240.75
+ ],
+ [
+ 2,
+ 253.0
+ ],
+ [
+ 3,
+ 256.0
+ ],
+ [
+ 4,
+ 256.25
+ ],
+ [
+ 5,
+ 255.5
+ ],
+ [
+ 6,
+ 252.25
+ ],
+ [
+ 7,
+ 255.25
+ ],
+ [
+ 8,
+ 255.25
+ ],
+ [
+ 9,
+ 256.5
+ ],
+ [
+ 10,
+ 253.5
+ ]
+ ],
+ "slope": 0.7833333333333333,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 15.87725,
+ "range": 0.9549999999999983,
+ "series": [
+ [
+ 1,
+ 15.1125
+ ],
+ [
+ 2,
+ 15.8425
+ ],
+ [
+ 3,
+ 16.055
+ ],
+ [
+ 4,
+ 16.055
+ ],
+ [
+ 5,
+ 16.0125
+ ],
+ [
+ 6,
+ 15.795
+ ],
+ [
+ 7,
+ 15.98
+ ],
+ [
+ 8,
+ 15.969999999999999
+ ],
+ [
+ 9,
+ 16.0675
+ ],
+ [
+ 10,
+ 15.882499999999999
+ ]
+ ],
+ "slope": 0.04628787878787658,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 63037.021250000005,
+ "range": 4057.6699999999983,
+ "series": [
+ [
+ 1,
+ 66342.3975
+ ],
+ [
+ 2,
+ 63146.844999999994
+ ],
+ [
+ 3,
+ 62301.19
+ ],
+ [
+ 4,
+ 62288.0175
+ ],
+ [
+ 5,
+ 62510.035
+ ],
+ [
+ 6,
+ 63323.292499999996
+ ],
+ [
+ 7,
+ 62588.9225
+ ],
+ [
+ 8,
+ 62623.4575
+ ],
+ [
+ 9,
+ 62284.72750000001
+ ],
+ [
+ 10,
+ 62961.32749999999
+ ]
+ ],
+ "slope": -200.83116666665583,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.1.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 20.85,
+ "range": 1.0,
+ "series": [
+ [
+ 1,
+ 20.0
+ ],
+ [
+ 2,
+ 20.5
+ ],
+ [
+ 3,
+ 21.0
+ ],
+ [
+ 4,
+ 21.0
+ ],
+ [
+ 5,
+ 21.0
+ ],
+ [
+ 6,
+ 21.0
+ ],
+ [
+ 7,
+ 21.0
+ ],
+ [
+ 8,
+ 21.0
+ ],
+ [
+ 9,
+ 21.0
+ ],
+ [
+ 10,
+ 21.0
+ ]
+ ],
+ "slope": 0.07575757575757576,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 10.7745,
+ "range": 0.4974999999999987,
+ "series": [
+ [
+ 1,
+ 10.425
+ ],
+ [
+ 2,
+ 10.52
+ ],
+ [
+ 3,
+ 10.86
+ ],
+ [
+ 4,
+ 10.76
+ ],
+ [
+ 5,
+ 10.7575
+ ],
+ [
+ 6,
+ 10.8325
+ ],
+ [
+ 7,
+ 10.8525
+ ],
+ [
+ 8,
+ 10.9
+ ],
+ [
+ 9,
+ 10.9225
+ ],
+ [
+ 10,
+ 10.915
+ ]
+ ],
+ "slope": 0.04715151515151581,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 92933.133,
+ "range": 4931.322500000009,
+ "series": [
+ [
+ 1,
+ 96494.265
+ ],
+ [
+ 2,
+ 95119.5175
+ ],
+ [
+ 3,
+ 92170.94
+ ],
+ [
+ 4,
+ 93027.34999999999
+ ],
+ [
+ 5,
+ 92993.9325
+ ],
+ [
+ 6,
+ 92346.5175
+ ],
+ [
+ 7,
+ 92183.7025
+ ],
+ [
+ 8,
+ 91754.7725
+ ],
+ [
+ 9,
+ 91562.94249999999
+ ],
+ [
+ 10,
+ 91677.39
+ ]
+ ],
+ "slope": -445.49754545454726,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.4.block-size.16384": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 409.6,
+ "range": 59.0,
+ "series": [
+ [
+ 1,
+ 455.75
+ ],
+ [
+ 2,
+ 400.75
+ ],
+ [
+ 3,
+ 398.0
+ ],
+ [
+ 4,
+ 396.75
+ ],
+ [
+ 5,
+ 404.25
+ ],
+ [
+ 6,
+ 403.25
+ ],
+ [
+ 7,
+ 404.75
+ ],
+ [
+ 8,
+ 406.25
+ ],
+ [
+ 9,
+ 414.25
+ ],
+ [
+ 10,
+ 412.0
+ ]
+ ],
+ "slope": -1.4242424242424243,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 25.655,
+ "range": 3.75,
+ "series": [
+ [
+ 1,
+ 28.58
+ ],
+ [
+ 2,
+ 25.1225
+ ],
+ [
+ 3,
+ 24.92
+ ],
+ [
+ 4,
+ 24.83
+ ],
+ [
+ 5,
+ 25.317500000000003
+ ],
+ [
+ 6,
+ 25.262500000000003
+ ],
+ [
+ 7,
+ 25.335
+ ],
+ [
+ 8,
+ 25.439999999999998
+ ],
+ [
+ 9,
+ 25.935
+ ],
+ [
+ 10,
+ 25.807499999999997
+ ]
+ ],
+ "slope": -0.0921515151515125,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 156202.00424999997,
+ "range": 20893.152499999967,
+ "series": [
+ [
+ 1,
+ 140169.02250000002
+ ],
+ [
+ 2,
+ 159434.45500000002
+ ],
+ [
+ 3,
+ 160649.79249999998
+ ],
+ [
+ 4,
+ 161062.175
+ ],
+ [
+ 5,
+ 158020.94
+ ],
+ [
+ 6,
+ 158404.995
+ ],
+ [
+ 7,
+ 157934.10499999998
+ ],
+ [
+ 8,
+ 157048.16749999998
+ ],
+ [
+ 9,
+ 154256.8475
+ ],
+ [
+ 10,
+ 155039.54249999998
+ ]
+ ],
+ "slope": 427.77665151512986,
+ "steady_state": true
+ }
+ }
+ },
+ "wr.queue-depth.4.block-size.2048": {
+ "bw": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 31.55,
+ "range": 1.25,
+ "series": [
+ [
+ 1,
+ 31.0
+ ],
+ [
+ 2,
+ 31.5
+ ],
+ [
+ 3,
+ 32.25
+ ],
+ [
+ 4,
+ 31.75
+ ],
+ [
+ 5,
+ 31.5
+ ],
+ [
+ 6,
+ 31.5
+ ],
+ [
+ 7,
+ 31.5
+ ],
+ [
+ 8,
+ 31.5
+ ],
+ [
+ 9,
+ 31.5
+ ],
+ [
+ 10,
+ 31.5
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ }
+ },
+ "iops": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 16.063,
+ "range": 0.42749999999999844,
+ "series": [
+ [
+ 1,
+ 15.96
+ ],
+ [
+ 2,
+ 15.9225
+ ],
+ [
+ 3,
+ 16.349999999999998
+ ],
+ [
+ 4,
+ 16.1975
+ ],
+ [
+ 5,
+ 16.035
+ ],
+ [
+ 6,
+ 16.1075
+ ],
+ [
+ 7,
+ 16.05
+ ],
+ [
+ 8,
+ 16.055
+ ],
+ [
+ 9,
+ 15.945
+ ],
+ [
+ 10,
+ 16.0075
+ ]
+ ],
+ "slope": -0.007636363636362754,
+ "steady_state": true
+ }
+ },
+ "lat.mean": {
+ "read": {
+ "average": 0.0,
+ "range": 0.0,
+ "series": [
+ [
+ 1,
+ 0.0
+ ],
+ [
+ 2,
+ 0.0
+ ],
+ [
+ 3,
+ 0.0
+ ],
+ [
+ 4,
+ 0.0
+ ],
+ [
+ 5,
+ 0.0
+ ],
+ [
+ 6,
+ 0.0
+ ],
+ [
+ 7,
+ 0.0
+ ],
+ [
+ 8,
+ 0.0
+ ],
+ [
+ 9,
+ 0.0
+ ],
+ [
+ 10,
+ 0.0
+ ]
+ ],
+ "slope": -0.0,
+ "steady_state": true
+ },
+ "write": {
+ "average": 248749.96375000002,
+ "range": 9078.787500000006,
+ "series": [
+ [
+ 1,
+ 251239.85
+ ],
+ [
+ 2,
+ 251335.41
+ ],
+ [
+ 3,
+ 242256.6225
+ ],
+ [
+ 4,
+ 245113.1025
+ ],
+ [
+ 5,
+ 249064.27749999997
+ ],
+ [
+ 6,
+ 248284.3175
+ ],
+ [
+ 7,
+ 249466.7525
+ ],
+ [
+ 8,
+ 249685.0775
+ ],
+ [
+ 9,
+ 250937.02250000002
+ ],
+ [
+ 10,
+ 250117.205
+ ]
+ ],
+ "slope": 221.39846969698414,
+ "steady_state": true
+ }
+ }
+ }
+ },
+ "scenario_name": "os-nosdn-nofeature-noha",
+ "steady_state": {
+ "_warm_up.queue-depth.8.block-size.16384": true,
+ "rr.queue-depth.1.block-size.16384": true,
+ "rr.queue-depth.1.block-size.2048": true,
+ "rr.queue-depth.4.block-size.16384": true,
+ "rr.queue-depth.4.block-size.2048": true,
+ "rw.queue-depth.1.block-size.16384": true,
+ "rw.queue-depth.1.block-size.2048": true,
+ "rw.queue-depth.4.block-size.16384": true,
+ "rw.queue-depth.4.block-size.2048": true,
+ "wr.queue-depth.1.block-size.16384": true,
+ "wr.queue-depth.1.block-size.2048": true,
+ "wr.queue-depth.4.block-size.16384": true,
+ "wr.queue-depth.4.block-size.2048": true
+ },
+ "storage_node_count": 4,
+ "test_case": "snia_steady_state",
+ "timestart": 1503439537.680577,
+ "version": "danube",
+ "volume_size": 4
+ },
+ "installer": "apex",
+ "pod_name": "intel-pod9",
+ "project_name": "storperf",
+ "public": "true",
+ "scenario": "os-nosdn-nofeature-noha",
+ "start_date": "2017-08-22 22:05:37",
+ "stop_date": "2017-08-23 00:44:30",
+ "trust_indicator": null,
+ "user": null,
+ "version": "danube"
+ }
+ ]
+}
diff --git a/docker/storperf-reporting/src/templates/index.html b/docker/storperf-reporting/src/templates/index.html
index 35cea1a..ab4e539 100644
--- a/docker/storperf-reporting/src/templates/index.html
+++ b/docker/storperf-reporting/src/templates/index.html
@@ -26,6 +26,13 @@
</div>
</form>
</div>
+ {% with messages = get_flashed_messages() %} {% if messages %} {% for message in messages %}
+ <div class="alert alert-danger alert-dismissible" role="alert">
+ <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span>
+ </button>
+ {{ message }}
+ </div>
+ {% endfor %} {% endif %} {% endwith %}
</div>
</div>
</body>
diff --git a/docker/storperf-reporting/src/templates/plot_jobs.html b/docker/storperf-reporting/src/templates/plot_jobs.html
new file mode 100644
index 0000000..d2d3613
--- /dev/null
+++ b/docker/storperf-reporting/src/templates/plot_jobs.html
@@ -0,0 +1,267 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <meta charset="utf-8" />
+ <title>Chart | Storperf</title>
+ <link rel="stylesheet" href="/reporting/css/bootstrap.min.css">
+ <script src="/reporting/js/jquery-2.1.3.min.js"></script>
+ <script src="/reporting/js/bootstrap.min.js"></script>
+ <script src="/reporting/js/jquery.bootpag.min.js"></script>
+ <script src="/reporting/js/plotly-latest.min.js"></script>
+ <script src="/reporting/js/Chart.min.js"></script>
+ <style>
+/* The Modal (background) */
+.modal {
+ display: none; /* Hidden by default */
+ position: fixed; /* Stay in place */
+ z-index: 1; /* Sit on top */
+ padding-top: 100px; /* Location of the box */
+ left: 0;
+ top: 0;
+ width: 100%; /* Full width */
+ height: 100%; /* Full height */
+ overflow: auto; /* Enable scroll if needed */
+ background-color: rgb(0,0,0); /* Fallback color */
+ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
+}
+
+/* Modal Content */
+.modal-content {
+ background-color: #fefefe;
+ margin: auto;
+ padding: 20px;
+ border: 1px solid #888;
+ width: 80%;
+}
+
+/* The Close Button */
+.close {
+ color: #aaaaaa;
+ float: right;
+ font-size: 28px;
+ font-weight: bold;
+}
+
+.close:hover,
+.close:focus {
+ color: #000;
+ text-decoration: none;
+ cursor: pointer;
+}
+.main {
+ border: 1px;
+}
+li {
+ font-size: 14px;
+}
+ul {
+ margin-left: 50px;
+}
+</style>
+</head>
+
+<body>
+ <div class="container">
+ {% include 'header.html' %}
+ <div id="content"><strong>Loading...</strong>
+ </div>
+ <div id="myModal" class="modal">
+
+ <!-- Modal content -->
+ <div class="modal-content">
+ <span class="close" id="close">&times;</span>
+ <div id="modal-text"></div>
+ </div>
+
+</div>
+ <center>
+ <div id="page-selection"></div>
+ </center>
+ </div>
+ <script>
+ results = {{ results | tojson | safe }};
+ function init(){
+ var key = Object.keys(results)
+ text = "<a href='/reporting/'><button type='button' class='btn btn-default btn-lg'>Go back</button></a><br><br>";
+ for ( var i = 0; i < key.length ; i++ ){
+ text += "<div class='row well' id='row-" + key[i] + "'>";
+ text += "<h4> Job ID: " + key[i] + "</h4>";
+ text += "<button type='button' class='btn btn-default btn-lg' id='para-"+ key[i] +
+ "' onclick=add_info('" + key[i] + "')> Click here to view details </button>";
+ text += "</div>";
+ }
+ $("#content").html(text);
+ }
+ function add_info(key){
+ report_data = results[key];
+ var text = "";
+ if(report_data == null){
+ text += "<button type='button' class='btn btn-default btn-lg' onclick=init()>Go Back</button>";
+ text += "<h4><br> Error! No report data found.</h4>";
+ }
+ else{
+ keys = [];
+ for (var k in report_data){
+ keys.push(k);
+ }
+ text = "";
+ text += "<button type='button' class='btn btn-default btn-lg' onclick=init()>Go Back</button>";
+ 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);
+ }
+ function add_test(key){
+ if(document.getElementById("test-" + key) == null){
+ tests = [];
+ for(var test in report_data[key]) tests.push(test);
+ text = "<div class='col-md-12' id = 'test-" + key + "'><ul class='list-group'>";
+ for(var i = 0; i < tests.length; i++ ){
+ text += "<li class='list-group-item' onclick=add_data('"+ key +"','" + tests[i] + "') id='li-" +
+ key + "-" + tests[i] + "'>" + tests[i] + "</li>"
+ }
+ text += "<li class='list-group-item' onclick=delete_test('" + key + "')> close </li>";
+ text += "</ul></div>";
+ var div = document.getElementById('row-' + key);
+ div.innerHTML += text;
+ }
+ }
+ function delete_test(key){
+ document.getElementById("test-" + key).remove();
+ }
+ function add_data(key,test){
+ text = "<ul id='list-" + key + "-" + test + "'>";
+ if(document.getElementById('list-' + key + '-' + test ) == 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='" +
+ key + "-" + test + "-" + item + "'>" + item + " (steady state: " + state +")</li>";
+ }
+ text += "</ul>"
+ var div = document.getElementById("li-" + key + "-" + test);
+ div.innerHTML += text;
+ }
+ }
+ function create_modal(key,test,item){
+ var modal = document.getElementById('myModal');
+ var modal_div = document.getElementById('modal-text');
+ modal_div.innerHTML += "<div id='graph'></div><br><div id='report'></div>";
+ data = report_data[key][test][item];
+ var x = [];
+ var y = [];
+ var name = "";
+ var average = data["average"];
+ if(test == "bw")
+ name = "Bandwidth (KB/s)";
+ else if(test == "iops")
+ name = "IOPS";
+ else
+ name = "Latency (nanoseconds/ns)";
+ var len = data["series"].length;
+ for(var i = 0 ; i < len ; i++){
+ x[i] = data["series"][i][0];
+ y[i] = data["series"][i][1];
+ }
+ var trace1 = {
+ x: x,
+ y: y,
+ name: name,
+ type: 'scatter'
+ };
+ var layout = {
+ xaxis: {
+ title: 'Round'
+ },
+ yaxis: {
+ title: name
+ }
+ };
+ // Creating average plot in var trace2
+ var average_y = [];
+ for(var i = 0; i < len ;i++ ){
+ average_y.push(average)
+ }
+ var trace2 = {
+ x: x,
+ y: average_y,
+ name: 'Average',
+ type: 'scatter'
+ };
+ // Creating average plot in var trace3
+ var average_plus_y = [];
+ for(var i = 0; i < len ;i++ ){
+ average_plus_y.push(1.1*average)
+ }
+ var trace3 = {
+ x: x,
+ y: average_plus_y,
+ name: '110%*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)
+ }
+ var trace4 = {
+ x: x,
+ y: average_minus_y,
+ name: '90%*Average',
+ type: 'scatter'
+ };
+ // Creating slope plot in var trace5
+ var slope_y = [];
+ var slope_mid = parseInt(len/2);
+ // Init slope_y with average
+ for(var i = 0; i < len; i++){
+ slope_y.push(average);
+ }
+ // Creating the slope plot
+ var i = slope_mid - 1;
+ var count = data["slope"];
+ while(i >= 0){
+ slope_y[i] -= count;
+ count += data["slope"];
+ i--;
+ }
+ var i = slope_mid + 1;
+ var count = data["slope"];
+ while(i < len){
+ slope_y[i] += count;
+ count += data["slope"];
+ i++;
+ }
+ var trace5 = {
+ x: x,
+ y: slope_y,
+ name: 'Slope',
+ type: 'scatter'
+ };
+ var plot_data = [trace1,trace2,trace3,trace4,trace5];
+ Plotly.newPlot('graph',plot_data,layout);
+ modal.style.display = "block";
+ table = "<table class='table table-bordered'>";
+ table += "<thead><tr>Steady State Determination Data</tr></thead>";
+ table += "<tbody>";
+ table += "<tr><td>Steady State: "+ data["steady_state"] +"</td><td> Average " + name + ": " + average + "</td></tr>";
+ table += "<tr><td> Allowed Maximum Data Excursion: " + 0.2*average +
+ "</td><td> Measured Maximum Data Excursion: " + data["range"] + "</td></tr>";
+ table += "<tr><td> Allowed Maximum Slope Excursion: " + 0.1*average +
+ "</td><td> Measured Maximum Slope Excursion: " + data["slope"] + "</td></tr>";
+ table += "</tbody></table>";
+ document.getElementById("report").innerHTML = table;
+
+ }
+ init();
+ document.getElementById("close").onclick = function(){
+ document.getElementById('modal-text').innerHTML = "";
+ document.getElementById("myModal").style.display = "none";
+ }
+ </script>
+</body>
+
+</html> \ No newline at end of file
diff --git a/docker/storperf-reporting/src/templates/plot_multi_data.html b/docker/storperf-reporting/src/templates/plot_multi_data.html
new file mode 100644
index 0000000..4205fd6
--- /dev/null
+++ b/docker/storperf-reporting/src/templates/plot_multi_data.html
@@ -0,0 +1,279 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <meta charset="utf-8" />
+ <title>Chart | Storperf</title>
+ <link rel="stylesheet" href="/reporting/css/bootstrap.min.css">
+ <script src="/reporting/js/jquery-2.1.3.min.js"></script>
+ <script src="/reporting/js/bootstrap.min.js"></script>
+ <script src="/reporting/js/jquery.bootpag.min.js"></script>
+ <script src="/reporting/js/plotly-latest.min.js"></script>
+ <script src="/reporting/js/Chart.min.js"></script>
+ <style>
+/* The Modal (background) */
+.modal {
+ display: none; /* Hidden by default */
+ position: fixed; /* Stay in place */
+ z-index: 1; /* Sit on top */
+ padding-top: 100px; /* Location of the box */
+ left: 0;
+ top: 0;
+ width: 100%; /* Full width */
+ height: 100%; /* Full height */
+ overflow: auto; /* Enable scroll if needed */
+ background-color: rgb(0,0,0); /* Fallback color */
+ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
+}
+
+/* Modal Content */
+.modal-content {
+ background-color: #fefefe;
+ margin: auto;
+ padding: 20px;
+ border: 1px solid #888;
+ width: 80%;
+}
+
+/* The Close Button */
+.close {
+ color: #aaaaaa;
+ float: right;
+ font-size: 28px;
+ font-weight: bold;
+}
+
+.close:hover,
+.close:focus {
+ color: #000;
+ text-decoration: none;
+ cursor: pointer;
+}
+.main {
+ border: 1px;
+}
+li {
+ font-size: 14px;
+}
+ul {
+ margin-left: 50px;
+}
+</style>
+</head>
+
+<body>
+ <div class="container">
+ {% include 'header.html' %}
+ <div id="content"><strong>Loading...</strong>
+ </div>
+ <div id="myModal" class="modal">
+
+ <!-- Modal content -->
+ <div class="modal-content">
+ <span class="close" id="close">&times;</span>
+ <div id="modal-text"></div>
+ </div>
+
+</div>
+ <center>
+ <div id="page-selection"></div>
+ </center>
+ </div>
+ <script>
+ results = {{ results | tojson | safe }};
+ function init(){
+ page = [];
+ report_data = results[0]["details"]["report_data"];
+ ids = [];
+ text = "<a href='/reporting/'><button type='button' class='btn btn-default btn-lg'>Go back</button></a><br><br>";
+ for ( var i = 0; i < results.length ; i++ ){
+ ids.push(results[i]["_id"]);
+ text += "<div class='row well' id='row-" + ids[i] + "'>";
+ text += "<h4> ID : " + results[i]["_id"] + "</h4>";
+ text += "<h4> Start Date : " + results[i]["start_date"] + "</h4>";
+ 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>";
+ }
+ $("#content").html(text);
+ }
+ function add_info(ids){
+ report_data = {};
+ keys = [];
+ var i = 0;
+ for ( i = 0; i < results.length ; i++ ){
+ if( results[i]["_id"] == ids ){
+ report_data = results[i]["details"]["report_data"];
+ break;
+ }
+ }
+ for (var k in report_data){
+ keys.push(k);
+ }
+ text = "";
+ text += "<div class='row well' id='row-" + results[i]["_id"] + "'>";
+ text += "<h4> ID : " + results[i]["_id"] + "</h4>";
+ text += "<h4> Start Date : " + results[i]["start_date"] + "</h4>";
+ 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 += "</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);
+ }
+ function add_test(key){
+ if(document.getElementById("test-" + key) == null){
+ tests = [];
+ for(var test in report_data[key]) tests.push(test);
+ text = "<div class='col-md-12' id = 'test-" + key + "'><ul class='list-group'>";
+ for(var i = 0; i < tests.length; i++ ){
+ text += "<li class='list-group-item' onclick=add_data('"+ key +"','" + tests[i] + "') id='li-" +
+ key + "-" + tests[i] + "'>" + tests[i] + "</li>"
+ }
+ text += "<li class='list-group-item' onclick=delete_test('" + key + "')> close </li>";
+ text += "</ul></div>";
+ var div = document.getElementById('row-' + key);
+ div.innerHTML += text;
+ }
+ }
+ function delete_test(key){
+ document.getElementById("test-" + key).remove();
+ }
+ function add_data(key,test){
+ text = "<ul id='list-" + key + "-" + test + "'>";
+ if(document.getElementById('list-' + key + '-' + test ) == 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='" +
+ key + "-" + test + "-" + item + "'>" + item + " (steady state: " + state +")</li>";
+ }
+ text += "</ul>"
+ var div = document.getElementById("li-" + key + "-" + test);
+ div.innerHTML += text;
+ }
+ }
+ function create_modal(key,test,item){
+ var modal = document.getElementById('myModal');
+ var modal_div = document.getElementById('modal-text');
+ modal_div.innerHTML += "<div id='graph'></div><br><div id='report'></div>";
+ data = report_data[key][test][item];
+ var x = [];
+ var y = [];
+ var name = "";
+ var average = data["average"];
+ if(test == "bw")
+ name = "Bandwidth (KB/s)";
+ else if(test == "iops")
+ name = "IOPS";
+ else
+ name = "Latency (nanoseconds/ns)";
+ var len = data["series"].length;
+ for(var i = 0 ; i < len ; i++){
+ x[i] = data["series"][i][0];
+ y[i] = data["series"][i][1];
+ }
+ var trace1 = {
+ x: x,
+ y: y,
+ name: name,
+ type: 'scatter'
+ };
+ var layout = {
+ xaxis: {
+ title: 'Round'
+ },
+ yaxis: {
+ title: name
+ }
+ };
+ // Creating average plot in var trace2
+ var average_y = [];
+ for(var i = 0; i < len ;i++ ){
+ average_y.push(average)
+ }
+ var trace2 = {
+ x: x,
+ y: average_y,
+ name: 'Average',
+ type: 'scatter'
+ };
+ // Creating average plot in var trace3
+ var average_plus_y = [];
+ for(var i = 0; i < len ;i++ ){
+ average_plus_y.push(1.1*average)
+ }
+ var trace3 = {
+ x: x,
+ y: average_plus_y,
+ name: '110%*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)
+ }
+ var trace4 = {
+ x: x,
+ y: average_minus_y,
+ name: '90%*Average',
+ type: 'scatter'
+ };
+ // Creating slope plot in var trace5
+ var slope_y = [];
+ var slope_mid = parseInt(len/2);
+ // Init slope_y with average
+ for(var i = 0; i < len; i++){
+ slope_y.push(average);
+ }
+ // Creating the slope plot
+ var i = slope_mid - 1;
+ var count = data["slope"];
+ while(i >= 0){
+ slope_y[i] -= count;
+ count += data["slope"];
+ i--;
+ }
+ var i = slope_mid + 1;
+ var count = data["slope"];
+ while(i < len){
+ slope_y[i] += count;
+ count += data["slope"];
+ i++;
+ }
+ var trace5 = {
+ x: x,
+ y: slope_y,
+ name: 'Slope',
+ type: 'scatter'
+ };
+ var plot_data = [trace1,trace2,trace3,trace4,trace5];
+ Plotly.newPlot('graph',plot_data,layout);
+ modal.style.display = "block";
+ table = "<table class='table table-bordered'>";
+ table += "<thead><tr>Steady State Determination Data</tr></thead>";
+ table += "<tbody>";
+ table += "<tr><td>Steady State: "+ data["steady_state"] +"</td><td> Average " + name + ": " + average + "</td></tr>";
+ table += "<tr><td> Allowed Maximum Data Excursion: " + 0.2*average +
+ "</td><td> Measured Maximum Data Excursion: " + data["range"] + "</td></tr>";
+ table += "<tr><td> Allowed Maximum Slope Excursion: " + 0.1*average +
+ "</td><td> Measured Maximum Slope Excursion: " + data["slope"] + "</td></tr>";
+ table += "</tbody></table>";
+ document.getElementById("report").innerHTML = table;
+
+ }
+ init();
+ document.getElementById("close").onclick = function(){
+ document.getElementById('modal-text').innerHTML = "";
+ document.getElementById("myModal").style.display = "none";
+ }
+ </script>
+</body>
+
+</html> \ No newline at end of file
diff --git a/docker/storperf-reporting/src/templates/plot_tables.html b/docker/storperf-reporting/src/templates/plot_tables.html
index 04eaadc..a0770bf 100644
--- a/docker/storperf-reporting/src/templates/plot_tables.html
+++ b/docker/storperf-reporting/src/templates/plot_tables.html
@@ -11,10 +11,45 @@
<script src="/reporting/js/plotly-latest.min.js"></script>
<script src="/reporting/js/Chart.min.js"></script>
<style>
- .table td {
- text-align: left;
- }
- </style>
+/* The Modal (background) */
+.modal {
+ display: none; /* Hidden by default */
+ position: fixed; /* Stay in place */
+ z-index: 1; /* Sit on top */
+ padding-top: 100px; /* Location of the box */
+ left: 0;
+ top: 0;
+ width: 100%; /* Full width */
+ height: 100%; /* Full height */
+ overflow: auto; /* Enable scroll if needed */
+ background-color: rgb(0,0,0); /* Fallback color */
+ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
+}
+
+/* Modal Content */
+.modal-content {
+ background-color: #fefefe;
+ margin: auto;
+ padding: 20px;
+ border: 1px solid #888;
+ width: 80%;
+}
+
+/* The Close Button */
+.close {
+ color: #aaaaaa;
+ float: right;
+ font-size: 28px;
+ font-weight: bold;
+}
+
+.close:hover,
+.close:focus {
+ color: #000;
+ text-decoration: none;
+ cursor: pointer;
+}
+</style>
</head>
<body>
@@ -22,109 +57,181 @@
{% include 'header.html' %}
<div id="content"><strong>Loading...</strong>
</div>
+ <div id="myModal" class="modal">
+
+ <!-- Modal content -->
+ <div class="modal-content">
+ <span class="close" id="close">&times;</span>
+ <div id="modal-text"></div>
+ </div>
+
+</div>
<center>
<div id="page-selection"></div>
</center>
</div>
<script>
- data = {{ data | tojson | safe }};
page = [];
- results = data.results;
- if (results == undefined) {
- details = data.details;
- } else {
- details = results[0].details;
+ metrics = {{ metrics | tojson | safe }};
+ report_data = {{ report_data | tojson | safe }};
+ keys = [];
+ for (var k in report_data){
+ keys.push(k);
}
- metrics = details.metrics;
- report_data = details.report_data;
- for (var key in report_data) {
- for (var test in report_data[key]) {
- var text = "";
- var series = [];
- var average;
- for (var status in report_data[key][test]) {
- text = '<div class="row text-center lead">';
- text += "<h3>" + key + "</h3>" + "<br>";
- text += "<strong><u>" + test + "</strong>" + "<br>";
- text += "<strong>" + status + "</strong>" + "<br>";
- text += "<table class=' table table-striped'>";
- for (var values in report_data[key][test][status]) {
- text += "<tr>";
- value_data = report_data[key][test][status][values];
- if (values == "average") {
- average = value_data;
- text += "<td width='50%'>" + values + "</td><td width='50%'>" + value_data + "</td>";
- } else if (values == "series") {
- text += "<td width='50%'>" + values + "</td><td width='50%'> ";
- var len = value_data.length;
- series = value_data;
- for (var i = 0; i < len; i++) {
- text += "[" + value_data[i] + "]";
- if (i != len - 1)
- text += ",";
- }
- text += "</td>";
- } else {
- text += "<td width='50%'>" + values + "</td><td width='50%'>" + value_data + "</td>";
- }
- text += "</tr>";
- }
- page.push([text, series, average]);
+ //console.log(keys);
+ text = "";
+ 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);
+
+ function add_test(key){
+ if(document.getElementById("test-" + key) == null){
+ tests = [];
+ for(var test in report_data[key]) tests.push(test);
+ text = "<div class='col-md-12' id = 'test-" + key + "'><ul class='list-group'>";
+ for(var i = 0; i < tests.length; i++ ){
+ text += "<li class='list-group-item' onclick=add_data('"+ key +"','" + tests[i] + "') id='li-" +
+ key + "-" + tests[i] + "'>" + tests[i] + "</li>"
}
+ text += "<li class='list-group-item' onclick=delete_test('" + key + "')> close </li>";
+ text += "</ul></div>";
+ var div = document.getElementById('row-' + key);
+ div.innerHTML += text;
}
}
-
- function content_display(num) {
- var text = page[num - 1][0];
- var array = page[num - 1][1];
- var average = page[num - 1][2];
- var final_array = [];
- var graph_label = []
- for (var i = 0; i < array.length; i++) {
- graph_label = graph_label.concat(i + 1);
+ function delete_test(key){
+ document.getElementById("test-" + key).remove();
+ }
+ function add_data(key,test){
+ text = "<ul id='list-" + key + "-" + test + "'>";
+ if(document.getElementById('list-' + key + '-' + test ) == 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='" +
+ key + "-" + test + "-" + item + "'>" + item + " (steady state: " + state +")</li>";
+ }
+ text += "</ul>"
+ var div = document.getElementById("li-" + key + "-" + test);
+ div.innerHTML += text;
}
- for (var i = 0; i < array.length; i++) {
- final_array = final_array.concat(array[i][1]);
+ }
+ function create_modal(key,test,item){
+ var modal = document.getElementById('myModal');
+ var modal_div = document.getElementById('modal-text');
+ modal_div.innerHTML += "<div id='graph'></div><br><div id='report'></div>";
+ data = report_data[key][test][item];
+ var x = [];
+ var y = [];
+ var name = "";
+ var average = data["average"];
+ if(test == "bw")
+ name = "Bandwidth (KB/s)";
+ else if(test == "iops")
+ name = "IOPS";
+ else
+ name = "Latency (nanoseconds/ns)";
+ var len = data["series"].length;
+ for(var i = 0 ; i < len ; i++){
+ x[i] = data["series"][i][0];
+ y[i] = data["series"][i][1];
}
- var index = num - 1;
- var graphID = "graph" + index;
- text += "<tr><td>Graph</td><td><div id='" + graphID + "' style='display: block; height:400px; width 400px;'></div></td></tr>";
- text += "</table></div>";
- $("#content").html(text);
- var plot = {
- x: graph_label,
- y: final_array,
- type: "lines",
- name: "Plot"
+ var trace1 = {
+ x: x,
+ y: y,
+ name: name,
+ type: 'scatter'
};
- var avg_plus = {
- x: graph_label,
- y: Array(array.length).fill(1.2 * average),
- type: "lines",
- name: "avg_plus",
- line: {
- dash: "dashdot",
- width: 2
+ var layout = {
+ xaxis: {
+ title: 'Round'
+ },
+ yaxis: {
+ title: name
}
};
- var avg_minus = {
- x: graph_label,
- y: Array(array.length).fill(0.8 * average),
- type: "lines",
- name: "avg_minus",
- line: {
- dash: "dashdot",
- width: 2
- }
+ // Creating average plot in var trace2
+ var average_y = [];
+ for(var i = 0; i < len ;i++ ){
+ average_y.push(average)
+ }
+ var trace2 = {
+ x: x,
+ y: average_y,
+ name: 'Average',
+ type: 'scatter'
+ };
+ // Creating average plot in var trace3
+ var average_plus_y = [];
+ for(var i = 0; i < len ;i++ ){
+ average_plus_y.push(1.1*average)
+ }
+ var trace3 = {
+ x: x,
+ y: average_plus_y,
+ name: '110%*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)
+ }
+ var trace4 = {
+ x: x,
+ y: average_minus_y,
+ name: '90%*Average',
+ type: 'scatter'
};
- Plotly.newPlot(graphID, [plot, avg_plus, avg_minus]);
+ // Creating slope plot in var trace5
+ var slope_y = [];
+ var slope_mid = parseInt(len/2);
+ // Init slope_y with average
+ for(var i = 0; i < len; i++){
+ slope_y.push(average);
+ }
+ // Creating the slope plot
+ var i = slope_mid - 1;
+ var count = data["slope"];
+ while(i >= 0){
+ slope_y[i] -= count;
+ count += data["slope"];
+ i--;
+ }
+ var i = slope_mid + 1;
+ var count = data["slope"];
+ while(i < len){
+ slope_y[i] += count;
+ count += data["slope"];
+ i++;
+ }
+ var trace5 = {
+ x: x,
+ y: slope_y,
+ name: 'Slope',
+ type: 'scatter'
+ };
+ var plot_data = [trace1,trace2,trace3,trace4,trace5];
+ Plotly.newPlot('graph',plot_data,layout);
+ modal.style.display = "block";
+ table = "<table class='table table-bordered'>";
+ table += "<thead><tr>Steady State Determination Data</tr></thead>";
+ table += "<tbody>";
+ table += "<tr><td>Steady State: "+ data["steady_state"] +"</td><td> Average " + name + ": " + average + "</td></tr>";
+ table += "<tr><td> Allowed Maximum Data Excursion: " + 0.2*average +
+ "</td><td> Measured Maximum Data Excursion: " + data["range"] + "</td></tr>";
+ table += "<tr><td> Allowed Maximum Slope Excursion: " + 0.1*average +
+ "</td><td> Measured Maximum Slope Excursion: " + data["slope"] + "</td></tr>";
+ table += "</tbody></table>";
+ document.getElementById("report").innerHTML = table;
+
+ }
+ document.getElementById("close").onclick = function(){
+ document.getElementById('modal-text').innerHTML = "";
+ document.getElementById("myModal").style.display = "none";
}
- content_display(1);
- $('#page-selection').bootpag({
- total: page.length
- }).on("page", function(event, num) {
- content_display(num);
- });
</script>
</body>
diff --git a/docker/storperf-swaggerui/Dockerfile b/docker/storperf-swaggerui/Dockerfile
new file mode 100644
index 0000000..14c9fe1
--- /dev/null
+++ b/docker/storperf-swaggerui/Dockerfile
@@ -0,0 +1,119 @@
+##############################################################################
+# Copyright (c) 2017 Dell EMC and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+# Docker container for StorPerf HTTP Front ENd
+#
+# Build:
+# $ docker build -t opnfv/storperf-swaggerui:tag .
+##
+
+ARG ARCH=x86_64
+ARG ALPINE_VERSION=v3.6
+FROM multiarch/alpine:$ARCH-$ALPINE_VERSION
+
+# This is from https://github.com/nodejs/docker-node/blob/f547c4c7281027d5d90f4665815140126e1f70d5/8.2/alpine/Dockerfile
+
+ENV NPM_CONFIG_LOGLEVEL info
+ENV NODE_VERSION 8.2.1
+
+RUN addgroup -g 1000 node \
+ && adduser -u 1000 -G node -s /bin/sh -D node \
+ && apk add --no-cache \
+ libstdc++ \
+ && apk add --no-cache --virtual .build-deps \
+ binutils-gold \
+ curl \
+ g++ \
+ gcc \
+ gnupg \
+ libgcc \
+ linux-headers \
+ make \
+ python \
+ # gpg keys listed at https://github.com/nodejs/node#release-team
+ && for key in \
+ 9554F04D7259F04124DE6B476D5A82AC7E37093B \
+ 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
+ FD3A5288F042B6850C66B31F09FE44734EB7990E \
+ 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
+ DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
+ B9AE9905FFD7803F25714661B63B535A4C206CA9 \
+ C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
+ 56730D5401028683275BD23C23EFEFE93C4CFFFE \
+ ; do \
+ gpg --keyserver pgp.mit.edu --recv-keys "$key" || \
+ gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \
+ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \
+ done \
+ && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
+ && curl -SLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
+ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
+ && grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
+ && tar -xf "node-v$NODE_VERSION.tar.xz" \
+ && cd "node-v$NODE_VERSION" \
+ && ./configure \
+ && make -j$(getconf _NPROCESSORS_ONLN) \
+ && make install \
+ && apk del .build-deps \
+ && cd .. \
+ && rm -Rf "node-v$NODE_VERSION" \
+ && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
+
+ENV YARN_VERSION 0.27.5
+
+RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
+ && for key in \
+ 6A010C5166006599AA17F08146C2130DFD2497F5 \
+ ; do \
+ gpg --keyserver pgp.mit.edu --recv-keys "$key" || \
+ gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \
+ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \
+ done \
+ && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
+ && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
+ && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
+ && mkdir -p /opt/yarn \
+ && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/yarn --strip-components=1 \
+ && ln -s /opt/yarn/bin/yarn /usr/local/bin/yarn \
+ && ln -s /opt/yarn/bin/yarn /usr/local/bin/yarnpkg \
+ && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
+&& apk del .build-deps-yarn
+
+
+
+# This is from https://github.com/schickling/dockerfiles/blob/master/swagger-ui/Dockerfile
+
+MAINTAINER Johannes Schickling "schickling.j@gmail.com"
+
+ENV VERSION "v2.2.10"
+ENV FOLDER "swagger-ui-2.2.10"
+ENV API_URL "http://petstore.swagger.io/v2/swagger.json"
+ENV API_KEY "**None**"
+ENV OAUTH_CLIENT_ID "**None**"
+ENV OAUTH_CLIENT_SECRET "**None**"
+ENV OAUTH_REALM "**None**"
+ENV OAUTH_APP_NAME "**None**"
+ENV OAUTH_ADDITIONAL_PARAMS "**None**"
+ENV SWAGGER_JSON "/app/swagger.json"
+ENV PORT 80
+
+WORKDIR /app
+
+RUN apk add --no-cache openssl
+RUN wget -qO- https://github.com/swagger-api/swagger-ui/archive/$VERSION.tar.gz | tar xvz
+RUN cp -r $FOLDER/dist/* . && rm -rf $FOLDER
+RUN npm config set unsafe-perm true
+RUN npm install -g http-server
+RUN apk del openssl
+
+ADD run.sh run.sh
+
+# webserver port
+EXPOSE 80
+
+CMD ["sh", "run.sh"]
diff --git a/docker/storperf-swaggerui/run.sh b/docker/storperf-swaggerui/run.sh
new file mode 100644
index 0000000..ab98585
--- /dev/null
+++ b/docker/storperf-swaggerui/run.sh
@@ -0,0 +1,53 @@
+#! /bin/sh
+##############################################################################
+# Copyright (c) 2017 Dell EMC and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+#
+# From https://github.com/schickling/dockerfiles/blob/master/swagger-ui/run.sh
+#
+set -e
+
+replace_in_index () {
+ if [ "$1" != "**None**" ]; then
+ sed -i "s|/\*||g" index.html
+ sed -i "s|\*/||g" index.html
+ sed -i "s|$1|$2|g" index.html
+ fi
+}
+
+replace_or_delete_in_index () {
+ if [ -z "$2" ]; then
+ sed -i "/$1/d" index.html
+ else
+ replace_in_index $1 $2
+ fi
+}
+
+replace_in_index myApiKeyXXXX123456789 $API_KEY
+replace_or_delete_in_index your-client-id $OAUTH_CLIENT_ID
+replace_or_delete_in_index your-client-secret-if-required $OAUTH_CLIENT_SECRET
+replace_or_delete_in_index your-realms $OAUTH_REALM
+replace_or_delete_in_index your-app-name $OAUTH_APP_NAME
+if [ "$OAUTH_ADDITIONAL_PARAMS" != "**None**" ]; then
+ replace_in_index "additionalQueryStringParams: {}" "additionalQueryStringParams: {$OAUTH_ADDITIONAL_PARAMS}"
+fi
+
+if [[ -f $SWAGGER_JSON ]]; then
+ sed -i "s|http://petstore.swagger.io/v2/swagger.json|swagger.json|g" index.html
+ sed -i "s|http://example.com/api|swagger.json|g" index.html
+else
+ sed -i "s|http://petstore.swagger.io/v2/swagger.json|$API_URL|g" index.html
+ sed -i "s|http://example.com/api|$API_URL|g" index.html
+fi
+
+if [[ -n "$VALIDATOR_URL" ]]; then
+ sed -i "s|.*validatorUrl:.*$||g" index.html
+ sed -i "s|\(url: url,.*\)|\1\n validatorUrl: \"${VALIDATOR_URL}\",|g" index.html
+fi
+
+exec http-server -p $PORT $* \ No newline at end of file
diff --git a/docs/testing/user/installation.rst b/docs/testing/user/installation.rst
index 8952f48..1da4187 100755
--- a/docs/testing/user/installation.rst
+++ b/docs/testing/user/installation.rst
@@ -236,3 +236,22 @@ The tag for the latest stable Brahmaputra release is:
.. code-block:: bash
docker pull opnfv/storperf:brahmaputra.1.2
+
+StorPerf on ARM Processors
+==========================
+
+StorPerf now supports docker images on ARM processors as well. However, at the moment
+there is no upstream image on DockerHub. The user needs to manually build it. Firstly,
+clone StorPerf repository from GitHub
+
+.. code-block:: bash
+
+ git clone https://git.opnfv.org/storperf
+ cd storperf/docker/
+
+Next, build and setup the docker images
+
+.. code-block:: console
+
+ TAG=aarch64 ENV_FILE=./admin.rc CARBON_DIR=./carbon docker-compose -f local-docker-compose.yaml build
+ TAG=aarch64 ENV_FILE=./admin.rc CARBON_DIR=./carbon docker-compose -f local-docker-compose.yaml up -d
diff --git a/docs/testing/user/test-usage.rst b/docs/testing/user/test-usage.rst
index 3854e0a..6917e79 100644
--- a/docs/testing/user/test-usage.rst
+++ b/docs/testing/user/test-usage.rst
@@ -43,6 +43,8 @@ The following pieces of information are required to prepare the environment:
- The name of the public network that agents will use
- The size, in gigabytes, of the Cinder volumes to create
- The availability zone (optional) in which the VM is to be launched. Defaults to **nova**.
+- The username (optional) if we specify a custom image.
+- The password (optional) for the above image.
The ReST API is a POST to http://StorPerf:5000/api/v1.0/configurations and
takes a JSON payload as follows.
@@ -55,7 +57,9 @@ takes a JSON payload as follows.
"agent_image": string,
"public_network": string,
"volume_size": int,
- "availability_zone": string
+ "availability_zone": string,
+ "username": string,
+ "password": string
}
This call will block until the stack is created, at which point it will return
@@ -255,3 +259,20 @@ issuing an HTTP DELETE to the configurations API.
You may also want to delete an environment, and then create a new one with a
different number of VMs/Cinder volumes to test the impact of the number of VMs
in your environment.
+
+Viewing StorPerf Logs
+=====================
+
+Logs are an integral part of any application as they help debugging the application. The user just
+needs to issue an HTTP request. To view the entire logs
+
+.. code-block:: bash
+
+ curl -X GET --header 'Accept: application/json' http://StorPerf:5000/api/v1.0/logs?lines=all
+
+Alternatively, one can also view a certain amount of lines by specifying the number in the
+request. If no lines are specified, then last 35 lines are returned
+
+.. code-block:: bash
+
+ curl -X GET --header 'Accept: application/json' http://StorPerf:5000/api/v1.0/logs?lines=12 \ No newline at end of file