From: Ondrej Lichtner olichtne@redhat.com
Hi all,
the core of this patchset is refactorization of the PerfTestAndEvaluate recipe template into the lnst.RecipeCommon.Perf package implementing a template for generic performance measurement tests, moving the current MeasurementTools (Iperf and TRex) to fit this new model and adding CPUUtilization measurements.
All of this is then incorporated into the BaseEnrtRecipe which is currently the main user of the Perf recipe template.
There's also a couple of minor bug fixes and updates to the generic LNST API based on the experience of using them wrt. the main changes of this patchset.
!!!!!!!! Some of these feel more like Proposals at this point though and I'm not sure if they're good ideas. This is mostly related to the prepare_job method of the Namespace class. It should definitely be considered and thought about before fully accepting it. !!!!!!!!
Additional note: this patchset breaks the ENRT/OvS_DPDK_PvP.py due to the reorganization of the PerfRecipe. I wanted to send the patchset ASAP so that it can get some reviews. I'll work on updating the OvS_DPDK_PvP recipe while those reviews are coming in. And I won't merge this patchset without the additional fixes for Ovs_DPDK_PvP...
Thanks,
-Ondrej
Ondrej Lichtner (16): lnst.Common.Utils: change std_deviation calculation lnst.Tests.Iperf: set target bitrate to 0 lnst.Common.Parameters: add ListParam lnst.Tests.Iperf: fix parallel parameter lnst.Tests.Iperf: add runtime_estimate method lnst.Tests.Iperf: cleanup imports lnst.Controller.Job: change wait default timeout lnst.Controller.RecipeResults: add data_level attribute lnst.Controller.RunSummaryFormatter: fix header format lnst.Controller.Namespace: add prepare_job method for delayed start lnst.Controller.Job: expose the what attribute add lnst.Tests.CPUStatMonitor lnst.RecipeCommon.{Perf, PerfResult}: refactoring add lnst.RecipeCommon.Perf.Measurements package lnst.Controller.RecipeResults: rename desc to description lnst.Controller.RunSummaryFormatter: improve multiline result descriptions
lnst/Common/Parameters.py | 18 ++ lnst/Common/Utils.py | 8 +- lnst/Controller/Job.py | 21 +- lnst/Controller/Namespace.py | 5 + lnst/Controller/Recipe.py | 6 +- lnst/Controller/RecipeResults.py | 41 ++-- lnst/Controller/RunSummaryFormatter.py | 10 +- lnst/RecipeCommon/IperfMeasurementTool.py | 83 ------- lnst/RecipeCommon/Perf.py | 120 ----------- .../Perf/Measurements/BaseCPUMeasurement.py | 109 ++++++++++ .../Perf/Measurements/BaseFlowMeasurement.py | 202 ++++++++++++++++++ .../Perf/Measurements/BaseMeasurement.py | 29 +++ .../Perf/Measurements/IperfFlowMeasurement.py | 157 ++++++++++++++ .../Perf/Measurements/MeasurementError.py | 4 + .../Perf/Measurements/StatCPUMeasurement.py | 88 ++++++++ .../Measurements/TRexMeasurement.py} | 0 .../Perf/Measurements/__init__.py | 3 + lnst/RecipeCommon/Perf/Recipe.py | 73 +++++++ .../{PerfResult.py => Perf/Results.py} | 65 +++--- lnst/RecipeCommon/Perf/__init__.py | 0 lnst/Recipes/ENRT/BaseEnrtRecipe.py | 45 ++-- lnst/Tests/CPUStatMonitor.py | 113 ++++++++++ lnst/Tests/Iperf.py | 14 +- 23 files changed, 923 insertions(+), 291 deletions(-) delete mode 100644 lnst/RecipeCommon/IperfMeasurementTool.py delete mode 100644 lnst/RecipeCommon/Perf.py create mode 100644 lnst/RecipeCommon/Perf/Measurements/BaseCPUMeasurement.py create mode 100644 lnst/RecipeCommon/Perf/Measurements/BaseFlowMeasurement.py create mode 100644 lnst/RecipeCommon/Perf/Measurements/BaseMeasurement.py create mode 100644 lnst/RecipeCommon/Perf/Measurements/IperfFlowMeasurement.py create mode 100644 lnst/RecipeCommon/Perf/Measurements/MeasurementError.py create mode 100644 lnst/RecipeCommon/Perf/Measurements/StatCPUMeasurement.py rename lnst/RecipeCommon/{TRexMeasurementTool.py => Perf/Measurements/TRexMeasurement.py} (100%) create mode 100644 lnst/RecipeCommon/Perf/Measurements/__init__.py create mode 100644 lnst/RecipeCommon/Perf/Recipe.py rename lnst/RecipeCommon/{PerfResult.py => Perf/Results.py} (72%) create mode 100644 lnst/RecipeCommon/Perf/__init__.py create mode 100644 lnst/Tests/CPUStatMonitor.py