diff options
author | Christian Trautman <ctrautma@redhat.com> | 2017-01-23 10:21:53 -0500 |
---|---|---|
committer | Christian Trautman <ctrautma@redhat.com> | 2017-01-23 10:32:10 -0500 |
commit | 69751e8b32691c4e82cb83c98130b0d8e1934d75 (patch) | |
tree | d12a4a47a81761ed343dfb26bf5dfd4808508bf1 | |
parent | 605742c4e23f8aa199395dea96d5758dc2616093 (diff) |
xena_cont_accuracy_fix: Xena continuous traffic accuracy fixes
Second patch to help improve Xena continuous traffic accuracy.
Increases delay before gathering statistics to allow packets in
flight to be received. Changes bps and fps to be calculated
based on total bytes and packets received versus capturing the
data while port is transmitting from active statistics.
Sets time limit on ports based on duration.
JIRA: VSPerf-423
Change-Id: I574819694d3141edb539de64bc16dcd6c6fcf489
Signed-off-by: Christian Trautman <ctrautma@redhat.com>
-rwxr-xr-x | tools/pkt_gen/xena/xena.py | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/tools/pkt_gen/xena/xena.py b/tools/pkt_gen/xena/xena.py index 20577e8d..6e3444af 100755 --- a/tools/pkt_gen/xena/xena.py +++ b/tools/pkt_gen/xena/xena.py @@ -188,9 +188,10 @@ class Xena(ITrafficGenerator): result_dict[ResultsConstants.TX_FRAMES] = self.tx_stats.data[ self.tx_stats.pt_stream_keys[0]]['packets'] result_dict[ResultsConstants.TX_RATE_FPS] = self.tx_stats.data[ - self.tx_stats.pt_stream_keys[0]]['pps'] - result_dict[ResultsConstants.TX_RATE_MBPS] = self.tx_stats.data[ - self.tx_stats.pt_stream_keys[0]]['bps'] / 1000000 + self.tx_stats.pt_stream_keys[0]]['packets'] / self._duration + result_dict[ResultsConstants.TX_RATE_MBPS] = (( + self.tx_stats.data[self.tx_stats.pt_stream_keys[0]]['bytes'] + * 8) / 1000000) / self._duration result_dict[ResultsConstants.TX_BYTES] = self.tx_stats.data[ self.tx_stats.pt_stream_keys[0]]['bytes'] # tx rate percent may need to be halved if bi directional @@ -214,10 +215,11 @@ class Xena(ITrafficGenerator): 'pr_tpldstraffic']['0']['packets'] result_dict[ ResultsConstants.THROUGHPUT_RX_FPS] = self.rx_stats.data[ - 'pr_tpldstraffic']['0']['pps'] + 'pr_tpldstraffic']['0']['packets'] / self._duration result_dict[ - ResultsConstants.THROUGHPUT_RX_MBPS] = self.rx_stats.data[ - 'pr_tpldstraffic']['0']['bps'] / 1000000 + ResultsConstants.THROUGHPUT_RX_MBPS] = (( + self.rx_stats.data['pr_tpldstraffic']['0']['bytes'] + *8) / 1000000) / self._duration result_dict[ResultsConstants.RX_BYTES] = self.rx_stats.data[ 'pr_tpldstraffic']['0']['bytes'] # throughput percent may need to be halved if bi directional @@ -395,6 +397,8 @@ class Xena(ITrafficGenerator): settings.getValue('TRAFFICGEN_XENA_PORT1_IP'), settings.getValue('TRAFFICGEN_XENA_PORT1_CIDR'), settings.getValue('TRAFFICGEN_XENA_PORT1_GATEWAY')) + self.xmanager.ports[0].set_port_time_limit(self._duration) + self.xmanager.ports[1].set_port_time_limit(self._duration) def setup_stream(stream, port, payload_id, flip_addr=False): """ @@ -459,7 +463,7 @@ class Xena(ITrafficGenerator): if not self.xmanager.ports[1].traffic_on(): self._logger.error( "Failure to start port 1. Check settings and retry.") - sleep(self._duration + 1) + sleep(self._duration + 5) # the extra 5 seconds is to allow packets in flight to complete # getting results if self._params['traffic']['bidir'] == 'True': # need to aggregate out both ports stats and assign that data |