diff options
15 files changed, 127 insertions, 119 deletions
diff --git a/scripts/automation/regression/setups/kiwi02/benchmark.yaml b/scripts/automation/regression/setups/kiwi02/benchmark.yaml index f6ad8e9a..343d4120 100644 --- a/scripts/automation/regression/setups/kiwi02/benchmark.yaml +++ b/scripts/automation/regression/setups/kiwi02/benchmark.yaml @@ -24,39 +24,39 @@ nat_dict: &nat_dict test_jumbo: multiplier : 55 cores : 1 - bw_per_core : 647305 + bw_per_core : 647.305 test_routing_imix: multiplier : 32 cores : 2 - bw_per_core : 39131 + bw_per_core : 39.131 test_routing_imix_64: multiplier : 2500 cores : 4 - bw_per_core : 7427 + bw_per_core : 7.427 test_static_routing_imix: stat_route_dict : *stat_route_dict multiplier : 32 cores : 2 - bw_per_core : 39039 + bw_per_core : 39.039 test_static_routing_imix_asymmetric: stat_route_dict : *stat_route_dict multiplier : 16 cores : 1 - bw_per_core : 38796 + bw_per_core : 38.796 test_ipv6_simple: multiplier : 32 cores : 4 - bw_per_core : 19283 + bw_per_core : 19.283 test_nat_simple_mode1: &test_nat_simple @@ -65,7 +65,7 @@ test_nat_simple_mode1: &test_nat_simple multiplier : 10000 cores : 1 allow_timeout_dev : True - bw_per_core : 45304 + bw_per_core : 45.304 test_nat_simple_mode2: *test_nat_simple @@ -77,7 +77,7 @@ test_nat_learning: test_nbar_simple: multiplier : 20 cores : 2 - bw_per_core : 18243 + bw_per_core : 18.243 nbar_classification: http : 30.41 rtp_audio : 21.22 @@ -100,11 +100,11 @@ test_rx_check_http: &rx_http cores : 2 rx_sample_rate : 32 error_tolerance : 0.01 - bw_per_core : 38071 + bw_per_core : 38.071 test_rx_check_http_ipv6: << : *rx_http - bw_per_core : 46733 + bw_per_core : 46.733 test_rx_check_sfr: &rx_sfr @@ -112,11 +112,11 @@ test_rx_check_sfr: &rx_sfr cores : 4 rx_sample_rate : 32 error_tolerance : 0.01 - bw_per_core : 16915 + bw_per_core : 16.915 test_rx_check_sfr_ipv6: << : *rx_sfr - bw_per_core : 20323 + bw_per_core : 20.323 diff --git a/scripts/automation/regression/setups/trex-dan/benchmark.yaml b/scripts/automation/regression/setups/trex-dan/benchmark.yaml index d2af373c..c8b046d4 100644 --- a/scripts/automation/regression/setups/trex-dan/benchmark.yaml +++ b/scripts/automation/regression/setups/trex-dan/benchmark.yaml @@ -24,39 +24,39 @@ nat_dict: &nat_dict test_jumbo: multiplier : 2.8 cores : 1 - bw_per_core : 67030 + bw_per_core : 67.030 test_routing_imix: multiplier : 1 cores : 1 - bw_per_core : 3979 + bw_per_core : 3.979 test_routing_imix_64: multiplier : 150 cores : 4 - bw_per_core : 681 + bw_per_core : .681 test_static_routing_imix: stat_route_dict : *stat_route_dict multiplier : 0.7 cores : 1 - bw_per_core : 3837 + bw_per_core : 3.837 test_static_routing_imix_asymmetric: stat_route_dict : *stat_route_dict multiplier : 0.8 cores : 1 - bw_per_core : 3939 + bw_per_core : 3.939 test_ipv6_simple: multiplier : 1.5 cores : 2 - bw_per_core : 4719 + bw_per_core : 4.719 test_nat_simple_mode1: &test_nat_simple @@ -65,20 +65,20 @@ test_nat_simple_mode1: &test_nat_simple multiplier : 550 cores : 1 allow_timeout_dev : True - bw_per_core : 7465 + bw_per_core : 7.465 test_nat_simple_mode2: *test_nat_simple test_nat_learning: << : *test_nat_simple - bw_per_core : 7377 + bw_per_core : 7.377 nat_opened : 40000 test_nbar_simple: multiplier : 1.5 cores : 2 - bw_per_core : 4465 + bw_per_core : 4.465 nbar_classification: http : 30.3 rtp_audio : 21.06 @@ -100,28 +100,28 @@ test_rx_check_http: &rx_http multiplier : 2200 cores : 1 rx_sample_rate : 16 - bw_per_core : 8142 + bw_per_core : 8.142 test_rx_check_http_ipv6: << : *rx_http - bw_per_core : 8591 + bw_per_core : 8.591 test_rx_check_http_negative: << : *rx_http stat_route_dict : *stat_route_dict nat_dict : *nat_dict - bw_per_core : 8037 + bw_per_core : 8.037 test_rx_check_sfr: &rx_sfr multiplier : 1.7 cores : 2 rx_sample_rate : 16 - bw_per_core : 4473 + bw_per_core : 4.473 test_rx_check_sfr_ipv6: << : *rx_sfr - bw_per_core : 4773 + bw_per_core : 4.773 diff --git a/scripts/automation/regression/setups/trex04/benchmark.yaml b/scripts/automation/regression/setups/trex04/benchmark.yaml index e3a477f5..d2b1c4f2 100644 --- a/scripts/automation/regression/setups/trex04/benchmark.yaml +++ b/scripts/automation/regression/setups/trex04/benchmark.yaml @@ -7,39 +7,27 @@ test_jumbo: multiplier : 2.8 cores : 1 - bw_per_core : 106652 + bw_per_core : 106.652 test_routing_imix: multiplier : 0.5 cores : 1 - bw_per_core : 11577 + bw_per_core : 11.577 test_routing_imix_64: multiplier : 28 cores : 1 - bw_per_core : 2030 + bw_per_core : 2.030 test_static_routing_imix_asymmetric: multiplier : 0.8 cores : 1 - bw_per_core : 13742 + bw_per_core : 13.742 -test_CPU_benchmark: - profiles: - - name : stl/udp_1pkt_simple.py - kwargs : {packet_len: 64} - cpu_util : 1 - bw_per_core : 1 - - - name : stl/udp_1pkt_simple.py - kwargs : {packet_len: 128} - cpu_util : 1 - bw_per_core : 1 - ### stateless ### diff --git a/scripts/automation/regression/setups/trex08/benchmark.yaml b/scripts/automation/regression/setups/trex08/benchmark.yaml index 97db6598..c5c2fde7 100644 --- a/scripts/automation/regression/setups/trex08/benchmark.yaml +++ b/scripts/automation/regression/setups/trex08/benchmark.yaml @@ -7,45 +7,45 @@ test_jumbo: multiplier : 150 cores : 2 - bw_per_core : 962464 + bw_per_core : 962.464 test_routing_imix: multiplier : 80 cores : 4 - bw_per_core : 55130 + bw_per_core : 55.130 test_routing_imix_64: multiplier : 8000 cores : 7 - bw_per_core : 11699 + bw_per_core : 11.699 test_static_routing_imix_asymmetric: multiplier : 70 cores : 3 - bw_per_core : 50561 + bw_per_core : 50.561 test_ipv6_simple: multiplier : 80 cores : 7 - bw_per_core : 25948 + bw_per_core : 25.948 test_rx_check_http: multiplier : 99000 cores : 3 rx_sample_rate : 128 - bw_per_core : 49464 + bw_per_core : 49.464 test_rx_check_sfr: multiplier : 80 cores : 7 rx_sample_rate : 128 - bw_per_core : 20871 + bw_per_core : 20.871 diff --git a/scripts/automation/regression/setups/trex09/benchmark.yaml b/scripts/automation/regression/setups/trex09/benchmark.yaml index 8522f1bf..1f8fe47a 100644 --- a/scripts/automation/regression/setups/trex09/benchmark.yaml +++ b/scripts/automation/regression/setups/trex09/benchmark.yaml @@ -7,45 +7,45 @@ test_jumbo: multiplier : 110 cores : 1 - bw_per_core : 767198 + bw_per_core : 767.198 test_routing_imix: multiplier : 64 cores : 2 - bw_per_core : 35889 + bw_per_core : 35.889 test_routing_imix_64: multiplier : 5000 cores : 2 - bw_per_core : 10672 + bw_per_core : 10.672 test_static_routing_imix_asymmetric: multiplier : 32 cores : 1 - bw_per_core : 52738 + bw_per_core : 52.738 test_ipv6_simple: multiplier : 64 cores : 4 - bw_per_core : 22808 + bw_per_core : 22.808 test_rx_check_http: multiplier : 90000 cores : 2 rx_sample_rate : 32 - bw_per_core : 46075 + bw_per_core : 46.075 test_rx_check_sfr: multiplier : 50 cores : 3 rx_sample_rate : 32 - bw_per_core : 20469 + bw_per_core : 20.469 diff --git a/scripts/automation/regression/setups/trex12/benchmark.yaml b/scripts/automation/regression/setups/trex12/benchmark.yaml index 084b57de..0ebc2bcb 100644 --- a/scripts/automation/regression/setups/trex12/benchmark.yaml +++ b/scripts/automation/regression/setups/trex12/benchmark.yaml @@ -7,53 +7,53 @@ test_jumbo: multiplier : 14 cores : 1 - bw_per_core : 689664 + bw_per_core : 689.664 test_routing_imix: multiplier : 8 cores : 1 - bw_per_core : 45422 + bw_per_core : 45.422 test_routing_imix_64: multiplier : 2200 cores : 1 - bw_per_core : 11655 + bw_per_core : 11.655 test_static_routing_imix_asymmetric: multiplier : 4 cores : 1 - bw_per_core : 45294 + bw_per_core : 45.294 test_ipv6_simple: multiplier : 8 cores : 1 - bw_per_core : 29332 + bw_per_core : 29.332 test_rx_check_http: &rx_http multiplier : 11000 cores : 1 rx_sample_rate : 16 - bw_per_core : 47813 + bw_per_core : 47.813 test_rx_check_http_ipv6: << : *rx_http - bw_per_core : 55607 + bw_per_core : 55.607 test_rx_check_sfr: &rx_sfr multiplier : 8 cores : 1 rx_sample_rate : 16 - bw_per_core : 24203 + bw_per_core : 24.203 test_rx_check_sfr_ipv6: << : *rx_sfr - bw_per_core : 28867 + bw_per_core : 28.867 ### stateless ### diff --git a/scripts/automation/regression/setups/trex14/benchmark.yaml b/scripts/automation/regression/setups/trex14/benchmark.yaml index a63abc61..afa27a82 100644 --- a/scripts/automation/regression/setups/trex14/benchmark.yaml +++ b/scripts/automation/regression/setups/trex14/benchmark.yaml @@ -24,26 +24,26 @@ nat_dict: &nat_dict test_jumbo: multiplier : 17 cores : 1 - bw_per_core : 543232 + bw_per_core : 543.232 test_routing_imix: multiplier : 10 cores : 1 - bw_per_core : 34128 + bw_per_core : 34.128 test_routing_imix_64: multiplier : 430 cores : 1 - bw_per_core : 5893 + bw_per_core : 5.893 test_static_routing_imix: &test_static_routing_imix stat_route_dict : *stat_route_dict multiplier : 8 cores : 1 - bw_per_core : 34339 + bw_per_core : 34.339 test_static_routing_imix_asymmetric: *test_static_routing_imix @@ -51,7 +51,7 @@ test_static_routing_imix_asymmetric: *test_static_routing_imix test_ipv6_simple: multiplier : 9 cores : 2 - bw_per_core : 19064 + bw_per_core : 19.064 test_nat_simple_mode1: &test_nat_simple @@ -61,7 +61,7 @@ test_nat_simple_mode1: &test_nat_simple cores : 1 nat_opened : 40000 allow_timeout_dev : True - bw_per_core : 44445 + bw_per_core : 44.445 test_nat_simple_mode2: *test_nat_simple @@ -73,7 +73,7 @@ test_nat_learning: test_nbar_simple: multiplier : 7.5 cores : 2 - bw_per_core : 17174 + bw_per_core : 17.174 nbar_classification: http : 32.58 rtp-audio : 21.21 @@ -95,11 +95,11 @@ test_rx_check_http: &rx_http multiplier : 15000 cores : 1 rx_sample_rate : 16 - bw_per_core : 39560 + bw_per_core : 39.560 test_rx_check_http_ipv6: << : *rx_http - bw_per_core : 49237 + bw_per_core : 49.237 test_rx_check_http_negative: << : *rx_http @@ -111,11 +111,11 @@ test_rx_check_sfr: &rx_sfr multiplier : 10 cores : 3 rx_sample_rate : 16 - bw_per_core : 16082 + bw_per_core : 16.082 test_rx_check_sfr_ipv6: << : *rx_sfr - bw_per_core : 19198 + bw_per_core : 19.198 diff --git a/scripts/automation/regression/setups/trex17/benchmark.yaml b/scripts/automation/regression/setups/trex17/benchmark.yaml index 219a01ed..d9191a42 100644 --- a/scripts/automation/regression/setups/trex17/benchmark.yaml +++ b/scripts/automation/regression/setups/trex17/benchmark.yaml @@ -7,25 +7,25 @@ test_jumbo: multiplier : 2.8 cores : 1 - bw_per_core : 66489 + bw_per_core : 66.489 test_routing_imix: multiplier : 0.5 cores : 1 - bw_per_core : 5530 + bw_per_core : 5.530 test_routing_imix_64: multiplier : 28 cores : 1 - bw_per_core : 859 + bw_per_core : 0.859 test_static_routing_imix_asymmetric: multiplier : 0.8 cores : 1 - bw_per_core : 9635 + bw_per_core : 9.635 diff --git a/scripts/automation/regression/setups/trex25/benchmark.yaml b/scripts/automation/regression/setups/trex25/benchmark.yaml index 8ef7e0c7..f87759f9 100644 --- a/scripts/automation/regression/setups/trex25/benchmark.yaml +++ b/scripts/automation/regression/setups/trex25/benchmark.yaml @@ -24,26 +24,26 @@ nat_dict: &nat_dict test_jumbo: multiplier : 6 cores : 1 - bw_per_core : 443970 + bw_per_core : 443.970 test_routing_imix: multiplier : 4 cores : 1 - bw_per_core : 26509 + bw_per_core : 26.509 test_routing_imix_64: multiplier : 600 cores : 1 - bw_per_core : 6391 + bw_per_core : 6.391 test_static_routing_imix: stat_route_dict : *stat_route_dict multiplier : 2.8 cores : 1 - bw_per_core : 24510 + bw_per_core : 24.510 @@ -51,13 +51,13 @@ test_static_routing_imix_asymmetric: stat_route_dict : *stat_route_dict multiplier : 3.2 cores : 1 - bw_per_core : 28229 + bw_per_core : 28.229 test_ipv6_simple: multiplier : 6 cores : 1 - bw_per_core : 19185 + bw_per_core : 19.185 test_nat_simple_mode1: &test_nat_simple @@ -66,7 +66,7 @@ test_nat_simple_mode1: &test_nat_simple multiplier : 2200 cores : 1 allow_timeout_dev : True - bw_per_core : 32171 + bw_per_core : 32.171 test_nat_simple_mode2: *test_nat_simple @@ -78,7 +78,7 @@ test_nat_learning: test_nbar_simple: multiplier : 6 cores : 1 - bw_per_core : 16645 + bw_per_core : 16.645 nbar_classification: http : 24.55 rtp : 19.15 @@ -101,11 +101,11 @@ test_rx_check_http: &rx_http multiplier : 8800 cores : 1 rx_sample_rate : 16 - bw_per_core : 31389 + bw_per_core : 31.389 test_rx_check_http_ipv6: << : *rx_http - bw_per_core : 37114 + bw_per_core : 37.114 test_rx_check_http_negative: << : *rx_http @@ -117,11 +117,11 @@ test_rx_check_sfr: &rx_sfr multiplier : 6.8 cores : 1 rx_sample_rate : 16 - bw_per_core : 16063 + bw_per_core : 16.063 test_rx_check_sfr_ipv6: << : *rx_sfr - bw_per_core : 19663 + bw_per_core : 19.663 ### stateless ### diff --git a/scripts/automation/regression/stateful_tests/trex_general_test.py b/scripts/automation/regression/stateful_tests/trex_general_test.py index d7d83096..42720f70 100755 --- a/scripts/automation/regression/stateful_tests/trex_general_test.py +++ b/scripts/automation/regression/stateful_tests/trex_general_test.py @@ -150,13 +150,9 @@ class CTRexGeneral_Test(unittest.TestCase): if cpu_util < minimal_cpu: self.fail("CPU is too low (%s%%), can't verify performance in such low CPU%%." % cpu_util ) - cores = self.get_benchmark_param('cores') - ports_count = trex_res.get_ports_count() - trex_tx_bps = sum(trex_res.get_value_list("trex-global.data.m_tx_bps")[-4:-1]) / 3.0 - # x2 because each thread uses 2 ports and another x2 because each core can use 2 threads - test_norm_cpu = 2 * 2 * (100.0 / cpu_util) * trex_tx_bps / (ports_count * cores * 1e6) + test_norm_cpu = sum(trex_res.get_value_list("trex-global.data.m_bw_per_core")[-4:-1]) / 3.0 - print("TRex CPU utilization: %g%%, norm_cpu is : %g Mb/core" % (round(cpu_util, 2), round(test_norm_cpu))) + print("TRex CPU utilization: %g%%, norm_cpu is : %g Gb/core" % (round(cpu_util, 2), round(test_norm_cpu))) expected_norm_cpu = self.get_benchmark_param('bw_per_core') if not expected_norm_cpu: @@ -164,13 +160,14 @@ class CTRexGeneral_Test(unittest.TestCase): calc_error_precent = abs(100.0 * test_norm_cpu / expected_norm_cpu - 100) print('Err percent: %s' % calc_error_precent) - if calc_error_precent > err: + if calc_error_precent > err and cpu_util > 10: self.fail('Excepted bw_per_core ratio: %s, got: %g' % (expected_norm_cpu, round(test_norm_cpu))) # report benchmarks if self.GAManager: - self.GAManager.gaAddAction(Event = 'stateful_test', action = self.get_name(), label = 'bw_per_core', value = int(test_norm_cpu)) - self.GAManager.gaAddAction(Event = 'stateful_test', action = self.get_name(), label = 'bw_per_core_exp', value = int(expected_norm_cpu)) + setup_test = '%s.%s' % (CTRexScenario.setup_name, self.get_name()) + self.GAManager.gaAddAction(Event = 'stateful_test', action = setup_test, label = 'bw_per_core', value = int(test_norm_cpu)) + self.GAManager.gaAddAction(Event = 'stateful_test', action = setup_test, label = 'bw_per_core_exp', value = int(expected_norm_cpu)) self.GAManager.emptyAndReportQ() def check_results_gt (self, res, name, val): diff --git a/scripts/automation/regression/stateless_tests/stl_benchmark_test.py b/scripts/automation/regression/stateless_tests/stl_benchmark_test.py index 51c77b57..ef4c435f 100755 --- a/scripts/automation/regression/stateless_tests/stl_benchmark_test.py +++ b/scripts/automation/regression/stateless_tests/stl_benchmark_test.py @@ -11,12 +11,11 @@ class STLBenchmark_Test(CStlGeneral_Test): def test_CPU_benchmark(self): timeout = 60 # max time to wait for stabilization stabilize = 5 # ensure stabilization over this period - cores = self.configuration.trex['trex_cores'] - ports = self.stl_trex.get_port_count() print('') for profile_bench in self.get_benchmark_param('profiles'): - cpu_utils = deque([0] * stabilize, maxlen = stabilize) + cpu_utils = deque([0] * stabilize, maxlen = stabilize) + bws_per_core = deque([0] * stabilize, maxlen = stabilize) kwargs = profile_bench.get('kwargs', {}) print('Testing profile %s, kwargs: %s' % (profile_bench['name'], kwargs)) profile = STLProfile.load(os.path.join(CTRexScenario.scripts_path, profile_bench['name']), **kwargs) @@ -24,18 +23,22 @@ class STLBenchmark_Test(CStlGeneral_Test): self.stl_trex.reset() self.stl_trex.clear_stats() sleep(1) - self.stl_trex.add_streams(profile, ports = [0, 1]) - self.stl_trex.start(ports = [0, 1], mult = '10%') + self.stl_trex.add_streams(profile) + self.stl_trex.start(mult = '10%') start_time = time() for i in range(timeout + 1): stats = self.stl_trex.get_stats() cpu_utils.append(stats['global']['cpu_util']) + bws_per_core.append(stats['global']['bw_per_core']) if i > stabilize and min(cpu_utils) > max(cpu_utils) * 0.95: break sleep(0.5) - if i == timeout: + agv_cpu_util = sum(cpu_utils) / stabilize + agv_bw_per_core = sum(bws_per_core) / stabilize + + if i == timeout and agv_cpu_util > 10: raise Exception('Timeout on waiting for stabilization, last CPU util values: %s' % list(cpu_utils)) if stats[0]['opackets'] < 1000 or stats[1]['opackets'] < 1000: raise Exception('Too few opackets, port0: %s, port1: %s' % (stats[0]['opackets'], stats[1]['opackets'])) @@ -43,17 +46,19 @@ class STLBenchmark_Test(CStlGeneral_Test): raise Exception('Too much queue_full: %s' % stats['global']['queue_full']) if not cpu_utils[-1]: raise Exception('CPU util is zero, last values: %s' % list(cpu_utils)) - agv_cpu_util = sum(cpu_utils) / stabilize - bw_per_core = 2 * 2 * (100 / agv_cpu_util) * stats['global']['tx_bps'] / (ports * cores * 1e9) - print('Done (%ss), CPU util: %4g, bw_per_core: %6sGb/core' % (int(time() - start_time), agv_cpu_util, round(bw_per_core, 2))) + print('Done (%ss), CPU util: %4g, bw_per_core: %6sGb/core' % (int(time() - start_time), agv_cpu_util, round(agv_bw_per_core, 2))) # TODO: add check of benchmark based on results from regression # report benchmarks if self.GAManager: - profile_repr = '%s %s' % (os.path.basename(profile_bench['name']), repr(kwargs).replace("'", '')) - self.GAManager.gaAddAction(Event = 'stateless_test', action = profile_repr, label = 'bw_per_core', value = int(bw_per_core)) + profile_repr = '%s.%s %s' % (CTRexScenario.setup_name, + os.path.basename(profile_bench['name']), + repr(kwargs).replace("'", '')) + self.GAManager.gaAddAction(Event = 'stateless_test', action = profile_repr, + label = 'bw_per_core', value = int(agv_bw_per_core)) # TODO: report expected once acquired - #self.GAManager.gaAddAction(Event = 'stateless_test', action = profile_repr, label = 'bw_per_core_exp', value = int(expected_norm_cpu)) + #self.GAManager.gaAddAction(Event = 'stateless_test', action = profile_repr, + # label = 'bw_per_core_exp', value = int(expected_norm_cpu)) self.GAManager.emptyAndReportQ() def tearDown(self): diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_stats.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_stats.py index 12c2c578..c7513144 100644 --- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_stats.py +++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_stats.py @@ -212,7 +212,7 @@ class CTRexInfoGenerator(object): if ratio <= 0.1875: return u'\u2581' # 1/8 if ratio <= 0.3125: - return u'\u2582' # 2/4 + return u'\u2582' # 2/8 if ratio <= 0.4375: return u'\u2583' # 3/8 if ratio <= 0.5625: @@ -594,6 +594,7 @@ class CGlobalStats(CTRexStats): # absolute stats['cpu_util'] = self.get("m_cpu_util") stats['rx_cpu_util'] = self.get("m_rx_cpu_util") + stats['bw_per_core'] = self.get("m_bw_per_core") stats['tx_bps'] = self.get("m_tx_bps") stats['tx_pps'] = self.get("m_tx_pps") diff --git a/scripts/external_libs/jsonrpclib-pelix-0.2.5/jsonrpclib/SimpleJSONRPCServer.py b/scripts/external_libs/jsonrpclib-pelix-0.2.5/jsonrpclib/SimpleJSONRPCServer.py index e9fe4e68..d55ce0fb 100644 --- a/scripts/external_libs/jsonrpclib-pelix-0.2.5/jsonrpclib/SimpleJSONRPCServer.py +++ b/scripts/external_libs/jsonrpclib-pelix-0.2.5/jsonrpclib/SimpleJSONRPCServer.py @@ -397,6 +397,11 @@ class SimpleJSONRPCRequestHandler(xmlrpcserver.SimpleXMLRPCRequestHandler): The server that receives the requests must have a json_config member, containing a JSONRPClib Config instance """ + + # disable logging + def log_message(*args, **kwargs): + pass + def do_POST(self): """ Handles POST requests diff --git a/src/bp_sim.cpp b/src/bp_sim.cpp index 2c122e72..94f8a2ba 100755 --- a/src/bp_sim.cpp +++ b/src/bp_sim.cpp @@ -2258,11 +2258,11 @@ enum CCapFileFlowInfo::load_cap_file_err CCapFileFlowInfo::load_cap_file(std::st } }else{ - fprintf(stderr, "ERROR packet %d is not supported, should be IP(0x0800)/TCP/UDP format try to convert it using Wireshark !\n",cnt); + fprintf(stderr, "ERROR packet %d is not supported, should be Ethernet/IP(0x0800)/(TCP|UDP) format try to convert it using Wireshark !\n",cnt); return kPktNotSupp; } }else{ - fprintf(stderr, "ERROR packet %d is not supported, should be IP(0x0800)/TCP/UDP format try to convert it using Wireshark !\n",cnt); + fprintf(stderr, "ERROR packet %d is not supported, should be Ethernet/IP(0x0800)/(TCP|UDP) format try to convert it using Wireshark !\n",cnt); return kPktProcessFail; } } diff --git a/src/main_dpdk.cpp b/src/main_dpdk.cpp index 1496513d..edc3cb67 100644 --- a/src/main_dpdk.cpp +++ b/src/main_dpdk.cpp @@ -2317,6 +2317,7 @@ public: float m_open_flows; float m_cpu_util; float m_rx_cpu_util; + float m_bw_per_core; uint8_t m_threads; uint32_t m_num_of_ports; @@ -2335,7 +2336,10 @@ private: std::string CGlobalStats::get_field(std::string name,float &f){ char buff[200]; - snprintf(buff, sizeof(buff), "\"%s\":%.1f,",name.c_str(),f); + if(f >= -10.0 or f <= 10.0) + snprintf(buff, sizeof(buff), "\"%s\":%.1f,",name.c_str(),f); + else + snprintf(buff, sizeof(buff), "\"%s\":%.3e,",name.c_str(),f); return (std::string(buff)); } @@ -2347,7 +2351,10 @@ std::string CGlobalStats::get_field(std::string name,uint64_t &f){ std::string CGlobalStats::get_field_port(int port,std::string name,float &f){ char buff[200]; - snprintf(buff, sizeof(buff), "\"%s-%d\":%.1f,",name.c_str(),port,f); + if(f >= -10.0 or f <= 10.0) + snprintf(buff, sizeof(buff), "\"%s-%d\":%.1f,",name.c_str(),port,f); + else + snprintf(buff, sizeof(buff), "\"%s-%d\":%.3e,",name.c_str(),port,f); return (std::string(buff)); } @@ -2376,6 +2383,7 @@ void CGlobalStats::dump_json(std::string & json, bool baseline,uint32_t stats_ti #define GET_FIELD_PORT(p,f) get_field_port(p,std::string(#f),lp->f) json+=GET_FIELD(m_cpu_util); + json+=GET_FIELD(m_bw_per_core); json+=GET_FIELD(m_rx_cpu_util); json+=GET_FIELD(m_platform_factor); json+=GET_FIELD(m_tx_bps); @@ -2441,7 +2449,7 @@ void CGlobalStats::DumpAllPorts(FILE *fd){ - fprintf (fd," Cpu Utilization : %2.1f %% %2.1f Gb/core \n",m_cpu_util,(2*(m_tx_bps/1e9)*100.0/(m_cpu_util*m_threads))); + fprintf (fd," Cpu Utilization : %2.1f %% %2.1f Gb/core \n",m_cpu_util,m_bw_per_core); fprintf (fd," Platform_factor : %2.1f \n",m_platform_factor); fprintf (fd," Total-Tx : %s ",double_to_human_str(m_tx_bps,"bps",KBYE_1000).c_str()); if ( CGlobalInfo::is_learn_mode() ) { @@ -3554,6 +3562,10 @@ void CGlobalTRex::get_stats(CGlobalStats & stats){ stats.m_tx_pps = total_tx_pps*pf; stats.m_rx_pps = total_rx_pps*pf; stats.m_tx_cps = m_last_total_cps*pf; + if(stats.m_cpu_util < 0.0001) + stats.m_bw_per_core = 0; + else + stats.m_bw_per_core = 2*(stats.m_tx_bps/1e9)*100.0/(stats.m_cpu_util*stats.m_threads); stats.m_tx_expected_cps = m_expected_cps*pf; stats.m_tx_expected_pps = m_expected_pps*pf; |