From 24314713446b6411cedce4329ab5ebfd6da678a2 Mon Sep 17 00:00:00 2001 From: Pierrick Louin Date: Fri, 2 Aug 2019 15:16:33 +0200 Subject: NFVBENCH-155 Add options to disable extra stats, latency stats and latency streams Change-Id: I9af56bf1b618a072adbc92b43e65e10b274d4f17 Signed-off-by: fmenguy --- nfvbench/cfg.default.yaml | 15 +++++++++++++++ nfvbench/nfvbench.py | 23 +++++++++++++++++++++++ nfvbench/traffic_client.py | 5 ++++- nfvbench/traffic_gen/trex_gen.py | 22 ++++++++++++++++------ 4 files changed, 58 insertions(+), 7 deletions(-) (limited to 'nfvbench') diff --git a/nfvbench/cfg.default.yaml b/nfvbench/cfg.default.yaml index fdd5f84..551b1c4 100755 --- a/nfvbench/cfg.default.yaml +++ b/nfvbench/cfg.default.yaml @@ -755,3 +755,18 @@ no_vswitch_access: false # Can be overriden by --service-mode # Should be left to the default value (false) service_mode: false + +# Disable extra flow stats (on high load traffic) +# Can be overriden by --no-flow-stats +# Should be left to the default value (false) +no_flow_stats: false + +# Disable flow stats for latency traffic +# Can be overriden by --no-latency-stats +# Should be left to the default value (false) +no_latency_stats: false + +# Disable latency measurements (no streams) +# Can be overriden by --no-latency-stream +# Should be left to the default value (false) +no_latency_streams: false diff --git a/nfvbench/nfvbench.py b/nfvbench/nfvbench.py index 80b9a93..18a7d2b 100644 --- a/nfvbench/nfvbench.py +++ b/nfvbench/nfvbench.py @@ -444,6 +444,21 @@ def _parse_opts_from_cli(): default=False, help='Enable T-Rex service mode for debugging only') + parser.add_argument('--no-flow-stats', dest='no_flow_stats', + action='store_true', + default=False, + help='Disable extra flow stats (on high load traffic)') + + parser.add_argument('--no-latency-stats', dest='no_latency_stats', + action='store_true', + default=False, + help='Disable flow stats for latency traffic') + + parser.add_argument('--no-latency-streams', dest='no_latency_streams', + action='store_true', + default=False, + help='Disable latency measurements (no streams)') + opts, unknown_opts = parser.parse_known_args() return opts, unknown_opts @@ -583,6 +598,14 @@ def main(): config.vxlan = True if opts.restart: config.restart = True + if opts.service_mode: + config.service_mode = True + if opts.no_flow_stats: + config.no_flow_stats = True + if opts.no_latency_stats: + config.no_latency_stats = True + if opts.no_latency_streams: + config.no_latency_streams = True # port to port loopback (direct or through switch) if opts.l2_loopback: config.l2_loopback = True diff --git a/nfvbench/traffic_client.py b/nfvbench/traffic_client.py index 7591062..6d870f6 100755 --- a/nfvbench/traffic_client.py +++ b/nfvbench/traffic_client.py @@ -679,7 +679,10 @@ class TrafficClient(object): self.run_config['rates'][idx] = {'rate_pps': self.__convert_rates(rate)['rate_pps']} self.gen.clear_streamblock() - self.gen.create_traffic(frame_size, self.run_config['rates'], bidirectional, latency=True) + if self.config.no_latency_streams: + LOG.info("Latency streams are disabled") + self.gen.create_traffic(frame_size, self.run_config['rates'], bidirectional, + latency=not self.config.no_latency_streams) def _modify_load(self, load): self.current_total_rate = {'rate_percent': str(load)} diff --git a/nfvbench/traffic_gen/trex_gen.py b/nfvbench/traffic_gen/trex_gen.py index b8e32e3..53786f7 100644 --- a/nfvbench/traffic_gen/trex_gen.py +++ b/nfvbench/traffic_gen/trex_gen.py @@ -438,6 +438,8 @@ class TRex(AbstractTrafficGenerator): """ streams = [] pg_id, lat_pg_id = self.get_pg_id(port, chain_id) + if self.config.no_flow_stats: + LOG.info("Traffic flow statistics are disabled.") if l2frame == 'IMIX': for ratio, l2_frame_size in zip(IMIX_RATIOS, IMIX_L2_SIZES): pkt = self._create_pkt(stream_cfg, l2_frame_size) @@ -448,11 +450,13 @@ class TRex(AbstractTrafficGenerator): if stream_cfg['vxlan'] is True: streams.append(STLStream(packet=pkt, flow_stats=STLFlowStats(pg_id=pg_id, - vxlan=True), + vxlan=True) + if not self.config.no_flow_stats else None, mode=STLTXCont(pps=ratio))) else: streams.append(STLStream(packet=pkt, - flow_stats=STLFlowStats(pg_id=pg_id), + flow_stats=STLFlowStats(pg_id=pg_id) + if not self.config.no_flow_stats else None, mode=STLTXCont(pps=ratio))) if latency: @@ -469,11 +473,13 @@ class TRex(AbstractTrafficGenerator): if stream_cfg['vxlan'] is True: streams.append(STLStream(packet=pkt, flow_stats=STLFlowStats(pg_id=pg_id, - vxlan=True), + vxlan=True) + if not self.config.no_flow_stats else None, mode=STLTXCont())) else: streams.append(STLStream(packet=pkt, - flow_stats=STLFlowStats(pg_id=pg_id), + flow_stats=STLFlowStats(pg_id=pg_id) + if not self.config.no_flow_stats else None, mode=STLTXCont())) # for the latency stream, the minimum payload is 16 bytes even in case of vlan tagging # without vlan, the min l2 frame size is 64 @@ -483,14 +489,18 @@ class TRex(AbstractTrafficGenerator): pkt = self._create_pkt(stream_cfg, 68) if latency: + if self.config.no_latency_stats: + LOG.info("Latency flow statistics are disabled.") if stream_cfg['vxlan'] is True: streams.append(STLStream(packet=pkt, flow_stats=STLFlowLatencyStats(pg_id=lat_pg_id, - vxlan=True), + vxlan=True) + if not self.config.no_latency_stats else None, mode=STLTXCont(pps=self.LATENCY_PPS))) else: streams.append(STLStream(packet=pkt, - flow_stats=STLFlowLatencyStats(pg_id=lat_pg_id), + flow_stats=STLFlowLatencyStats(pg_id=lat_pg_id) + if not self.config.no_latency_stats else None, mode=STLTXCont(pps=self.LATENCY_PPS))) return streams -- cgit 1.2.3-korg