kata-containers/tests/metrics/report
Gabriela Cervantes 75dcca5a53 metrics: Add grabdata script for metrics report
This PR adds the grabdata script so it can be used for the metrics report
for kata metrics.

Fixes #7812

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
(cherry picked from commit 6668825752)
2023-09-21 13:30:07 +02:00
..
report_dockerfile metrics: Add test setup details to metrics report 2023-09-21 13:28:35 +02:00
grabdata.sh metrics: Add grabdata script for metrics report 2023-09-21 13:30:07 +02:00
makereport.sh metrics: Add metrics report script 2023-09-21 13:27:40 +02:00
README.md metrics: Add README for kata metrics report 2023-09-21 13:29:29 +02:00

Kata Containers metrics report generator

The files within this directory can be used to generate a "metrics report" for Kata Containers. The primary workflow consists of two stages:

  1. Run the provided report metrics data gathering scripts on the system(s) you wish to analyze.
  2. Run the provided report generation script to analyze the data and generate a report file.

Data gathering

Data gathering is provided by the grabdata.sh script. When run, this script executes a set of tests from the tests/metrics directory. The JSON results files will be placed into the tests/metrics/results directory. Once the results are generated, create a suitably named subdirectory of tests/metrics/results, and move the JSON files into it. Repeat this process if you want to compare multiple sets of results. Note, the report generation scripts process all subdirectories of tests/metrics/results when generating the report.

Note: By default, the grabdata.sh script tries to launch some moderately large containers (i.e. 8Gbyte RAM) and may fail to produce some results on a memory constrained system.

You can restrict the subset of tests run by grabdata.sh via its commandline parameters:

Option Description
-a Run all tests (default)
-d Run the density tests
-h Print this help
-s Run the storage tests
-t Run the time tests

Report generation

Report generation is provided by the makereport.sh script. By default this script processes all subdirectories of the tests/metrics/results directory to generate the report. To run in the default mode, execute the following:

$ ./makereport.sh 

The report generation tool uses Rmarkdown, R and Pandoc to produce a PDF report. To avoid the need for all users to set up a working environment with all the necessary tooling, the makereport.sh script utilises a Dockerfile with the environment pre-defined in order to produce the report. Thus, you need to have Docker installed on your system in order to run the report generation. The resulting metrics_report.pdf is generated into the output subdirectory of the report directory.

Debugging and development

To aid in script development and debugging, the makereport.sh script offers a debug facility via the -d command line option. Using this option will place you into a bash shell within the running Dockerfile image used to generate the report, whilst also mapping your host side R scripts from the report_dockerfile subdirectory into the container, thus facilitating a "live" edit/reload/run development cycle. From there you can examine the Docker image environment, and execute the generation scripts. E.g., to test the scaling.R script, you can execute:

$ makereport.sh -d
# R 
> source('/inputdir/Env.R') 
> source('/scripts/lifecycle-time.R')

You can then edit the report_dockerfile/lifecycle-time.R file on the host, and re-run the source('/scripts/lifecycle-time.R') command inside the still running R container.