This implements parallel iperf processes measurement.
I extended the arguments of the _prepare_client() method with the server_jobs
list to be able to use the ports the servers listen on when creating the
client jobs.
Signed-off-by: Jan Tluka <jtluka(a)redhat.com>
---
.../Perf/Measurements/IperfFlowMeasurement.py | 21 +++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/lnst/RecipeCommon/Perf/Measurements/IperfFlowMeasurement.py
b/lnst/RecipeCommon/Perf/Measurements/IperfFlowMeasurement.py
index c1217130..6b884975 100644
--- a/lnst/RecipeCommon/Perf/Measurements/IperfFlowMeasurement.py
+++ b/lnst/RecipeCommon/Perf/Measurements/IperfFlowMeasurement.py
@@ -126,7 +126,7 @@ class IperfFlowMeasurement(BaseFlowMeasurement):
test_flows = []
for flow in flows:
server_jobs = self._prepare_server(flow)
- client_jobs = self._prepare_client(flow)
+ client_jobs = self._prepare_client(flow, server_jobs)
test_flow = NetworkFlowTest(flow, server_jobs, client_jobs)
test_flows.append(test_flow)
return test_flows
@@ -145,12 +145,17 @@ class IperfFlowMeasurement(BaseFlowMeasurement):
elif flow.cpupin is not None:
raise RecipeError("Negative perf cpupin value provided.")
- server_jobs = [host.prepare_job(IperfServer(**server_params),
- job_level=ResultLevel.NORMAL)]
+ server_jobs = []
+ offset=12000
+ for i in range(flow.parallel_processes):
+ server_params["port"] = offset+i
+ server_job = host.prepare_job(IperfServer(**server_params),
+ job_level=ResultLevel.NORMAL)
+ server_jobs.append(server_job)
return server_jobs
- def _prepare_client(self, flow):
+ def _prepare_client(self, flow, server_jobs):
host = flow.generator
client_params = dict(server = ipaddress(flow.receiver_bind),
duration = flow.duration)
@@ -180,8 +185,12 @@ class IperfFlowMeasurement(BaseFlowMeasurement):
if flow.msg_size:
client_params["blksize"] = flow.msg_size
- client_jobs = [host.prepare_job(IperfClient(**client_params),
- job_level=ResultLevel.NORMAL)]
+ client_jobs = []
+ for i in range(0, flow.parallel_processes):
+ client_params["port"] = server_jobs[i].what.params.port
+ client_job = host.prepare_job(IperfClient(**client_params),
+ job_level=ResultLevel.NORMAL)
+ client_jobs.append(client_job)
return client_jobs
--
2.26.2