From b16f6c59bc9b37336f07c208106e566c05446205 Mon Sep 17 00:00:00 2001 From: Vratko Polak Date: Fri, 7 Aug 2020 14:31:42 +0200 Subject: [PATCH] Measure latency only in special cases + Measure latency in 90/50/10/0% PDR loads in ndrpdr tests. + Do not measure latency anywhere else. - Needs manual editing to re-enable in soak tests. Change-Id: I69fa11bfcf71012f683061c5effea52a1be91620 Signed-off-by: Vratko Polak --- resources/libraries/python/TrafficGenerator.py | 20 ++++++++++++++------ .../robot/performance/performance_utils.robot | 2 +- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py index 1f753bdcaf..119702c15b 100644 --- a/resources/libraries/python/TrafficGenerator.py +++ b/resources/libraries/python/TrafficGenerator.py @@ -167,6 +167,7 @@ class TrafficGenerator(AbstractMeasurer): self.warmup_time = None self.traffic_directions = None self.negative_loss = None + self.use_latency = None # Transient data needed for async measurements. self._xstats = (None, None) # TODO: Rename "xstats" to something opaque, so T-Rex is not privileged? @@ -706,7 +707,7 @@ class TrafficGenerator(AbstractMeasurer): def trex_stl_start_remote_exec( self, duration, rate, frame_size, traffic_profile, async_call=False, - latency=True, warmup_time=5.0, traffic_directions=2, tx_port=0, + latency=False, warmup_time=5.0, traffic_directions=2, tx_port=0, rx_port=1): """Execute T-Rex STL script on remote node over ssh to start running traffic. @@ -798,7 +799,7 @@ class TrafficGenerator(AbstractMeasurer): def send_traffic_on_tg( self, duration, rate, frame_size, traffic_profile, warmup_time=5, - async_call=False, latency=True, traffic_directions=2, tx_port=0, + async_call=False, latency=False, traffic_directions=2, tx_port=0, rx_port=1): """Send traffic from all configured interfaces on TG. @@ -920,7 +921,7 @@ class TrafficGenerator(AbstractMeasurer): def set_rate_provider_defaults( self, frame_size, traffic_profile, warmup_time=0.0, - traffic_directions=2, negative_loss=True): + traffic_directions=2, negative_loss=True, latency=False): """Store values accessed by measure(). :param frame_size: Frame size identifier or value [B]. @@ -930,17 +931,21 @@ class TrafficGenerator(AbstractMeasurer): :param traffic_directions: Traffic is bi- (2) or uni- (1) directional. Default: 2 :param negative_loss: If false, negative loss is reported as zero loss. + :param latency: Whether to measure latency during the trial. + Default: False. :type frame_size: str or int :type traffic_profile: str :type warmup_time: float :type traffic_directions: int :type negative_loss: bool + :type latency: bool """ self.frame_size = frame_size self.traffic_profile = str(traffic_profile) self.warmup_time = float(warmup_time) self.traffic_directions = traffic_directions self.negative_loss = negative_loss + self.use_latency = latency def get_measurement_result(self, duration=None, transmit_rate=None): """Return the result of last measurement as ReceiveRateMeasurement. @@ -995,7 +1000,7 @@ class TrafficGenerator(AbstractMeasurer): unit_rate_int = transmit_rate / float(self.traffic_directions) self.send_traffic_on_tg( duration, unit_rate_int, self.frame_size, self.traffic_profile, - warmup_time=self.warmup_time, latency=True, + warmup_time=self.warmup_time, latency=self.use_latency, traffic_directions=self.traffic_directions ) return self.get_measurement_result(duration, transmit_rate) @@ -1082,7 +1087,7 @@ class OptimizedSearch: frame_size, traffic_profile, minimum_transmit_rate, maximum_transmit_rate, plr_target=1e-7, tdpt=0.1, initial_count=50, timeout=1800.0, trace_enabled=False, - traffic_directions=2): + traffic_directions=2, latency=False): """Setup initialized TG, perform soak search, return avg and stdev. :param frame_size: Frame size identifier or value [B]. @@ -1104,6 +1109,8 @@ class OptimizedSearch: :param trace_enabled: True if trace enabled else False. :param traffic_directions: Traffic is bi- (2) or uni- (1) directional. Default: 2 + :param latency: Whether to measure latency during the trial. + Default: False. :type frame_size: str or int :type traffic_profile: str :type minimum_transmit_rate: float @@ -1113,6 +1120,7 @@ class OptimizedSearch: :type timeout: float :type trace_enabled: bool :type traffic_directions: int + :type latency: bool :returns: Average and stdev of estimated aggregate rate giving PLR. :rtype: 2-tuple of float """ @@ -1123,7 +1131,7 @@ class OptimizedSearch: ) tg_instance.set_rate_provider_defaults( frame_size, traffic_profile, traffic_directions=traffic_directions, - negative_loss=False) + negative_loss=False, latency=latency) algorithm = PLRsearch( measurer=tg_instance, trial_duration_per_trial=tdpt, packet_loss_ratio_target=plr_target, diff --git a/resources/libraries/robot/performance/performance_utils.robot b/resources/libraries/robot/performance/performance_utils.robot index f14d7bd13c..dcabbb9fac 100644 --- a/resources/libraries/robot/performance/performance_utils.robot +++ b/resources/libraries/robot/performance/performance_utils.robot @@ -499,7 +499,7 @@ | | Send traffic on tg | ${trial_duration} | ${real_rate} | ${frame_size} | | ... | ${traffic_profile} | warmup_time=${0} | | ... | traffic_directions=${traffic_directions} | tx_port=${tx_port} -| | ... | rx_port=${rx_port} +| | ... | rx_port=${rx_port} | latency=${True} | | ${latency} = | Get Latency Int | | Set Test Message | ${\n}${message_prefix} ${latency} | append=${True} -- 2.16.6