* [dts] [PATCH] performance case: optimize command for testpmd and comment some cases no need to run
@ 2016-04-19 8:17 Ding Heng
2016-04-19 8:33 ` Xu, Qian Q
0 siblings, 1 reply; 2+ messages in thread
From: Ding Heng @ 2016-04-19 8:17 UTC (permalink / raw)
To: dts; +Cc: Ding Heng
l3fwd: comment 2 cases no need to run in nightly performance test. Fix issues
for run rfc2544 case with different nic.
testpmd: change report format for generate nightly performance test. Use core
mask instead of all cores for performance test.
framework/pmd_output: optimize command for performance, run testpmd in vector
mode instead of Xmit mode. Optimize core configuration for testpmd because run
testpmd with all cores will get a bad performance result.
Signed-off-by: Ding Heng <hengx.ding@intel.com>
diff --git a/framework/pmd_output.py b/framework/pmd_output.py
index df8db12..05e4e04 100644
--- a/framework/pmd_output.py
+++ b/framework/pmd_output.py
@@ -101,14 +101,18 @@ class PmdOutput():
def start_testpmd(self, cores, param='', eal_param='', socket=0):
# in dpdk2.0 need used --txqflags param to open hardware features
+ # use 0xf01 to enable vector mode and get better performance.
if "--txqflags" not in param:
- param += " --txqflags=0"
+ param += " --txqflags=0xf01"
if type(cores) == list:
core_list = cores
elif cores == "Default":
core_list = self.dut.get_core_list(self.default_cores)
else:
+ # testpmd could not run with single core, at least 2 cores are needed.
+ if cores == "1S/1C/1T":
+ cores = "1S/2C/1T"
core_list = self.dut.get_core_list(cores, socket=socket)
self.coremask = dts.create_mask(core_list)
command = "./%s/app/testpmd -c %s -n %d %s -- -i %s" \
diff --git a/tests/TestSuite_l3fwd.py b/tests/TestSuite_l3fwd.py
index 0376a76..2aebee8 100644
--- a/tests/TestSuite_l3fwd.py
+++ b/tests/TestSuite_l3fwd.py
@@ -50,7 +50,7 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
test_cases_2_ports = [(1,"1S/1C/1T","%s -c %s -n %d -- -P -p %s --config '(P0,0,C{1.1.0}), (P1,0,C{1.1.0})'"),
#"1S/1C/2T": "%s -c %s -n %d -- -p %s --config '(P0,0,C{1.1.0}), (P1,0,C{1.1.1})'",
(1,"1S/2C/1T","%s -c %s -n %d -- -P -p %s --config '(P0,0,C{1.1.0}), (P1,0,C{1.2.0})'"),
- #"1S/4C/1T": "%s -c %s -n %d -- -p %s --config '(P0,0,C{1.1.0}), (P1,0,C{1.2.0}),(P0,1,C{1.3.0}), (P1,1,C{1.4.0})'",
+ (1,"1S/4C/1T", "%s -c %s -n %d -- -p %s --config '(P0,0,C{1.1.0}), (P1,0,C{1.2.0}),(P0,1,C{1.3.0}), (P1,1,C{1.4.0})'"),
#"2S/2C/1T": "%s -c %s -n %d -- -p %s --config '(P0,0,C{0.1.0}), (P1,0,C{0.2.0}),(P0,1,C{1.3.0}), (P1,1,C{1.4.0})'",
]
@@ -309,7 +309,7 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
"""
pass
- def test_perf_l3fwd_4ports(self):
+ def no_test_perf_l3fwd_4ports(self):
"""
L3fwd main 4 ports.
"""
@@ -360,7 +360,7 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
dts.results_table_print()
- def test_perf_l3fwd_2ports(self):
+ def no_test_perf_l3fwd_2ports(self):
"""
L3fwd main 2 ports.
"""
@@ -395,6 +395,7 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
repl1 = "C{" + str(self.port_socket)
coreMask = {}
+ cmdlist = []
rtCmdLines = {}
cmdlist = TestL3fwd.test_cases_2_ports
for cmdline_pat in cmdlist:
@@ -469,14 +470,15 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
def test_perf_rfc2544(self):
+ nic = self.get_nic_name(self.dut.ports_info[0]['type'])
ports = self.dut.get_ports()
ports_num = len(ports)
- header_row = ["Frame", "mode", "S/C/T", "LR_tx_pkts(1min)", "LR_rx_pkts(1min)", "LR_loss_pkts(1min)", "% zero_loss_rate", "zero_loss_throughput(Mpps)"]
+ header_row = ["Frame_size(byte)", "mode", "S/C/T", "zero_loss_throughput(Mpps)", " % zero_loss_rate"]# "LR_tx_pkts(1min)", "LR_rx_pkts(1min)", "LR_loss_pkts(1min)", "% zero_loss_rate", "zero_loss_throughput(Mpps)"]
self.l3fwd_test_results['header'] = header_row
dts.results_table_add_header(header_row)
self.l3fwd_test_results['data'] = []
- for frame_size in [64, 128, 256, 512, 1024]:
+ for frame_size in [64, 128, 256, 512, 1024, 2048]:
# Prepare traffic flow
payload_size = frame_size - \
@@ -501,10 +503,17 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
coreMask = {}
rtCmdLines = {}
+ cmdlist = []
if ports_num == 4:
- cmdlist = TestL3fwd.test_cases_4_ports
+ for i in TestL3fwd.test_cases_4_ports:
+ cmdlist.append(i)
else:
- cmdlist = TestL3fwd.test_cases_2_ports
+ for i in TestL3fwd.test_cases_2_ports:
+ cmdlist.append(i)
+ if 'eagle' in nic:
+ del cmdlist[2]
+ else:
+ del cmdlist[1]
for cmdline_pat in cmdlist:
corelist = []
rtCmdLines[cmdline_pat[1]] = cmdline_pat[2]
@@ -561,14 +570,15 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
zero_loss_rate, tx_pkts, rx_pkts = self.tester.run_rfc2544(tgenInput, delay=60)
loss_pkts = tx_pkts - rx_pkts
self.dut.send_expect("^C", "#")
- linerate = self.wirespeed(self.nic, frame_size, 2)
+ linerate = self.wirespeed(self.nic, frame_size, ports_num)
zero_loss_throughput = (linerate * zero_loss_rate) / 100
tx_pkts = human_read_number(tx_pkts)
rx_pkts = human_read_number(rx_pkts)
loss_pkts = human_read_number(loss_pkts)
- data_row = [frame_size, mode, cores, tx_pkts, rx_pkts, loss_pkts, zero_loss_rate, zero_loss_throughput]
+ #data_row = [frame_size, mode, cores, tx_pkts, rx_pkts, loss_pkts, zero_loss_rate, zero_loss_throughput]
+ data_row = [frame_size, mode, cores, zero_loss_throughput, zero_loss_rate]
dts.results_table_add_row(data_row)
self.l3fwd_test_results['data'].append(data_row)
else:
diff --git a/tests/TestSuite_pmd.py b/tests/TestSuite_pmd.py
index aeab99a..6938a7d 100644
--- a/tests/TestSuite_pmd.py
+++ b/tests/TestSuite_pmd.py
@@ -58,14 +58,15 @@ class TestPmd(TestCase,IxiaPacketGenerator):
self.rxfreet_values = [0, 8, 16, 32, 64, 128]
self.test_cycles = [{'cores': '1S/1C/1T', 'Mpps': {}, 'pct': {}},
- {'cores': '1S/2C/1T', 'Mpps': {}, 'pct': {}},
- {'cores': '1S/2C/2T', 'Mpps': {}, 'pct': {}},
- {'cores': '1S/4C/1T', 'Mpps': {}, 'pct': {}},
- {'cores': '1S/8C/1T', 'Mpps': {}, 'pct': {}}
+ #{'cores': '1S/2C/1T', 'Mpps': {}, 'pct': {}},
+ #{'cores': '1S/2C/2T', 'Mpps': {}, 'pct': {}},
+ #{'cores': '1S/4C/1T', 'Mpps': {}, 'pct': {}},
+ #{'cores': '1S/8C/1T', 'Mpps': {}, 'pct': {}}
]
self.table_header = ['Frame Size']
for test_cycle in self.test_cycles:
+ self.table_header.append("app")
self.table_header.append("%s Mpps" % test_cycle['cores'])
self.table_header.append("% linerate")
@@ -126,7 +127,7 @@ class TestPmd(TestCase,IxiaPacketGenerator):
core_mask = dts.create_mask(core_list)
port_mask = dts.create_mask(self.dut.get_ports())
- self.pmdout.start_testpmd("all", "--coremask=%s --rxq=%d --txq=%d --portmask=%s --rss-ip" % (core_mask, queues, queues, port_mask))
+ self.pmdout.start_testpmd(core_config, " --rxq=%d --txq=%d --portmask=%s --rss-ip --txrst=32 --txfreet=32 --txd=128" % (queues, queues, port_mask), socket=self.ports_socket)
command_line = self.pmdout.get_pmd_cmd()
info = "Executing PMD (mac fwd) using %s\n" % test_cycle['cores']
@@ -171,6 +172,7 @@ class TestPmd(TestCase,IxiaPacketGenerator):
table_row = [frame_size]
for test_cycle in self.test_cycles:
+ table_row.append("testpmd")
table_row.append(test_cycle['Mpps'][frame_size])
table_row.append(test_cycle['pct'][frame_size])
@@ -209,7 +211,8 @@ class TestPmd(TestCase,IxiaPacketGenerator):
core_mask = dts.create_mask(core_list)
port_mask = dts.create_mask([self.dut_ports[0], self.dut_ports[1]])
- self.pmdout.start_testpmd("all", "--coremask=%s --rxq=%d --txq=%d --portmask=%s" % (core_mask, queues, queues, port_mask))
+ #self.pmdout.start_testpmd("all", "--coremask=%s --rxq=%d --txq=%d --portmask=%s" % (core_mask, queues, queues, port_mask))
+ self.pmdout.start_testpmd(core_config, " --rxq=%d --txq=%d --portmask=%s --rss-ip --txrst=32 --txfreet=32 --txd=128" % (queues, queues, port_mask), socket=self.ports_socket)
command_line = self.pmdout.get_pmd_cmd()
info = "Executing PMD using %s\n" % test_cycle['cores']
@@ -249,6 +252,7 @@ class TestPmd(TestCase,IxiaPacketGenerator):
for frame_size in self.frame_sizes:
table_row = [frame_size]
for test_cycle in self.test_cycles:
+ table_row.append("testpmd")
table_row.append(test_cycle['Mpps'][frame_size])
table_row.append(test_cycle['pct'][frame_size])
--
1.9.3
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [dts] [PATCH] performance case: optimize command for testpmd and comment some cases no need to run
2016-04-19 8:17 [dts] [PATCH] performance case: optimize command for testpmd and comment some cases no need to run Ding Heng
@ 2016-04-19 8:33 ` Xu, Qian Q
0 siblings, 0 replies; 2+ messages in thread
From: Xu, Qian Q @ 2016-04-19 8:33 UTC (permalink / raw)
To: Ding, HengX, dts; +Cc: Ding, HengX, Xu, Qian Q
Could you add packet size 72 in below, better to use a list to store these packet sizes, not write it in the function.
+ for frame_size in [64, 128, 256, 512, 1024, 2048]:
Thanks
Qian
-----Original Message-----
From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Ding Heng
Sent: Tuesday, April 19, 2016 4:17 PM
To: dts@dpdk.org
Cc: Ding, HengX
Subject: [dts] [PATCH] performance case: optimize command for testpmd and comment some cases no need to run
l3fwd: comment 2 cases no need to run in nightly performance test. Fix issues for run rfc2544 case with different nic.
testpmd: change report format for generate nightly performance test. Use core mask instead of all cores for performance test.
framework/pmd_output: optimize command for performance, run testpmd in vector mode instead of Xmit mode. Optimize core configuration for testpmd because run testpmd with all cores will get a bad performance result.
Signed-off-by: Ding Heng <hengx.ding@intel.com>
diff --git a/framework/pmd_output.py b/framework/pmd_output.py index df8db12..05e4e04 100644
--- a/framework/pmd_output.py
+++ b/framework/pmd_output.py
@@ -101,14 +101,18 @@ class PmdOutput():
def start_testpmd(self, cores, param='', eal_param='', socket=0):
# in dpdk2.0 need used --txqflags param to open hardware features
+ # use 0xf01 to enable vector mode and get better performance.
if "--txqflags" not in param:
- param += " --txqflags=0"
+ param += " --txqflags=0xf01"
if type(cores) == list:
core_list = cores
elif cores == "Default":
core_list = self.dut.get_core_list(self.default_cores)
else:
+ # testpmd could not run with single core, at least 2 cores are needed.
+ if cores == "1S/1C/1T":
+ cores = "1S/2C/1T"
core_list = self.dut.get_core_list(cores, socket=socket)
self.coremask = dts.create_mask(core_list)
command = "./%s/app/testpmd -c %s -n %d %s -- -i %s" \ diff --git a/tests/TestSuite_l3fwd.py b/tests/TestSuite_l3fwd.py index 0376a76..2aebee8 100644
--- a/tests/TestSuite_l3fwd.py
+++ b/tests/TestSuite_l3fwd.py
@@ -50,7 +50,7 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
test_cases_2_ports = [(1,"1S/1C/1T","%s -c %s -n %d -- -P -p %s --config '(P0,0,C{1.1.0}), (P1,0,C{1.1.0})'"),
#"1S/1C/2T": "%s -c %s -n %d -- -p %s --config '(P0,0,C{1.1.0}), (P1,0,C{1.1.1})'",
(1,"1S/2C/1T","%s -c %s -n %d -- -P -p %s --config '(P0,0,C{1.1.0}), (P1,0,C{1.2.0})'"),
- #"1S/4C/1T": "%s -c %s -n %d -- -p %s --config '(P0,0,C{1.1.0}), (P1,0,C{1.2.0}),(P0,1,C{1.3.0}), (P1,1,C{1.4.0})'",
+ (1,"1S/4C/1T", "%s -c %s -n %d -- -p %s
+ --config '(P0,0,C{1.1.0}), (P1,0,C{1.2.0}),(P0,1,C{1.3.0}),
+ (P1,1,C{1.4.0})'"),
#"2S/2C/1T": "%s -c %s -n %d -- -p %s --config '(P0,0,C{0.1.0}), (P1,0,C{0.2.0}),(P0,1,C{1.3.0}), (P1,1,C{1.4.0})'",
]
@@ -309,7 +309,7 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
"""
pass
- def test_perf_l3fwd_4ports(self):
+ def no_test_perf_l3fwd_4ports(self):
"""
L3fwd main 4 ports.
"""
@@ -360,7 +360,7 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
dts.results_table_print()
- def test_perf_l3fwd_2ports(self):
+ def no_test_perf_l3fwd_2ports(self):
"""
L3fwd main 2 ports.
"""
@@ -395,6 +395,7 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
repl1 = "C{" + str(self.port_socket)
coreMask = {}
+ cmdlist = []
rtCmdLines = {}
cmdlist = TestL3fwd.test_cases_2_ports
for cmdline_pat in cmdlist:
@@ -469,14 +470,15 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
def test_perf_rfc2544(self):
+ nic = self.get_nic_name(self.dut.ports_info[0]['type'])
ports = self.dut.get_ports()
ports_num = len(ports)
- header_row = ["Frame", "mode", "S/C/T", "LR_tx_pkts(1min)", "LR_rx_pkts(1min)", "LR_loss_pkts(1min)", "% zero_loss_rate", "zero_loss_throughput(Mpps)"]
+ header_row = ["Frame_size(byte)", "mode", "S/C/T",
+ "zero_loss_throughput(Mpps)", " % zero_loss_rate"]#
+ "LR_tx_pkts(1min)", "LR_rx_pkts(1min)", "LR_loss_pkts(1min)", "%
+ zero_loss_rate", "zero_loss_throughput(Mpps)"]
self.l3fwd_test_results['header'] = header_row
dts.results_table_add_header(header_row)
self.l3fwd_test_results['data'] = []
- for frame_size in [64, 128, 256, 512, 1024]:
+ for frame_size in [64, 128, 256, 512, 1024, 2048]:
# Prepare traffic flow
payload_size = frame_size - \ @@ -501,10 +503,17 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
coreMask = {}
rtCmdLines = {}
+ cmdlist = []
if ports_num == 4:
- cmdlist = TestL3fwd.test_cases_4_ports
+ for i in TestL3fwd.test_cases_4_ports:
+ cmdlist.append(i)
else:
- cmdlist = TestL3fwd.test_cases_2_ports
+ for i in TestL3fwd.test_cases_2_ports:
+ cmdlist.append(i)
+ if 'eagle' in nic:
+ del cmdlist[2]
+ else:
+ del cmdlist[1]
for cmdline_pat in cmdlist:
corelist = []
rtCmdLines[cmdline_pat[1]] = cmdline_pat[2] @@ -561,14 +570,15 @@ class TestL3fwd(TestCase,IxiaPacketGenerator):
zero_loss_rate, tx_pkts, rx_pkts = self.tester.run_rfc2544(tgenInput, delay=60)
loss_pkts = tx_pkts - rx_pkts
self.dut.send_expect("^C", "#")
- linerate = self.wirespeed(self.nic, frame_size, 2)
+ linerate = self.wirespeed(self.nic, frame_size,
+ ports_num)
zero_loss_throughput = (linerate * zero_loss_rate) / 100
tx_pkts = human_read_number(tx_pkts)
rx_pkts = human_read_number(rx_pkts)
loss_pkts = human_read_number(loss_pkts)
- data_row = [frame_size, mode, cores, tx_pkts, rx_pkts, loss_pkts, zero_loss_rate, zero_loss_throughput]
+ #data_row = [frame_size, mode, cores, tx_pkts, rx_pkts, loss_pkts, zero_loss_rate, zero_loss_throughput]
+ data_row = [frame_size, mode, cores,
+ zero_loss_throughput, zero_loss_rate]
dts.results_table_add_row(data_row)
self.l3fwd_test_results['data'].append(data_row)
else:
diff --git a/tests/TestSuite_pmd.py b/tests/TestSuite_pmd.py index aeab99a..6938a7d 100644
--- a/tests/TestSuite_pmd.py
+++ b/tests/TestSuite_pmd.py
@@ -58,14 +58,15 @@ class TestPmd(TestCase,IxiaPacketGenerator):
self.rxfreet_values = [0, 8, 16, 32, 64, 128]
self.test_cycles = [{'cores': '1S/1C/1T', 'Mpps': {}, 'pct': {}},
- {'cores': '1S/2C/1T', 'Mpps': {}, 'pct': {}},
- {'cores': '1S/2C/2T', 'Mpps': {}, 'pct': {}},
- {'cores': '1S/4C/1T', 'Mpps': {}, 'pct': {}},
- {'cores': '1S/8C/1T', 'Mpps': {}, 'pct': {}}
+ #{'cores': '1S/2C/1T', 'Mpps': {}, 'pct': {}},
+ #{'cores': '1S/2C/2T', 'Mpps': {}, 'pct': {}},
+ #{'cores': '1S/4C/1T', 'Mpps': {}, 'pct': {}},
+ #{'cores': '1S/8C/1T', 'Mpps': {}, 'pct':
+ {}}
]
self.table_header = ['Frame Size']
for test_cycle in self.test_cycles:
+ self.table_header.append("app")
self.table_header.append("%s Mpps" % test_cycle['cores'])
self.table_header.append("% linerate")
@@ -126,7 +127,7 @@ class TestPmd(TestCase,IxiaPacketGenerator):
core_mask = dts.create_mask(core_list)
port_mask = dts.create_mask(self.dut.get_ports())
- self.pmdout.start_testpmd("all", "--coremask=%s --rxq=%d --txq=%d --portmask=%s --rss-ip" % (core_mask, queues, queues, port_mask))
+ self.pmdout.start_testpmd(core_config, " --rxq=%d --txq=%d
+ --portmask=%s --rss-ip --txrst=32 --txfreet=32 --txd=128" % (queues,
+ queues, port_mask), socket=self.ports_socket)
command_line = self.pmdout.get_pmd_cmd()
info = "Executing PMD (mac fwd) using %s\n" % test_cycle['cores'] @@ -171,6 +172,7 @@ class TestPmd(TestCase,IxiaPacketGenerator):
table_row = [frame_size]
for test_cycle in self.test_cycles:
+ table_row.append("testpmd")
table_row.append(test_cycle['Mpps'][frame_size])
table_row.append(test_cycle['pct'][frame_size])
@@ -209,7 +211,8 @@ class TestPmd(TestCase,IxiaPacketGenerator):
core_mask = dts.create_mask(core_list)
port_mask = dts.create_mask([self.dut_ports[0], self.dut_ports[1]])
- self.pmdout.start_testpmd("all", "--coremask=%s --rxq=%d --txq=%d --portmask=%s" % (core_mask, queues, queues, port_mask))
+ #self.pmdout.start_testpmd("all", "--coremask=%s --rxq=%d --txq=%d --portmask=%s" % (core_mask, queues, queues, port_mask))
+ self.pmdout.start_testpmd(core_config, " --rxq=%d --txq=%d
+ --portmask=%s --rss-ip --txrst=32 --txfreet=32 --txd=128" % (queues,
+ queues, port_mask), socket=self.ports_socket)
command_line = self.pmdout.get_pmd_cmd()
info = "Executing PMD using %s\n" % test_cycle['cores'] @@ -249,6 +252,7 @@ class TestPmd(TestCase,IxiaPacketGenerator):
for frame_size in self.frame_sizes:
table_row = [frame_size]
for test_cycle in self.test_cycles:
+ table_row.append("testpmd")
table_row.append(test_cycle['Mpps'][frame_size])
table_row.append(test_cycle['pct'][frame_size])
--
1.9.3
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-04-19 8:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-19 8:17 [dts] [PATCH] performance case: optimize command for testpmd and comment some cases no need to run Ding Heng
2016-04-19 8:33 ` Xu, Qian Q
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).