Skip to content
This repository has been archived by the owner on Jun 28, 2024. It is now read-only.

metrics: add fio storage metrics test #650

Merged
merged 3 commits into from
Sep 12, 2018

Conversation

grahamwhaley
Copy link
Contributor

Add an fio based storage metrics test.
By default it will perform uncached (O_DIRECT) read and write tests.
It can be configured through environment variables to modify a number of
its parameters (including direct/buffered, random, linear, r/w/rw tests, number of jobs etc.
The one fixed parameter is that it always performs the tests upon a single file.

Also add invocation of the test and use of the resulting data to the report generation scripts.

@egernst egernst added the review label Aug 24, 2018
usage=$(cat << EOF
Usage: $0 [-h] [options]
Description:
This script gathers a number of metrics for use in the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: odd initial indent?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Took me a while to figure out what you mean..... you mean you'd rather see Description with no indent, and everything below pulled left one tab (and the same for the Options) ? Sure, if that is what you mean, I can do that.
I copied this from another metrics file I think (maybe launch_times.sh). I see other scripts are hard-left aligned (like the ci static checks). I have no particular preference...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's difficult to know how it will display when you run it, but the word "This" in line 1 of your description is indented much further than the other lines "report" (first word of line 2), "configured" (first word of line 3), etc.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I don't see that on either github, vim or when I run it - but, now you point it out I looked at the raw github source view, and I think I see there is a space/tab disparity - thx!

local OPTIND
while getopts "adhnst" opt;do
case ${opt} in
a) # all
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could prolly delete # all as that's clear from the line below I think.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thx - looks like I missed that one.

export PAYLOAD_SLEEP="10"
export PAYLOAD="mysql"
PAYLOAD_ARGS=" --innodb_use_native_aio=0 --disable-log-bin"
PAYLOAD_RUNTIME_ARGS=" -m 4G -e MYSQL_ALLOW_EMPTY_PASSWORD=1"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seeing these memory sizes, do we document the minimum machine spec somewhere?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't. I'll see what I can add to the README.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also.... if you don't have the memory, then the tests will fairly gracefully fail, and just produce a '0 containers launched' for that item. I guess there is a chance the stats will then either fall foul to a divide-by-zero or maybe produce an 'infinite memory' error.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

# a default timeout of 300s - if KSM has not settled down
# by then, just take the measurement.
# 'auto' mode should detect when KSM has settled automatically.
bash density/docker_memory_usage.sh 20 300 auto
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd try to avoid duplicating the argument values in the comments (here and below) as it'll require extra maintenance and vigilance to ensure they remain in-sync (and let's face it, they are bound to go out of sync one day ;)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, will see if I can reword to drop the numbers from the comments.

bash density/footprint_data.sh

# elasticsearch - large container
export PAYLOAD_SLEEP="10"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Que?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll comment that we need to wait some time for elastic to come up and settle before we both take the measurement or launch another one.

export PAYLOAD_SLEEP="10"
export PAYLOAD="elasticsearch"
PAYLOAD_ARGS=" "
PAYLOAD_RUNTIME_ARGS=" -m 8G"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Crikey - see comment above.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh, c'mon, you can almost run that on your lappy ;-) Yeah, Elastic is hungry, which is why we use it as the large container example. Even on a moderate sized desktop (32G), we only manage to run 3 or so.


library(ggplot2) # ability to plot nicely
library(gridExtra) # So we can plot multiple graphs together
suppressMessages(suppressWarnings(library(ggpubr))) # for ggtexttable
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: odd comment indentation.

# 95 and 99 percentiles, and it is much easier to visually group those to
# each runtime if we use this colourmap.
scale_colour_brewer(palette="Paired")
# it would be nice to use the same legend theme as the other plots on this
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a FIXME? Can it be removed / put into an issue rather than leaving here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's more here so that if/when somebody views a report and thinks 'why are the legends not all the same', and come to fix it in the source, they find the explanation sat here waiting.
I'd rather not Issue it, as nobody is likely to fix it, and in a year somebody will close the Issue as stale, so it's just noise out in an Issue.
It is sadly, afaict, quite a lot of fiddly work to get the legends overlaid in a nice way that adapts dynamically to how many items there are in the list - it's already a little 'wonky' as it is.

percentile=single_blocksize$percentile,
blocksize=single_blocksize$blocksize,
runtime=single_blocksize$runtime),
FUN=mean
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Odd indent?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to flow this differently, but didn't find something that really pleased my eye. Any thoughts - the obvious one is to pull the list close ) onto its own line, but it sort of looked all lonely out there... is this any nicer to your eyes?

clat_line=aggregate(
	single_blocksize$ms,
	by=list(
		percentile=single_blocksize$percentile,
		blocksize=single_blocksize$blocksize,
		runtime=single_blocksize$runtime
	),
	FUN=mean
)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh - I'd initially missed the closing bracket after runtime=! But yeah, your new format looks much clearer to me - ta ;)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Since I hadn't seen that bracket, it appeared that FUN=mean needed to be indented below runtime= fwiw)

@GabyCT
Copy link
Contributor

GabyCT commented Aug 27, 2018

@grahamwhaley , I ran the test ./fio.sh, while running, I am getting the following

fio-randread-4k
fio: native_fallocate call failed: Operation not supported
fio-randwrite-4k
fio: native_fallocate call failed: Operation not supported
fio: native_fallocate call failed: Operation not supported
fio: native_fallocate call failed: Operation not supported
fio: native_fallocate call failed: Operation not supported

Is this behavior expected?

Also, I see that the json outputs are not valid. There are some issues like duplicated keys. This is an example of a json that was saved in results and it is not valid

{
        "@timestamp" : 1535388275664,
        "env" : {
                "RuntimeVersion": "1.2.0",
                "RuntimeCommit": "f70d6d2acbba34ed32355124938b9d98f8131ca8",
                "RuntimeConfig": "/usr/share/defaults/kata-containers/configuration.toml",
                "Hypervisor": "/usr/bin/qemu-lite-system-x86_64",
                "HypervisorVersion": "  QEMU emulator version 2.11.0\nCopyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers",
                "Proxy": "/usr/libexec/kata-containers/kata-proxy",
                "ProxyVersion": "1.2.0-6f209b7f3c586c5f17b52df8bd5d6edbc45ee477",
                "Shim": "/usr/libexec/kata-containers/kata-shim",
                "ShimVersion": "  kata-shim version 1.2.0-0a37760c0224167143cb3cc920c78f5147f52e70",
                "machinename": "gabyubuntu"
        },
        "date" : {
                "ns": 1535388275672135908,
                "Date": "2018-08-27T16:44:35.689"
        },
        "test" : {
                "runtime": "kata-runtime",
                "testname": "fio-randread-16k"
        },
                "kata-env" :
                {
  "Meta": {
    "Version": "1.0.15"
  },
  "Runtime": {
    "Version": {
      "Semver": "1.2.0",
      "Commit": "f70d6d2acbba34ed32355124938b9d98f8131ca8",
      "OCI": "1.0.1"
    },
    "Config": {
      "Path": "/usr/share/defaults/kata-containers/configuration.toml"
    },
    "Debug": false,
    "Path": "/usr/local/bin/kata-runtime"
  },
  "Hypervisor": {
    "MachineType": "pc",
    "Version": "QEMU emulator version 2.11.0\nCopyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers",
    "Path": "/usr/bin/qemu-lite-system-x86_64",
    "BlockDeviceDriver": "virtio-scsi",
    "Msize9p": 8192,
    "Debug": false,
    "UseVSock": false
  },
  "Image": {
    "Path": "/usr/share/kata-containers/kata-containers-image_clearlinux_1.2.0_agent_fcfa054a757.img"
  },
  "Kernel": {
    "Path": "/usr/share/kata-containers/vmlinuz-4.14.51-9",
    "Parameters": "agent.log=debug"
  },
  "Initrd": {
    "Path": ""
  },
  "Proxy": {
    "Type": "kataProxy",
    "Version": "kata-proxy version 1.2.0-6f209b7f3c586c5f17b52df8bd5d6edbc45ee477",
    "Path": "/usr/libexec/kata-containers/kata-proxy",
    "Debug": true
  },
  "Shim": {
    "Type": "kataShim",
    "Version": "kata-shim version 1.2.0-0a37760c0224167143cb3cc920c78f5147f52e70",
    "Path": "/usr/libexec/kata-containers/kata-shim",
    "Debug": true
  },
  "Agent": {
    "Type": "kata"
  },
  "Host": {
    "Kernel": "4.15.0-1021-azure",
    "Architecture": "amd64",
    "Distro": {
      "Name": "Ubuntu",
      "Version": "16.04"
    },
    "CPU": {
      "Vendor": "GenuineIntel",
      "Model": "Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz"
    },
    "VMContainerCapable": true,
    "SupportVSocks": false
  }
},
        "Config": [
                        {
                "testimage" : "local-fio",
                "container_RAM" : "2G",
                "container_CPUS" : "1",
                "volume_test" : "0",
                "readtest" : "1",
                "writetest" : "1",
                "readwritetest" : "0",
                "fio_direct" : "1",
                "fio_random" : "1",
                "fio_blocksize" : "16k",
                "fio_numjobs" : "4",
                "fio_timebased" : "1",
                "fio_runtime" : "60",
                "fio_invalidate" : "1",
                "fio_filesize" : "1G",
                "fio_ioengine" : "libaio",
                "fio_iodepth" : "16"
        }
        ],
        "Raw": [
                {
  "fio version" : "fio-3.1",
  "timestamp" : 1535388275,
  "timestamp_ms" : 1535388275443,
  "time" : "Mon Aug 27 16:44:35 2018",
  "global options" : {
    "bs" : "16k",
    "direct" : "1",
    "directory" : "/testdir",
    "rw" : "read",
    "time_based" : "1",
    "runtime" : "60",
    "invalidate" : "1",
    "filename" : "fio-randread"
  },
  "jobs" : [
    {
      "jobname" : "file1",
      "groupid" : 0,
      "error" : 0,
      "eta" : 0,
      "elapsed" : 61,
      "job options" : {
        "size" : "1G",
        "ioengine" : "libaio",
        "iodepth" : "16"
      },
      "read" : {
        "io_bytes" : 1876230144,
        "io_kbytes" : 1832256,
        "bw" : 30537,
        "iops" : 1908.568191,
        "runtime" : 60001,
        "total_ios" : 114516,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 109863,
          "max" : 35270662,
          "mean" : 515635.779830,
          "stddev" : 602128.204722
        },
        "clat_ns" : {
          "min" : 4797,
          "max" : 45572268,
          "mean" : 7860550.229750,
          "stddev" : 2745164.977016,
          "percentile" : {
            "1.000000" : 5341184,
            "5.000000" : 5931008,
            "10.000000" : 6127616,
            "20.000000" : 6455296,
            "30.000000" : 6717440,
            "40.000000" : 6979584,
            "50.000000" : 7372800,
            "60.000000" : 7700480,
            "70.000000" : 8093696,
            "80.000000" : 8585216,
            "90.000000" : 9371648,
            "95.000000" : 10682368,
            "99.000000" : 22937600,
            "99.500000" : 24772608,
            "99.900000" : 39059456,
            "99.950000" : 42205184,
            "99.990000" : 44302336,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 458010,
          "max" : 47064482,
          "mean" : 8377618.122446,
          "stddev" : 2859120.741770
        },
        "bw_min" : 11177,
        "bw_max" : 38272,
        "bw_agg" : 25.249270,
        "bw_mean" : 30549.596639,
        "bw_dev" : 4854.365113,
        "bw_samples" : 119,
        "iops_min" : 698,
        "iops_max" : 2392,
        "iops_mean" : 1909.260504,
        "iops_stddev" : 303.377302,
        "iops_samples" : 119
      },
      "write" : {
        "io_bytes" : 0,
        "io_kbytes" : 0,
        "bw" : 0,
        "iops" : 0.000000,
        "runtime" : 0,
        "total_ios" : 0,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "clat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000,
          "percentile" : {
            "1.000000" : 0,
            "5.000000" : 0,
            "10.000000" : 0,
            "20.000000" : 0,
            "30.000000" : 0,
            "40.000000" : 0,
            "50.000000" : 0,
            "60.000000" : 0,
            "70.000000" : 0,
            "80.000000" : 0,
            "90.000000" : 0,
            "95.000000" : 0,
            "99.000000" : 0,
            "99.500000" : 0,
            "99.900000" : 0,
            "99.950000" : 0,
            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "bw_min" : 0,
        "bw_max" : 0,
        "bw_agg" : 0.000000,
        "bw_mean" : 0.000000,
        "bw_dev" : 0.000000,
        "bw_samples" : 0,
        "iops_min" : 0,
        "iops_max" : 0,
        "iops_mean" : 0.000000,
        "iops_stddev" : 0.000000,
        "iops_samples" : 0
      },
      "trim" : {
        "io_bytes" : 0,
        "io_kbytes" : 0,
        "bw" : 0,
        "iops" : 0.000000,
        "runtime" : 0,
        "total_ios" : 0,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "clat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000,
          "percentile" : {
            "1.000000" : 0,
            "5.000000" : 0,
            "10.000000" : 0,
            "20.000000" : 0,
            "30.000000" : 0,
            "40.000000" : 0,
            "50.000000" : 0,
            "60.000000" : 0,
            "70.000000" : 0,
            "80.000000" : 0,
            "90.000000" : 0,
            "95.000000" : 0,
            "99.000000" : 0,
            "99.500000" : 0,
            "99.900000" : 0,
            "99.950000" : 0,
            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "bw_min" : 0,
        "bw_max" : 0,
        "bw_agg" : 0.000000,
        "bw_mean" : 0.000000,
        "bw_dev" : 0.000000,
        "bw_samples" : 0,
        "iops_min" : 0,
        "iops_max" : 0,
        "iops_mean" : 0.000000,
        "iops_stddev" : 0.000000,
        "iops_samples" : 0
      },
      "usr_cpu" : 1.595000,
      "sys_cpu" : 22.133333,
      "ctx" : 435684,
      "majf" : 2,
      "minf" : 81,
      "iodepth_level" : {
        "1" : 0.100000,
        "2" : 0.100000,
        "4" : 0.100000,
        "8" : 0.100000,
        "16" : 99.986901,
        "32" : 0.000000,
        ">=64" : 0.000000
      },
      "latency_ns" : {
        "2" : 0.000000,
        "4" : 0.000000,
        "10" : 0.000000,
        "20" : 0.000000,
        "50" : 0.000000,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.000000,
        "750" : 0.000000,
        "1000" : 0.000000
      },
      "latency_us" : {
        "2" : 0.000000,
        "4" : 0.000000,
        "10" : 0.010000,
        "20" : 0.000000,
        "50" : 0.000000,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.010000,
        "750" : 0.000000,
        "1000" : 0.010000
      },
      "latency_ms" : {
        "2" : 0.010000,
        "4" : 0.014845,
        "10" : 93.274302,
        "20" : 5.263893,
        "50" : 1.442593,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.000000,
        "750" : 0.000000,
        "1000" : 0.000000,
        "2000" : 0.000000,
        ">=2000" : 0.000000
      },
      "latency_depth" : 16,
      "latency_target" : 0,
      "latency_percentile" : 100.000000,
      "latency_window" : 0
    },
    {
      "jobname" : "file1",
      "groupid" : 0,
      "error" : 0,
      "eta" : 0,
      "elapsed" : 61,
      "job options" : {
        "size" : "1G",
        "ioengine" : "libaio",
        "iodepth" : "16"
      },
      "read" : {
        "io_bytes" : 1879130112,
        "io_kbytes" : 1835088,
        "bw" : 30584,
        "iops" : 1911.518141,
        "runtime" : 60001,
        "total_ios" : 114693,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 128126,
          "max" : 35141237,
          "mean" : 514922.557907,
          "stddev" : 604159.866572
        },
        "clat_ns" : {
          "min" : 5589,
          "max" : 49333729,
          "mean" : 7848409.561569,
          "stddev" : 2761265.416233,
          "percentile" : {
            "1.000000" : 5275648,
            "5.000000" : 5865472,
            "10.000000" : 6127616,
            "20.000000" : 6455296,
            "30.000000" : 6717440,
            "40.000000" : 6979584,
            "50.000000" : 7307264,
            "60.000000" : 7700480,
            "70.000000" : 8093696,
            "80.000000" : 8585216,
            "90.000000" : 9371648,
            "95.000000" : 10813440,
            "99.000000" : 22675456,
            "99.500000" : 24772608,
            "99.900000" : 39583744,
            "99.950000" : 42729472,
            "99.990000" : 44826624,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 585203,
          "max" : 49795983,
          "mean" : 8364835.588013,
          "stddev" : 2875631.552737
        },
        "bw_min" : 10890,
        "bw_max" : 38323,
        "bw_agg" : 25.272905,
        "bw_mean" : 30578.193277,
        "bw_dev" : 4884.779530,
        "bw_samples" : 119,
        "iops_min" : 680,
        "iops_max" : 2395,
        "iops_mean" : 1911.033613,
        "iops_stddev" : 305.288775,
        "iops_samples" : 119
      },
      "write" : {
        "io_bytes" : 0,
        "io_kbytes" : 0,
        "bw" : 0,
        "iops" : 0.000000,
        "runtime" : 0,
        "total_ios" : 0,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "clat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000,
          "percentile" : {
            "1.000000" : 0,
            "5.000000" : 0,
            "10.000000" : 0,
            "20.000000" : 0,
            "30.000000" : 0,
            "40.000000" : 0,
            "50.000000" : 0,
            "60.000000" : 0,
            "70.000000" : 0,
            "80.000000" : 0,
            "90.000000" : 0,
            "95.000000" : 0,
            "99.000000" : 0,
            "99.500000" : 0,
            "99.900000" : 0,
            "99.950000" : 0,
            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "bw_min" : 0,
        "bw_max" : 0,
        "bw_agg" : 0.000000,
        "bw_mean" : 0.000000,
        "bw_dev" : 0.000000,
        "bw_samples" : 0,
        "iops_min" : 0,
        "iops_max" : 0,
        "iops_mean" : 0.000000,
        "iops_stddev" : 0.000000,
        "iops_samples" : 0
      },
      "trim" : {
        "io_bytes" : 0,
        "io_kbytes" : 0,
        "bw" : 0,
        "iops" : 0.000000,
        "runtime" : 0,
        "total_ios" : 0,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "clat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000,
          "percentile" : {
            "1.000000" : 0,
            "5.000000" : 0,
            "10.000000" : 0,
            "20.000000" : 0,
            "30.000000" : 0,
            "40.000000" : 0,
            "50.000000" : 0,
            "60.000000" : 0,
            "70.000000" : 0,
            "80.000000" : 0,
            "90.000000" : 0,
            "95.000000" : 0,
            "99.000000" : 0,
            "99.500000" : 0,
            "99.900000" : 0,
            "99.950000" : 0,
            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "bw_min" : 0,
        "bw_max" : 0,
        "bw_agg" : 0.000000,
        "bw_mean" : 0.000000,
        "bw_dev" : 0.000000,
        "bw_samples" : 0,
        "iops_min" : 0,
        "iops_max" : 0,
        "iops_mean" : 0.000000,
        "iops_stddev" : 0.000000,
        "iops_samples" : 0
      },
      "usr_cpu" : 1.485000,
      "sys_cpu" : 20.210000,
      "ctx" : 437136,
      "majf" : 7,
      "minf" : 75,
      "iodepth_level" : {
        "1" : 0.100000,
        "2" : 0.100000,
        "4" : 0.100000,
        "8" : 0.100000,
        "16" : 99.986922,
        "32" : 0.000000,
        ">=64" : 0.000000
      },
      "latency_ns" : {
        "2" : 0.000000,
        "4" : 0.000000,
        "10" : 0.000000,
        "20" : 0.000000,
        "50" : 0.000000,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.000000,
        "750" : 0.000000,
        "1000" : 0.000000
      },
      "latency_us" : {
        "2" : 0.000000,
        "4" : 0.000000,
        "10" : 0.010000,
        "20" : 0.000000,
        "50" : 0.000000,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.000000,
        "750" : 0.010000,
        "1000" : 0.000000
      },
      "latency_ms" : {
        "2" : 0.010000,
        "4" : 0.010000,
        "10" : 93.160873,
        "20" : 5.454561,
        "50" : 1.375847,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.000000,
        "750" : 0.000000,
        "1000" : 0.000000,
        "2000" : 0.000000,
        ">=2000" : 0.000000
      },
      "latency_depth" : 16,
      "latency_target" : 0,
      "latency_percentile" : 100.000000,
      "latency_window" : 0
    },
    {
      "jobname" : "file1",
      "groupid" : 0,
      "error" : 0,
      "eta" : 0,
      "elapsed" : 61,
      "job options" : {
        "size" : "1G",
        "ioengine" : "libaio",
        "iodepth" : "16"
      },
      "read" : {
        "io_bytes" : 1860878336,
        "io_kbytes" : 1817264,
        "bw" : 30287,
        "iops" : 1892.951784,
        "runtime" : 60001,
        "total_ios" : 113579,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 121060,
          "max" : 35373394,
          "mean" : 520145.227639,
          "stddev" : 602426.739172
        },
        "clat_ns" : {
          "min" : 5750,
          "max" : 46010127,
          "mean" : 7925181.671726,
          "stddev" : 2722585.584260,
          "percentile" : {
            "1.000000" : 5341184,
            "5.000000" : 6062080,
            "10.000000" : 6324224,
            "20.000000" : 6586368,
            "30.000000" : 6848512,
            "40.000000" : 7110656,
            "50.000000" : 7438336,
            "60.000000" : 7766016,
            "70.000000" : 8028160,
            "80.000000" : 8454144,
            "90.000000" : 9240576,
            "95.000000" : 10682368,
            "99.000000" : 22675456,
            "99.500000" : 24772608,
            "99.900000" : 40108032,
            "99.950000" : 42729472,
            "99.990000" : 44302336,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 474734,
          "max" : 47385297,
          "mean" : 8446706.815468,
          "stddev" : 2834289.349386
        },
        "bw_min" : 10794,
        "bw_max" : 36992,
        "bw_agg" : 25.026038,
        "bw_mean" : 30279.504202,
        "bw_dev" : 4457.657534,
        "bw_samples" : 119,
        "iops_min" : 674,
        "iops_max" : 2312,
        "iops_mean" : 1892.378151,
        "iops_stddev" : 278.583189,
        "iops_samples" : 119
      },
      "write" : {
        "io_bytes" : 0,
        "io_kbytes" : 0,
        "bw" : 0,
        "iops" : 0.000000,
        "runtime" : 0,
        "total_ios" : 0,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "clat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000,
          "percentile" : {
            "1.000000" : 0,
            "5.000000" : 0,
            "10.000000" : 0,
            "20.000000" : 0,
            "30.000000" : 0,
            "40.000000" : 0,
            "50.000000" : 0,
            "60.000000" : 0,
            "70.000000" : 0,
            "80.000000" : 0,
            "90.000000" : 0,
            "95.000000" : 0,
            "99.000000" : 0,
            "99.500000" : 0,
            "99.900000" : 0,
            "99.950000" : 0,
            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "bw_min" : 0,
        "bw_max" : 0,
        "bw_agg" : 0.000000,
        "bw_mean" : 0.000000,
        "bw_dev" : 0.000000,
        "bw_samples" : 0,
        "iops_min" : 0,
        "iops_max" : 0,
        "iops_mean" : 0.000000,
        "iops_stddev" : 0.000000,
        "iops_samples" : 0
      },
      "trim" : {
        "io_bytes" : 0,
        "io_kbytes" : 0,
        "bw" : 0,
        "iops" : 0.000000,
        "runtime" : 0,
        "total_ios" : 0,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "clat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000,
          "percentile" : {
            "1.000000" : 0,
            "5.000000" : 0,
            "10.000000" : 0,
            "20.000000" : 0,
            "30.000000" : 0,
            "40.000000" : 0,
            "50.000000" : 0,
            "60.000000" : 0,
            "70.000000" : 0,
            "80.000000" : 0,
            "90.000000" : 0,
            "95.000000" : 0,
            "99.000000" : 0,
            "99.500000" : 0,
            "99.900000" : 0,
            "99.950000" : 0,
            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "bw_min" : 0,
        "bw_max" : 0,
        "bw_agg" : 0.000000,
        "bw_mean" : 0.000000,
        "bw_dev" : 0.000000,
        "bw_samples" : 0,
        "iops_min" : 0,
        "iops_max" : 0,
        "iops_mean" : 0.000000,
        "iops_stddev" : 0.000000,
        "iops_samples" : 0
      },
      "usr_cpu" : 1.505000,
      "sys_cpu" : 20.038333,
      "ctx" : 440505,
      "majf" : 0,
      "minf" : 80,
      "iodepth_level" : {
        "1" : 0.100000,
        "2" : 0.100000,
        "4" : 0.100000,
        "8" : 0.100000,
        "16" : 99.986793,
        "32" : 0.000000,
        ">=64" : 0.000000
      },
      "latency_ns" : {
        "2" : 0.000000,
        "4" : 0.000000,
        "10" : 0.000000,
        "20" : 0.000000,
        "50" : 0.000000,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.000000,
        "750" : 0.000000,
        "1000" : 0.000000
      },
      "latency_us" : {
        "2" : 0.000000,
        "4" : 0.000000,
        "10" : 0.010000,
        "20" : 0.000000,
        "50" : 0.000000,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.010000,
        "750" : 0.000000,
        "1000" : 0.010000
      },
      "latency_ms" : {
        "2" : 0.010000,
        "4" : 0.010000,
        "10" : 93.345601,
        "20" : 5.247449,
        "50" : 1.398146,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.000000,
        "750" : 0.000000,
        "1000" : 0.000000,
        "2000" : 0.000000,
        ">=2000" : 0.000000
      },
      "latency_depth" : 16,
      "latency_target" : 0,
      "latency_percentile" : 100.000000,
      "latency_window" : 0
    },
    {
      "jobname" : "file1",
      "groupid" : 0,
      "error" : 0,
      "eta" : 0,
      "elapsed" : 61,
      "job options" : {
        "size" : "1G",
        "ioengine" : "libaio",
        "iodepth" : "16"
      },
      "read" : {
        "io_bytes" : 1817673728,
        "io_kbytes" : 1775072,
        "bw" : 29584,
        "iops" : 1849.002517,
        "runtime" : 60001,
        "total_ios" : 110942,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 128560,
          "max" : 35271795,
          "mean" : 532321.311613,
          "stddev" : 609399.110510
        },
        "clat_ns" : {
          "min" : 4606,
          "max" : 46242714,
          "mean" : 8113568.369004,
          "stddev" : 2836025.139011,
          "percentile" : {
            "1.000000" : 5799936,
            "5.000000" : 6127616,
            "10.000000" : 6324224,
            "20.000000" : 6651904,
            "30.000000" : 6914048,
            "40.000000" : 7241728,
            "50.000000" : 7569408,
            "60.000000" : 7962624,
            "70.000000" : 8290304,
            "80.000000" : 8716288,
            "90.000000" : 9633792,
            "95.000000" : 11075584,
            "99.000000" : 23461888,
            "99.500000" : 25559040,
            "99.900000" : 40108032,
            "99.950000" : 42729472,
            "99.990000" : 44302336,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 514845,
          "max" : 47687544,
          "mean" : 8647343.728732,
          "stddev" : 2957173.416824
        },
        "bw_min" : 10698,
        "bw_max" : 38195,
        "bw_agg" : 24.454405,
        "bw_mean" : 29587.873950,
        "bw_dev" : 4929.160785,
        "bw_samples" : 119,
        "iops_min" : 668,
        "iops_max" : 2387,
        "iops_mean" : 1849.159664,
        "iops_stddev" : 308.053731,
        "iops_samples" : 119
      },
      "write" : {
        "io_bytes" : 0,
        "io_kbytes" : 0,
        "bw" : 0,
        "iops" : 0.000000,
        "runtime" : 0,
        "total_ios" : 0,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "clat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000,
          "percentile" : {
            "1.000000" : 0,
            "5.000000" : 0,
            "10.000000" : 0,
            "20.000000" : 0,
            "30.000000" : 0,
            "40.000000" : 0,
            "50.000000" : 0,
            "60.000000" : 0,
            "70.000000" : 0,
            "80.000000" : 0,
            "90.000000" : 0,
            "95.000000" : 0,
            "99.000000" : 0,
            "99.500000" : 0,
            "99.900000" : 0,
            "99.950000" : 0,
            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "bw_min" : 0,
        "bw_max" : 0,
        "bw_agg" : 0.000000,
        "bw_mean" : 0.000000,
        "bw_dev" : 0.000000,
        "bw_samples" : 0,
        "iops_min" : 0,
        "iops_max" : 0,
        "iops_mean" : 0.000000,
        "iops_stddev" : 0.000000,
        "iops_samples" : 0
      },
      "trim" : {
        "io_bytes" : 0,
        "io_kbytes" : 0,
        "bw" : 0,
        "iops" : 0.000000,
        "runtime" : 0,
        "total_ios" : 0,
        "short_ios" : 0,
        "drop_ios" : 0,
        "slat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "clat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000,
          "percentile" : {
            "1.000000" : 0,
            "5.000000" : 0,
            "10.000000" : 0,
            "20.000000" : 0,
            "30.000000" : 0,
            "40.000000" : 0,
            "50.000000" : 0,
            "60.000000" : 0,
            "70.000000" : 0,
            "80.000000" : 0,
            "90.000000" : 0,
            "95.000000" : 0,
            "99.000000" : 0,
            "99.500000" : 0,
            "99.900000" : 0,
            "99.950000" : 0,
            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat_ns" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.000000,
          "stddev" : 0.000000
        },
        "bw_min" : 0,
        "bw_max" : 0,
        "bw_agg" : 0.000000,
        "bw_mean" : 0.000000,
        "bw_dev" : 0.000000,
        "bw_samples" : 0,
        "iops_min" : 0,
        "iops_max" : 0,
        "iops_mean" : 0.000000,
        "iops_stddev" : 0.000000,
        "iops_samples" : 0
      },
      "usr_cpu" : 1.691667,
      "sys_cpu" : 19.151667,
      "ctx" : 429965,
      "majf" : 0,
      "minf" : 82,
      "iodepth_level" : {
        "1" : 0.100000,
        "2" : 0.100000,
        "4" : 0.100000,
        "8" : 0.100000,
        "16" : 99.986479,
        "32" : 0.000000,
        ">=64" : 0.000000
      },
      "latency_ns" : {
        "2" : 0.000000,
        "4" : 0.000000,
        "10" : 0.000000,
        "20" : 0.000000,
        "50" : 0.000000,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.000000,
        "750" : 0.000000,
        "1000" : 0.000000
      },
      "latency_us" : {
        "2" : 0.000000,
        "4" : 0.000000,
        "10" : 0.010000,
        "20" : 0.000000,
        "50" : 0.000000,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.000000,
        "750" : 0.010000,
        "1000" : 0.010000
      },
      "latency_ms" : {
        "2" : 0.010000,
        "4" : 0.010000,
        "10" : 92.040886,
        "20" : 6.432190,
        "50" : 1.517910,
        "100" : 0.000000,
        "250" : 0.000000,
        "500" : 0.000000,
        "750" : 0.000000,
        "1000" : 0.000000,
        "2000" : 0.000000,
        ">=2000" : 0.000000
      },
      "latency_depth" : 16,
      "latency_target" : 0,
      "latency_percentile" : 100.000000,
      "latency_window" : 0
    }
  ]
}
        ]
}

GabyCT
GabyCT previously requested changes Aug 27, 2018
Copy link
Contributor

@GabyCT GabyCT left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Json outputs should be fixed

@grahamwhaley
Copy link
Contributor Author

Hi @GabyCT .
I saw some of fio: native_fallocate call failed: Operation not supported after I'd PR'd - yeah, those should not be there (and, tbh, I think that is partly an fio but, that it really should not be dumping its error messages into a json stream/file! ;-)). I have a feeling those only happen if the file-pre-allocate is set and we are testing on 9p - I'll see if I can narrow down and then solve that one.

I'll also check for the valid JSON syntax. My editors built in syntax checker didn't show anything when I did check, and R seemed happy to import and process the data - but, I'll hit it with some harder JSON verification tools and see what they say. Sadly, if this is something fio is spitting out, we might not be able to do too much about it (well, I can try to go PR fixes to fio ;-) ).

@grahamwhaley
Copy link
Contributor Author

Hi @GabyCT - when you say the JSON is not valid - I ran yq and jsonlint-php (whatever ubuntu insatlled as 'jsonlint-php'), and neither of them complained or error'd.
I had a quick search, and according to this page, duplicate keys in JSON are not actually illegal, just recommended (they fall under a 'SHOULD' clause apparently).

Was it these sort of lines that you noticed? :

            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }

Sadly, they come straight out of fio, so would be non-trivial for me to improve I think.
Let me know if you have a specific tool that is complaining, and I can have another dig. Otherwise, I suspect this is not something I can really fix.

@GabyCT
Copy link
Contributor

GabyCT commented Aug 28, 2018

@grahamwhaley , yes I saw those lines, I see that with yq does not complain, however, I always check with that and with a json validator tool (https://jsonlint.com/).

@grahamwhaley
Copy link
Contributor Author

Hi @GabyCT Right. Yeah, that tool says 'syntax error', but reading around some more (a bit of stackoverflow for instance), it is:

  • a grey area
  • technically not illegal in the standard(s), but
  • yes, probably not really a useful thing to print out in the output
  • but ultimately, comes out of fio, and parses in both R and yq, which are currently the two primary tools in use to evaluate the metrics (in the report generator and by the checkcommits tool).

So, I think I have to say, yes, it would be nice if we could fix this, but I don't think there is an easy way, and presently I believe that the duplicate entries are benign (they all have the same values anyhow).

Sorry, I don't think I can fix this one. I will push a change for the fallocate error in a minute though :-)

@grahamwhaley
Copy link
Contributor Author

pushed. And let's see if the CIs are still grumpy after this

@GabyCT
Copy link
Contributor

GabyCT commented Aug 28, 2018

@grahamwhaley ok sure not a problem. let me know when I can test again to see that the error is gone

@grahamwhaley
Copy link
Contributor Author

OK @GabyCT - looks like the push landed (github is having a chug right now). The CIs have restarted.
The key change is in fio.sh where you will now find:

FIO_FALLOCATE=${FIO_FALLOCATE:-none}

etc. I tested with 9p/dm/runc - but yes please, a re-test would be good.

@GabyCT GabyCT dismissed their stale review August 28, 2018 18:38

outputs in the json are warnings

@GabyCT
Copy link
Contributor

GabyCT commented Aug 28, 2018

@grahamwhaley , I re-run the test and I see that the error is gone :)

@GabyCT
Copy link
Contributor

GabyCT commented Aug 28, 2018

@grahamwhaley just one last question, seeing the json, I see that you are putting all the raw information of the fio output but for the PnP CI (detect a performance regression) what is exactly the value or result that you are looking for? and if that result should be in a specific part of the json ..thanks

@grahamwhaley
Copy link
Contributor Author

Hi @GabyCT Fair question :-)
Indeed, when porting over and rewriting this test from our CC version, rather than doing some in-script crunching and just storing some cooked results, now we store only the complete raw results, I decided not to do the cooked ones. I can see how they could be useful for a quick view, and we could probably pick out a few key items we'd extract, such as:

  • total bandwidth
  • total iops
  • 95th and 99th percentile jitters maybe

but I didn't really want to hard code those, and the data can be extracted moderately simply (but I admit, not quite trivially), using JSON tools. In the reportgen we use R, but checkmetrics uses jq. I had a dig at what it would take for using jq here (and to check it could do what we needed) - using jq to get the bandwidth total for instance can be done with:

$ jq '.Raw | .[] | .jobs | map(.read) | map(.bw) | add' fio-randread-4k.json
304012

Yes, it took a bit of reading to figure that out (i've not stroked jq for a while). jq is pretty powerful, so I think it can provide everything we need for the checkmetrics CI checks.

We could add cooked results, but tbh, I suspect we'd just invoke the jq line above and store that result in a separate JSON section in the results file.
Right now I'll vote that we leave as raw and see how we get along. If we do find later on that we really need a simpler way to get some cooked numbers then we can add it. OK?

@grahamwhaley
Copy link
Contributor Author

Rebased and pushed as the CI fail was too old to rekick.
@kata-containers/tests - looking for one more review I think... (I am stalling pushing an update PR that lays over the top of this one...)

@GabyCT
Copy link
Contributor

GabyCT commented Sep 3, 2018

lgtm

Approved with PullApprove Approved with PullApprove

@chavafg
Copy link
Contributor

chavafg commented Sep 5, 2018

lgtm

Approved with PullApprove

Measure storage I/O bandwidth, latency and IOPS using
this [test](https://github.com/kata-containers/tests/blob/master/metrics/storage/fio.sh).

This test measures using separate randome read and write tests.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/randome/random?

@@ -27,6 +27,10 @@ Repeat this process if you want to compare multiple sets of results. Note, the
report generation scripts process all subfolders of `tests/metrics/results` when
generating the report.

> **Note:** By default, the `grabdata.sh` script ties to launch some moderately
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/ties/tries

@@ -0,0 +1,20 @@
# Kata Containers storage I/O tests

The metrics tests in this directory are desinged to be used to utilised in the
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/designed/designed

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/utilised/utilized :D

@chavafg
Copy link
Contributor

chavafg commented Sep 5, 2018

@intelkevinputnam @klynnrif can you please take a look at the .md files

# Kata Containers storage I/O tests

The metrics tests in this directory are desinged to be used to utilised in the
assessment of storage IO.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line 3 - "used to assess storage IO."

## `blogbench` test

The `blogbench` script is based on the [blogbench program](https://www.pureftpd.org/project/blogbench)
which is designed to emulate a busy blog web server, with a number of concurrent thresds

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line 19 - ", which emulates a busy blog server with a number of concurrent threads"

# By default run a time base test
FIO_TIMEBASED=${FIO_TIMEBASED:-1}
# And 60s seems a good balance to get us repeatable numbers in not too long a time.
FIO_RUNTIME=${FIO_RUNTIME:-60}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we consider adding ramp_time?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can do. I know we have used it before in some fio testing.
I've added it in as an over-rideable, and set the default to 0s.
It's unclear to me just what it 'warms up' and in what circumstances - mostly I can see it would be caches, and mostly we are interested in un-cached setups and results.

Copy link

@klynnrif klynnrif left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with all the other grammar edits made in addition to one other suggested edit. Thanks!

@@ -27,6 +27,10 @@ Repeat this process if you want to compare multiple sets of results. Note, the
report generation scripts process all subfolders of `tests/metrics/results` when
generating the report.

> **Note:** By default, the `grabdata.sh` script ties to launch some moderately
> large containers (8Gbyte RAM), so may fail to produce some results on a memory
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

large containers (i.e. 8Gbyte RAM) and might fail to produce some results on a memory ...

Add `fio` based storage IO metrics test.
Allow some flexibility in configuraiton through the use of
environment variables.

Fixes: kata-containers#631

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
Graham Whaley added 2 commits September 10, 2018 15:09
Allow configuration, via the commandline, of which tests
the grabdata.sh script runs. By default it will run them
all.

Added as some of the tests can take a long time, and sometimes
you are really only interested in one or a few of the tests. To
save having to edit the test before running, add a test selection
capability to the commandline.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
Add the fio test, in default mode, to the report gen
grabdata script storage section.

For reference, on my machine the default fio test (random
read and write in direct mode with a small set of blocksizes)
takes about 10minutes to run.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
@grahamwhaley
Copy link
Contributor Author

all typos and grammatical issues should be addressed now. That was obviously not my best spelling day - iirc, I was pushing it out last thing on a Friday ;-)

@jodh-intel
Copy link
Contributor

jodh-intel commented Sep 10, 2018

Assuming the internet has now recovered from the ginormous json paste above... ;)

lgtm

Approved with PullApprove Approved with PullApprove

@jodh-intel
Copy link
Contributor

@grahamwhaley - yep I think that might have been an attack of Warsaw's Second Law. We should implement that! Now that github has removed the punchcard graph (:sob:) nobody would notice right? :smile:

@grahamwhaley
Copy link
Contributor Author

ooh, green green... anybody? (@jodh-intel ;-))

@jodh-intel jodh-intel merged commit b215974 into kata-containers:master Sep 12, 2018
@egernst egernst removed the review label Sep 12, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants