Skip to content

Add Windows compression benchmark 7-zip #5250

@jellyfishcake

Description

@jellyfishcake

https://www.7-cpu.com/
https://www.7-cpu.com/utils.html

This task adds LZMA 7-Zip Benchmark as a new benchmark for PKB. It can be divided into a few different components:

  1. Add the benchmarking framework
  • create seven_benchmark.py file in linux_benchmarks
  • populate BENCHMARK_NAME and BENCHMARK_CONFIG constants so that the benchmark can be found by PKB
  • create GetConfig, Prepare, Run and Cleanup functions handlers with pass/return [] as function content.
    At this point you can run your new benchmark in PKB (though it will not do anything yet).
  1. Install 7-benchmark
  • try installing on your machine using the guide on github.
  • Create a new package called seven_benchmark.py in linux_packages.
  • create a new function, Install, that takes a vm as an input and installs 7-benchmark on that vm. You should be able to wrap shell commands as vm.RemoteCommand
    add unit tests to make sure the remote commands are issued using mock to mock the vm.
  1. Run 7-benchmark
  • Download and run 7-benchmark locally, you don't need to use PKB to run 7-benchmark. This part is about parsing the output into some sensible format.
  • Store the 7-benchmark output as a file in the data directory under data/7-benchmark. This file will be your raw data for parsing and parsing unit tests.
  • Add a function in 7-benchmark.py that you added to linux_packages with a sensible name, e.g. ParseResults
  • Parse results should take a str as input and produce a list of PKB Samples as output. You goal is to parse the output into useful samples, where each sample as a metric name, metric value, metric unit, metric metadata. Each row of 7-benchmark's output should be a separate metric.
    Test the parser function

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issueThis is a good issue for someone new to PKB

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions