diff options
53 files changed, 19550 insertions, 572 deletions
@@ -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">×</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">×</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">×</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">×</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 |