NFVBENCH-121 Add TRex parameters to tune performance and allocate ressources
[nfvbench.git] / nfvbench / traffic_server.py
index c3d4d14..df0a3be 100644 (file)
@@ -63,7 +63,39 @@ class TRexTrafficServer(TrafficServer):
         result = """# Config generated by NFVbench
         - port_limit : 2
           version    : 2
-          interfaces : [{ifs}]""".format(ifs=ifs)
+          zmq_pub_port : {zmq_pub_port}
+          zmq_rpc_port : {zmq_rpc_port}
+          prefix       : {prefix}
+          limit_memory : {limit_memory}
+          interfaces : [{ifs}]""".format(zmq_pub_port=generator_config.zmq_pub_port,
+                                         zmq_rpc_port=generator_config.zmq_rpc_port,
+                                         prefix=generator_config.name,
+                                         limit_memory=generator_config.limit_memory,
+                                         ifs=ifs)
+        if hasattr(generator_config, 'platform'):
+            if generator_config.platform.master_thread_id \
+                    and generator_config.platform.latency_thread_id:
+                platform = """
+          platform     :
+            master_thread_id  : {master_thread_id}
+            latency_thread_id : {latency_thread_id}
+            dual_if:""".format(master_thread_id=generator_config.platform.master_thread_id,
+                               latency_thread_id=generator_config.platform.latency_thread_id)
+                result += platform
+
+                for core in generator_config.platform.dual_if:
+                    threads = ""
+                    try:
+                        threads = ",".join([repr(thread) for thread in core.threads])
+                    except TypeError:
+                        LOG.warn("No threads defined for socket %s", core.socket)
+                    core_result = """
+                  - socket : {socket}
+                    threads : [{threads}]""".format(socket=core.socket, threads=threads)
+                    result += core_result
+            else:
+                LOG.info("Generator profile 'platform' sub-properties are set but not filled in \
+                         config file. TRex will use default values.")
 
         yaml.safe_load(result)
         if os.path.exists(filename):