summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrice Buriez <patrice.buriez@intel.com>2018-08-21 20:45:30 +0200
committerPatrice Buriez <patrice.buriez@intel.com>2018-08-21 20:45:30 +0200
commit8aec0b7b8faeea7f22019cb18319e88faeda98b5 (patch)
tree230b5a4fa848c9ba246ecea573b4c2baa8d4aaef
parentbd5e7473199c3ff00ce212a635453cc938387a92 (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.py27
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