This enables parallel iperf testing for the ENRT recipes. To run multiple iperf
measurements at the same time, specify new parameter perf_parallel_processes
to a value grater than one. If set to one or unspecified, the behaviour is the
same as before.
From the implementation point of view there is one additional change to the
previous behaviour where the iperf server port is specified for each generated
Flow. The port value starts at 12000 and is increased with each Flow.
Signed-off-by: Jan Tluka <jtluka(a)redhat.com>
---
.../IperfMeasurementGenerator.py | 29 ++++++++++++-------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/lnst/Recipes/ENRT/MeasurementGenerators/IperfMeasurementGenerator.py
b/lnst/Recipes/ENRT/MeasurementGenerators/IperfMeasurementGenerator.py
index 904efa34..5570f9e4 100644
--- a/lnst/Recipes/ENRT/MeasurementGenerators/IperfMeasurementGenerator.py
+++ b/lnst/Recipes/ENRT/MeasurementGenerators/IperfMeasurementGenerator.py
@@ -44,6 +44,12 @@ class IperfMeasurementGenerator(BaseMeasurementGenerator):
measured at the same time.
:type perf_parallel_streams: :any:`IntParam` (default 1)
+ :param perf_parallel_processes:
+ Parameter used by the :any:`generate_flow_combinations` generator. To
+ specify how many parallel net_perf_tool processes of the same network flow
+ should be measured at the same time.
+ :type perf_parallel_processes: :any:`IntParam` (default 1)
+
:param perf_msg_sizes:
Parameter used by the :any:`generate_flow_combinations` generator. To
specify what different message sizes (in bytes) used generated for the
@@ -58,6 +64,7 @@ class IperfMeasurementGenerator(BaseMeasurementGenerator):
perf_duration = IntParam(default=60)
perf_iterations = IntParam(default=5)
perf_parallel_streams = IntParam(default=1)
+ perf_parallel_processes = IntParam(default=1)
perf_msg_sizes = ListParam(default=[123])
net_perf_tool = Param(default=IperfFlowMeasurement)
@@ -124,17 +131,19 @@ class IperfMeasurementGenerator(BaseMeasurementGenerator):
msg_size,
) -> List[PerfFlow]:
flows = []
- flows.append(
- self._create_perf_flow(
- perf_test,
- client_nic,
- client_bind,
- server_nic,
- server_bind,
- None,
- msg_size,
+ port_offset=12000
+ for i in range(self.params.perf_parallel_processes):
+ flows.append(
+ self._create_perf_flow(
+ perf_test,
+ client_nic,
+ client_bind,
+ server_nic,
+ server_bind,
+ port_offset + i,
+ msg_size,
+ )
)
- )
return flows
--
2.26.2