Store & Analyse Results

Introduction

All results generated by benchmarks, along with metadata about those benchmarks, suts and swprofiles, are stored in a “resultstore”. Fastpath supports 3 formats for resultstores. Where ever fastpath expects a resultstore, you can pass a format-specific URL as follows:

  • CSV: csv:///<directory>

  • SQLite: sqlite: sqlite:///<dbfile>

  • MySQL: mysql://<user>:<password>@<host>:<port>/<dbname>

Note

If the protocol is omitted, the URL is assumed to be pointing to a directory containing all the CSV files for the CSV format.

Note

When using a MySQL resultstore, it is sufficient for a user to have RO access when performing operations that only require reading data (e.g. fastpath result list, fastpath result show or when the resultstore is a source for fastpath result merge). For operations that write data to the resultstore, the user must have read-write access.

All 3 formats are interchangable; all data can be represented with equal fidelity in all 3 formats, and it is possible to move data between the formats and merge data selectively from multiple resultstores into a single unified resultstore.

List Contained Objects

A resultstore catlogues 3 types of top-level objects; sut, swprofile and benchmark. Each object instance in the resultstore has an ID, which is used to refer to that specific object in many contexts; for example when requesting that fastpath result show or fastpath result merge filters certain objects.

The following command lists all objects of the specified type, listing their IDs and metadata specific to each object. This example lists swprofiles:

fastpath result list results/ --object swprofile

Additionally you can provide an ID glob to filter the listed objects:

fastpath result list results/ --object swprofile --id *without*

Analyse Results

Fastpath’s fastpath result show command can perform a range of analysis on results in a resultstore. Let’s use the resultstore generated from the tutorial in Define & Execute a Plan to demonstrate some of the features.

First, let’s look at the summary statistics for all the benchmarks of a single swprofile for a single sut. There is only a single sut in the resultstore so it is implicitly used. We specify the single swprofile we would like to view results for and specify that we want to see the summary statistics relative to the mean. The resulting table shows min/mean/max as well as the 95% confidence interval bounds, the coefficient of variation (that’s the standard deviation expressed as a percentage of the mean) and the number of samples:

fastpath result show results/ --swprofile without-mthp --relative
../_images/fastpath-result-show-single.png

Now let’s compare results between 2 swprofiles. This time we get a summary table that compares the means, and if there are any statistically significant changes, regressions are highlighted in red and improvements are highlighted in green. Here we can see that enabling 64K mTHP in the kernel improved the kernbench benchmark by 5.17% on average. The speedometer benchmark also improved by 1.65% on average, but this is not deemed statistically significant so it is not highlighted.

Note

A change is considered statistically significant if the 95% confidence intervals for the 2 results being compared do not overlap. Additionally the comparison mean must be beyond noise-threshold percent of the baseline mean. The noise-threshold can be specified but defaults to 1%. Whether a change is considered an improvement or regression depends on the measurement. For example times usually improve when they get smaller, rates usually improve when they get bigger.

fastpath result show results/ --swprofile without-mthp --swprofile with-mthp --relative
../_images/fastpath-result-show-multi.png

fastpath result show supports a number of ancillary options. For example, we can print the table using only ascii characters. In this case, only ascii characters are used and instead of coloring the output for improvements and regressions, the symbols (I) and (R) are displayed. This can be useful for plain text email and for people with color blindness. Additionally you can filter the results to show only improvements (See fastpath result show --help for more options):

fastpath result show result/ --swprofile without-mthp --swprofile with-mthp --relative --ascii --display improvement
Results for SUT my-fastpath-sut:

+-------------------+-------------------+----------------+-------------+
| Benchmark         | Result Class      |   without-mthp |   with-mthp |
+===================+===================+================+=============+
| mmtests/kernbench | elsp-64 (seconds) |         389.80 |  (I) -5.17% |
|                   | syst-64 (seconds) |        2155.99 | (I) -43.83% |
+-------------------+-------------------+----------------+-------------+

Copy and Merge Data

Fastpath supports the fastpath result merge command to copy data from one or more source resultstores into a destination resultstore. If the destination does not exist, it will be created. It is already exists, data is merged with any existing data; the --append option is required for the latter scenario.

It is also possible to filter the data to be copied/merged based on sut, swprofile or benchmark ids.

See the command help for more information:

fastpath result merge --help