diff options
author | Peter Mikus <peter.mikus@icloud.com> | 2025-01-27 11:35:08 +0100 |
---|---|---|
committer | Peter Mikus <peter.mikus@icloud.com> | 2025-01-28 09:00:07 +0100 |
commit | 5b398217260d48eb6535ccb767828ec7474b2117 (patch) | |
tree | 2a2b399da37338011d005fc6ab3a39f8ca13bf87 /resources | |
parent | f86fd9c72af1ae892b21d83b574795101d681978 (diff) |
fix(dpdk): EAL params
Signed-off-by: Peter Mikus <peter.mikus@icloud.com>
Change-Id: I47280deb55e200ac4bda9e74b158aa04369648b7
Diffstat (limited to 'resources')
-rw-r--r-- | resources/libraries/python/DPDK/L3fwdTest.py | 30 | ||||
-rw-r--r-- | resources/libraries/python/DPDK/TestpmdTest.py | 22 | ||||
-rw-r--r-- | resources/libraries/python/DpdkUtil.py | 80 | ||||
-rw-r--r-- | resources/libraries/python/QemuUtils.py | 10 |
4 files changed, 74 insertions, 68 deletions
diff --git a/resources/libraries/python/DPDK/L3fwdTest.py b/resources/libraries/python/DPDK/L3fwdTest.py index f7da7bdb3b..6ffae63bc0 100644 --- a/resources/libraries/python/DPDK/L3fwdTest.py +++ b/resources/libraries/python/DPDK/L3fwdTest.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Cisco and/or its affiliates. +# Copyright (c) 2025 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -62,14 +62,16 @@ class L3fwdTest: for node_name, node in nodes.items(): if node["type"] == NodeType.DUT: if dp_count_int > 1: - BuiltIn().set_tags('MTHREAD') + BuiltIn().set_tags("MTHREAD") else: - BuiltIn().set_tags('STHREAD') + BuiltIn().set_tags("STHREAD") BuiltIn().set_tags( f"{dp_count_int}T{cpu_count_int}C" ) cpu_dp = compute_resource_info[f"{node_name}_cpu_dp"] + cpu_dp = [f"{i+1}@{x}" for i,x in enumerate(cpu_dp.split(","))] + cpu_dp = ",".join(cpu_dp) rxq_count_int = compute_resource_info["rxq_count_int"] if1 = topology_info[f"{node_name}_pf1"][0] if2 = topology_info[f"{node_name}_pf2"][0] @@ -79,7 +81,7 @@ class L3fwdTest: jumbo=jumbo, tg_flip=tg_flip ) for node in nodes: - if u"DUT" in node: + if "DUT" in node: for i in range(3): try: L3fwdTest.check_l3fwd(nodes[node]) @@ -126,32 +128,32 @@ class L3fwdTest: :type jumbo: bool :type tg_flip: bool """ - if node[u"type"] == NodeType.DUT: + if node["type"] == NodeType.DUT: adj_mac0, adj_mac1, if_pci0, if_pci1 = L3fwdTest.get_adj_mac( nodes, node, if1, if2, tg_flip ) - lcores = [int(item) for item in lcores_list.split(u",")] + lcores = [int(item.split("@")[0]) for item in lcores_list.split(",")] # prepare the port config param nb_cores = int(nb_cores) index = 0 - port_config = '' + port_config = "" for port in range(0, NB_PORTS): for queue in range(0, int(queue_nums)): index = 0 if nb_cores == 1 else index port_config += \ - f"({port}, {queue}, {lcores[index % NB_PORTS]})," + f"({port}, {queue}, {lcores[index % queue_nums]})," index += 1 if jumbo: l3fwd_args = DpdkUtil.get_l3fwd_args( - eal_corelist=f"1,{lcores_list}", + eal_coremap=f"0@1,{lcores_list}", eal_driver=False, eal_pci_whitelist0=if_pci0, eal_pci_whitelist1=if_pci1, eal_in_memory=True, - pmd_config=f"\\\"{port_config.rstrip(u',')}\\\"", + pmd_config=f"\\\"{port_config.rstrip(',')}\\\"", pmd_eth_dest_0=f"\\\"0,{adj_mac0}\\\"", pmd_eth_dest_1=f"\\\"1,{adj_mac1}\\\"", pmd_parse_ptype=True, @@ -159,7 +161,7 @@ class L3fwdTest: ) else: l3fwd_args = DpdkUtil.get_l3fwd_args( - eal_corelist=f"1,{lcores_list}", + eal_coremap=f"0@1,{lcores_list}", eal_driver=False, eal_pci_whitelist0=if_pci0, eal_pci_whitelist1=if_pci1, @@ -229,9 +231,9 @@ class L3fwdTest: if dut_flip: if_key0, if_key1 = if_key1, if_key0 if tg_flip: - L3fwdTest.patch_l3fwd(node, u"patch_l3fwd_flip_routes") + L3fwdTest.patch_l3fwd(node, "patch_l3fwd_flip_routes") elif not tg_flip: - L3fwdTest.patch_l3fwd(node, u"patch_l3fwd_flip_routes") + L3fwdTest.patch_l3fwd(node, "patch_l3fwd_flip_routes") adj_node0, adj_if_key0 = Topology.get_adjacent_node_and_interface( nodes, node, if_key0 @@ -263,5 +265,5 @@ class L3fwdTest: f"/entry/{patch}" message = f"Failed to patch l3fwd at node {node['host']}" ret_code, stdout, _ = exec_cmd(node, command, timeout=1800) - if ret_code != 0 and u"Skipping patch." not in stdout: + if ret_code != 0 and "Skipping patch." not in stdout: raise RuntimeError(message) diff --git a/resources/libraries/python/DPDK/TestpmdTest.py b/resources/libraries/python/DPDK/TestpmdTest.py index c141851bdc..0548126bfc 100644 --- a/resources/libraries/python/DPDK/TestpmdTest.py +++ b/resources/libraries/python/DPDK/TestpmdTest.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Cisco and/or its affiliates. +# Copyright (c) 2025 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -66,14 +66,16 @@ class TestpmdTest: for node_name, node in nodes.items(): if node["type"] == NodeType.DUT: if dp_count_int > 1: - BuiltIn().set_tags('MTHREAD') + BuiltIn().set_tags("MTHREAD") else: - BuiltIn().set_tags('STHREAD') + BuiltIn().set_tags("STHREAD") BuiltIn().set_tags( f"{dp_count_int}T{cpu_count_int}C" ) cpu_dp = compute_resource_info[f"{node_name}_cpu_dp"] + cpu_dp = [f"{i+1}@{x}" for i,x in enumerate(cpu_dp.split(","))] + cpu_dp = ",".join(cpu_dp) rxq_count_int = compute_resource_info["rxq_count_int"] if1 = topology_info[f"{node_name}_pf1"][0] if2 = topology_info[f"{node_name}_pf2"][0] @@ -134,23 +136,23 @@ class TestpmdTest: :type txq_size: int :raises RuntimeError: If the script "run_testpmd.sh" fails. """ - if node[u"type"] == NodeType.DUT: + if node["type"] == NodeType.DUT: if_pci0 = Topology.get_interface_pci_addr(node, if1) if_pci1 = Topology.get_interface_pci_addr(node, if2) - pmd_max_pkt_len = u"9200" if jumbo else u"1518" + pmd_max_pkt_len = "9200" if jumbo else "1518" testpmd_args = DpdkUtil.get_testpmd_args( - eal_corelist=f"1,{lcores_list}", + eal_coremap=f"0@1,{lcores_list}", eal_driver=False, eal_pci_whitelist0=if_pci0, eal_pci_whitelist1=if_pci1, eal_in_memory=True, pmd_num_mbufs=32768, - pmd_fwd_mode=u"io", - pmd_nb_ports=u"2", - pmd_portmask=u"0x3", + pmd_fwd_mode="io", + pmd_nb_ports="2", + pmd_portmask="0x3", pmd_max_pkt_len=pmd_max_pkt_len, - pmd_mbuf_size=u"16384", + pmd_mbuf_size="16384", pmd_rxd=rxq_size, pmd_txd=txq_size, pmd_rxq=queue_nums, diff --git a/resources/libraries/python/DpdkUtil.py b/resources/libraries/python/DpdkUtil.py index 8ee0dde850..932f847c55 100644 --- a/resources/libraries/python/DpdkUtil.py +++ b/resources/libraries/python/DpdkUtil.py @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Cisco and/or its affiliates. +# Copyright (c) 2025 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -29,25 +29,25 @@ class DpdkUtil: :returns: EAL parameters. :rtype: OptionString """ - options = OptionString(prefix=u"-") - options.add(u"v") + options = OptionString(prefix="-") + options.add("v") # Set the hexadecimal bitmask of the cores to run on. options.add_with_value_from_dict( - u"l", u"eal_corelist", kwargs + "-lcores", "eal_coremap", kwargs ) # Add a PCI device in white list. options.add_with_value_from_dict( - u"a", u"eal_pci_whitelist0", kwargs + "a", "eal_pci_whitelist0", kwargs ) options.add_with_value_from_dict( - u"a", u"eal_pci_whitelist1", kwargs + "a", "eal_pci_whitelist1", kwargs ) # Load an external driver. Multiple -d options are allowed. options.add_with_value_if_from_dict( - u"d", u"/usr/lib/librte_pmd_virtio.so", u"eal_driver", kwargs, True + "d", "/usr/lib/librte_pmd_virtio.so", "eal_driver", kwargs, True ) options.add_if_from_dict( - u"-in-memory", u"eal_in_memory", kwargs, False + "-in-memory", "eal_in_memory", kwargs, False ) return options @@ -60,79 +60,79 @@ class DpdkUtil: :returns: PMD parameters. :rtype: OptionString """ - options = OptionString(prefix=u"--") + options = OptionString(prefix="--") # Set the forwarding mode: io, mac, mac_retry, mac_swap, flowgen, # rxonly, txonly, csum, icmpecho, ieee1588 options.add_equals_from_dict( - u"forward-mode", u"pmd_fwd_mode", kwargs, u"io" + "forward-mode", "pmd_fwd_mode", kwargs, "io" ) # Set the number of packets per burst to N. options.add_equals( - u"burst", 64 + "burst", 64 ) # Set the number of descriptors in the TX rings to N. options.add_equals_from_dict( - u"txd", u"pmd_txd", kwargs, 1024 + "txd", "pmd_txd", kwargs, 1024 ) # Set the number of descriptors in the RX rings to N. options.add_equals_from_dict( - u"rxd", u"pmd_rxd", kwargs, 1024 + "rxd", "pmd_rxd", kwargs, 1024 ) # Set the number of queues in the TX to N. options.add_equals_from_dict( - u"txq", u"pmd_txq", kwargs, 1 + "txq", "pmd_txq", kwargs, 1 ) # Set the number of queues in the RX to N. options.add_equals_from_dict( - u"rxq", u"pmd_rxq", kwargs, 1 + "rxq", "pmd_rxq", kwargs, 1 ) # Set the hexadecimal bitmask of offloads. options.add_equals_from_dict( - u"tx-offloads", u"pmd_tx_offloads", kwargs, u"0x0" + "tx-offloads", "pmd_tx_offloads", kwargs, "0x0" ) # Enables numa aware allocation of mbufs. options.add_if_from_dict( - u"numa", u"pmd_numa", kwargs, True + "numa", "pmd_numa", kwargs, True ) # Run by default. options.add_if_from_dict( - u"auto-start", u"pmd_auto_start", kwargs, True + "auto-start", "pmd_auto_start", kwargs, True ) # Set the number of mbufs to be allocated in the mbuf pools. options.add_equals_from_dict( - u"total-num-mbufs", u"pmd_num_mbufs", kwargs + "total-num-mbufs", "pmd_num_mbufs", kwargs ) # Set the number of forwarding ports. options.add_equals_from_dict( - u"nb-ports", u"pmd_nb_ports", kwargs + "nb-ports", "pmd_nb_ports", kwargs ) # Set the hexadecimal bitmask of the ports used by the packet # forwarding test. options.add_equals_from_dict( - u"portmask", u"pmd_portmask", kwargs + "portmask", "pmd_portmask", kwargs ) # Disable link status check. options.add_if_from_dict( - u"disable-link-check", u"pmd_disable_link_check", kwargs, True + "disable-link-check", "pmd_disable_link_check", kwargs, True ) # Set the MAC address XX:XX:XX:XX:XX:XX of the peer port N options.add_equals_from_dict( - u"eth-peer", u"pmd_eth_peer_0", kwargs + "eth-peer", "pmd_eth_peer_0", kwargs ) options.add_equals_from_dict( - u"eth-peer", u"pmd_eth_peer_1", kwargs + "eth-peer", "pmd_eth_peer_1", kwargs ) # Set the max packet length. options.add_equals_from_dict( - u"max-pkt-len", u"pmd_max_pkt_len", kwargs + "max-pkt-len", "pmd_max_pkt_len", kwargs ) # Set the mbuf size. options.add_equals_from_dict( - u"mbuf-size", u"pmd_mbuf_size", kwargs + "mbuf-size", "pmd_mbuf_size", kwargs ) # Set the number of forwarding cores based on coremask. options.add_equals_from_dict( - u"nb-cores", u"pmd_nb_cores", kwargs + "nb-cores", "pmd_nb_cores", kwargs ) return options @@ -147,7 +147,7 @@ class DpdkUtil: """ options = OptionString() options.extend(DpdkUtil.get_eal_options(**kwargs)) - options.add(u"--") + options.add("--") options.extend(DpdkUtil.get_testpmd_pmd_options(**kwargs)) return options @@ -161,9 +161,9 @@ class DpdkUtil: :rtype: OptionString """ options = OptionString() - options.add(u"dpdk-testpmd") + options.add("dpdk-testpmd") options.extend(DpdkUtil.get_eal_options(**kwargs)) - options.add(u"--") + options.add("--") options.extend(DpdkUtil.get_testpmd_pmd_options(**kwargs)) return options @@ -177,9 +177,9 @@ class DpdkUtil: :type kwargs: dict """ cmd_options = OptionString() - cmd_options.add(u"/start-testpmd.sh") + cmd_options.add("/start-testpmd.sh") cmd_options.extend(DpdkUtil.get_eal_options(**kwargs)) - cmd_options.add(u"--") + cmd_options.add("--") cmd_options.extend(DpdkUtil.get_testpmd_pmd_options(**kwargs)) exec_cmd_no_error(node, cmd_options, sudo=True, disconnect=True) @@ -191,7 +191,7 @@ class DpdkUtil: :type node: dict :returns: nothing """ - cmd = u"/stop-testpmd.sh" # Completed string, simple one. + cmd = "/stop-testpmd.sh" # Completed string, simple one. exec_cmd_no_error(node, cmd, sudo=True, disconnect=True) @staticmethod @@ -203,25 +203,25 @@ class DpdkUtil: :returns: PMD parameters. :rtype: OptionString """ - options = OptionString(prefix=u"--") + options = OptionString(prefix="--") # Set to use software to analyze packet type. options.add_if_from_dict( - u"parse-ptype", u"pmd_parse_ptype", kwargs, True + "parse-ptype", "pmd_parse_ptype", kwargs, True ) # Set the MAC address XX:XX:XX:XX:XX:XX of the peer port N. options.add_equals_from_dict( - u"eth-dest", u"pmd_eth_dest_0", kwargs + "eth-dest", "pmd_eth_dest_0", kwargs ) options.add_equals_from_dict( - u"eth-dest", u"pmd_eth_dest_1", kwargs + "eth-dest", "pmd_eth_dest_1", kwargs ) # Determines which queues from which ports are mapped to which cores. options.add_equals_from_dict( - u"config", u"pmd_config", kwargs + "config", "pmd_config", kwargs ) # Set the max packet length. options.add_with_value_if_from_dict( - u"max-pkt-len", u"9200", u"pmd_max_pkt_len", kwargs, False + "max-pkt-len", "9200", "pmd_max_pkt_len", kwargs, False ) return options @@ -236,6 +236,6 @@ class DpdkUtil: """ options = OptionString() options.extend(DpdkUtil.get_eal_options(**kwargs)) - options.add(u"--") + options.add("--") options.extend(DpdkUtil.get_l3fwd_pmd_options(**kwargs)) return options diff --git a/resources/libraries/python/QemuUtils.py b/resources/libraries/python/QemuUtils.py index 8dac06001c..d538e1fb0a 100644 --- a/resources/libraries/python/QemuUtils.py +++ b/resources/libraries/python/QemuUtils.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024-2024 Cisco and/or its affiliates. +# Copyright (c) 2025 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -371,9 +371,10 @@ class QemuUtils: :param kwargs: Key-value pairs to construct command line parameters. :type kwargs: dict """ - pmd_max_pkt_len = u"9200" if kwargs[u"jumbo"] else u"1518" + pmd_max_pkt_len = "9200" if kwargs["jumbo"] else "1518" + eal_coremap = ",".join([str(x) for x in range(self._opt.get("smp"))]) testpmd_cmd = DpdkUtil.get_testpmd_cmdline( - eal_corelist=f"0-{self._opt.get(u'smp') - 1}", + eal_coremap=eal_coremap, eal_driver=False, eal_pci_whitelist0=u"0000:00:06.0", eal_pci_whitelist1=u"0000:00:07.0", @@ -399,8 +400,9 @@ class QemuUtils: :type kwargs: dict """ pmd_max_pkt_len = u"9200" if kwargs[u"jumbo"] else u"1518" + eal_coremap = ",".join([str(x) for x in range(self._opt.get("smp"))]) testpmd_cmd = DpdkUtil.get_testpmd_cmdline( - eal_corelist=f"0-{self._opt.get(u'smp') - 1}", + eal_coremap=eal_coremap, eal_driver=False, eal_pci_whitelist0=u"0000:00:06.0", eal_pci_whitelist1=u"0000:00:07.0", |