diff options
author | Patrice Buriez <patrice.buriez@intel.com> | 2018-08-21 20:45:30 +0200 |
---|---|---|
committer | Patrice Buriez <patrice.buriez@intel.com> | 2018-08-21 20:45:30 +0200 |
commit | 8aec0b7b8faeea7f22019cb18319e88faeda98b5 (patch) | |
tree | 230b5a4fa848c9ba246ecea573b4c2baa8d4aaef | |
parent | bd5e7473199c3ff00ce212a635453cc938387a92 (diff) |
Decrease Sampling interval - Invalid Port results
JIRA: YARDSTICK-1219
The computed in/fwd throughputs displayed on the L2FWD,
L3FWD and VPE dashboards. The computed value is likely
4x the expected value.
It is required to return sampling information form Generator AND VNF at
least every 1 second.
Change-Id: I4435fd05ba3116ead836843a4c2fce133b767a28
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
Signed-off-by: Emma Foley <emma.l.foley@intel.com>
(cherry picked from commit 2d10b0bf7238f5417d46f89c76b856f7e345f738)
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
(also picking from commit 68aaa8ce8b20ba39040aa2469b384f59709620a7)
-rw-r--r-- | yardstick/network_services/vnf_generic/vnf/prox_vnf.py | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/yardstick/network_services/vnf_generic/vnf/prox_vnf.py b/yardstick/network_services/vnf_generic/vnf/prox_vnf.py index 9d90ddb47..bc810ecb3 100644 --- a/yardstick/network_services/vnf_generic/vnf/prox_vnf.py +++ b/yardstick/network_services/vnf_generic/vnf/prox_vnf.py @@ -15,8 +15,6 @@ import errno import logging import datetime -import time - from yardstick.common.process import check_if_process_failed from yardstick.network_services.vnf_generic.vnf.prox_helpers import ProxDpdkVnfSetupEnvHelper @@ -45,7 +43,8 @@ class ProxApproxVnf(SampleVNF): self.prev_packets_in = 0 self.prev_packets_sent = 0 - self.prev_time = time.time() + self.prev_tsc = 0 + self.tsc_hz = 0 super(ProxApproxVnf, self).__init__(name, vnfd, setup_env_helper_type, resource_helper_type) @@ -85,6 +84,12 @@ class ProxApproxVnf(SampleVNF): }) return result + if (self.tsc_hz == 0): + self.tsc_hz = float(self.resource_helper.sut.hz()) + LOG.debug("TSC = %f", self.tsc_hz) + if (self.tsc_hz == 0): + raise RuntimeError("Unable to retrieve TSC") + # use all_ports so we only use ports matched in topology port_count = len(self.vnfd_helper.port_pairs.all_ports) if port_count not in {1, 2, 4}: @@ -92,16 +97,18 @@ class ProxApproxVnf(SampleVNF): "1, 2 or 4 ports only supported at this time") all_port_stats = self.vnf_execute('multi_port_stats', range(port_count)) - curr_time = time.time() - rx_total = tx_total = 0 + rx_total = tx_total = tsc = 0 try: for single_port_stats in all_port_stats: rx_total = rx_total + single_port_stats[1] tx_total = tx_total + single_port_stats[2] + tsc = tsc + single_port_stats[5] except (TypeError, IndexError): LOG.error("Invalid data ...") return {} + tsc = tsc / port_count + result.update({ "packets_in": rx_total, "packets_dropped": max((tx_total - rx_total), 0), @@ -111,15 +118,15 @@ class ProxApproxVnf(SampleVNF): "collect_stats": self.resource_helper.collect_collectd_kpi(), }) try: - curr_packets_in = int((rx_total - self.prev_packets_in) - / (curr_time - self.prev_time)) + curr_packets_in = int(((rx_total - self.prev_packets_in) * self.tsc_hz) + / (tsc - self.prev_tsc)) except ZeroDivisionError: LOG.error("Error.... Divide by Zero") curr_packets_in = 0 try: - curr_packets_fwd = int((tx_total - self.prev_packets_sent) - / (curr_time - self.prev_time)) + curr_packets_fwd = int(((tx_total - self.prev_packets_sent) * self.tsc_hz) + / (tsc - self.prev_tsc)) except ZeroDivisionError: LOG.error("Error.... Divide by Zero") curr_packets_fwd = 0 @@ -129,7 +136,7 @@ class ProxApproxVnf(SampleVNF): self.prev_packets_in = rx_total self.prev_packets_sent = tx_total - self.prev_time = curr_time + self.prev_tsc = tsc LOG.debug("%s collect KPIs %s %s", self.APP_NAME, datetime.datetime.now(), result) return result |