On Fri, May 03, 2019 at 12:24:12PM +0200, olichtne(a)redhat.com wrote:
From: Ondrej Lichtner <olichtne(a)redhat.com>
Hi all,
the main point of the following patchset is in the final 4 patches. This
being adding additional information to performance measurements. This is
strictly meant for increasing the visibility of some information in
order to provide better context to result reporting and result
evaluation and is not supposed to have any impact on the performance
measurement itself.
Our use-case specifically involves saving these measurements into a
database and searching for a baseline measurement for a comparison based
evaluation. This requires enough information to be able to differentiate
between which measurement results were measured as a group at the same
time (e.g. cpu utilization while measuring flow throughput, or multiple
flow throughputs at the same time). And what the specific configuration
of the performance test (it's purpose if you will, e.g. ipv4,
tcp_stream) was.
On it's own the measurement object or it's result previously didn't have
this information - e.g. the CPUMeasurement isn't configured to know that
the purpose of the test is ipv4, tcp_stream with certain offloads
disabled and as it's not relevant to how to actually measure CPU
utilization. But this information is very relevant when trying to report
and most importantly evaluatie the CPUMeasurement results - you don't
want to compare a ipv4 and ipv6 cpu measurements for example.
Up until now this level of information was only available at the level
of the BaseEnrtRecipe where the individual Measurement objectes are
being instantiated. So it's at this point that I've also decided to
create a new dictionary that collect this information and provides it to
the newly created measurement.
At this point this is really just an experimental solution and it will
most definitively require refactoring of the current way of how the
EnrtConfifuration and EnrtSubConfiguration objects work and are in the
end passed to the Measurement instances. However it's good enough to be
used with a database and the basic concept shouldn't change much I hope.
-Ondrej
Ondrej Lichtner (9):
BaselineCPUAverageEvaluator: fix no baseline evaluation result
ENRT.BaseEnrtRecipe: remove unused parameters
ENRT.SimplePerfRecipe: remove commented out adaptive coalescing
configuration
Perf.Recipe.RecipeResults: rename perf_conf attribute
lnst.Controller.Recipe: add overall_result property to RecipeRun
Perf.Measurements.BaseMeasurement: add recipe_conf attribute
ENRT.BaseEnrtRecipe.EnrtConfiguration: add params attribute
ENRT.SimplePerfRecipe: add recipe params to test_wide_config result
ENRT.BaseEnrtRecipe: provide recipe configuration to perf measurements
lnst/Controller/Recipe.py | 4 ++
lnst/Controller/RunSummaryFormatter.py | 5 +-
.../Evaluators/BaselineCPUAverageEvaluator.py | 3 +-
.../Perf/Measurements/BaseMeasurement.py | 9 +++-
lnst/RecipeCommon/Perf/Recipe.py | 12 ++---
lnst/Recipes/ENRT/BaseEnrtRecipe.py | 52 +++++++++++++------
lnst/Recipes/ENRT/SimplePerfRecipe.py | 19 +------
7 files changed, 58 insertions(+), 46 deletions(-)
--
2.21.0
as the changes shouldn't really affect any functionality, have been
extensively tested internally I'm proceeding to pushing this to the next
branch.
-Ondrej