Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/110135/?format=api
https://patches.dpdk.org/api/patches/110135/?format=api", "web_url": "https://patches.dpdk.org/project/dts/patch/20220422100212.1565366-1-weix.ling@intel.com/", "project": { "id": 3, "url": "https://patches.dpdk.org/api/projects/3/?format=api", "name": "DTS", "link_name": "dts", "list_id": "dts.dpdk.org", "list_email": "dts@dpdk.org", "web_url": "", "scm_url": "git://dpdk.org/tools/dts", "webscm_url": "http://git.dpdk.org/tools/dts/", "list_archive_url": "https://inbox.dpdk.org/dts", "list_archive_url_format": "https://inbox.dpdk.org/dts/{}", "commit_url_format": "" }, "msgid": "<20220422100212.1565366-1-weix.ling@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/20220422100212.1565366-1-weix.ling@intel.com", "date": "2022-04-22T10:02:12", "name": "[V1,2/3] tests/vhost_cbdma: modify testsuite by DPDK command change", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "1cbb5109f1f98a1c066fa4e3acb6a3072e46dc88", "submitter": { "id": 1828, "url": "https://patches.dpdk.org/api/people/1828/?format=api", "name": "Ling, WeiX", "email": "weix.ling@intel.com" }, "delegate": null, "mbox": "https://patches.dpdk.org/project/dts/patch/20220422100212.1565366-1-weix.ling@intel.com/mbox/", "series": [ { "id": 22629, "url": "https://patches.dpdk.org/api/series/22629/?format=api", "web_url": "https://patches.dpdk.org/project/dts/list/?series=22629", "date": "2022-04-22T10:01:47", "name": "Modify vhost_cbdma testplan testsuite and", "version": 1, "mbox": "https://patches.dpdk.org/series/22629/mbox/" } ], "comments": "https://patches.dpdk.org/api/patches/110135/comments/", "check": "pending", "checks": "https://patches.dpdk.org/api/patches/110135/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dts-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 7B158A0032;\n\tFri, 22 Apr 2022 12:02:23 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 730BE410E7;\n\tFri, 22 Apr 2022 12:02:23 +0200 (CEST)", "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n by mails.dpdk.org (Postfix) with ESMTP id 7909240042\n for <dts@dpdk.org>; Fri, 22 Apr 2022 12:02:20 +0200 (CEST)", "from fmsmga001.fm.intel.com ([10.253.24.23])\n by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 22 Apr 2022 03:02:19 -0700", "from unknown (HELO localhost.localdomain) ([10.239.251.222])\n by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 22 Apr 2022 03:02:16 -0700" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1650621740; x=1682157740;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=xjfaunSg+aVcm0RA0X3g7lQNEKTE9RRaKZjwgc7hHaY=;\n b=ax5CNg46KzQtBe2JV4t7aA9+bZyQ1ps5ZXNWHUpsxYnUfxtIrrTcFugM\n E+302ETc2ZazFmG1jrGC+cPnsR54CQ6KCkrA6Z9NHrmzT/56/37Fej33C\n oNwKwQv9spFhJvd9m+l3haEDjo8LhawFTG3ZAhQSXxRJAl6pxxQFG3ext\n 0eAct08cjuJ8cpLe8/NyVQw2hu1XB7qcjFsTB+l82vzVGaymR+5IP++TE\n 3UaZ/PBjUhF0lj2C4xzhEXuAx2fnjAQYqiYsaefw2kqq27+xZVjAdIryj\n UGqVEVlBqYSJBtUdNiMi5m7w0JyE30ket/epcnxF7hRphnWfyCwCfTWHS A==;", "X-IronPort-AV": [ "E=McAfee;i=\"6400,9594,10324\"; a=\"251964553\"", "E=Sophos;i=\"5.90,281,1643702400\"; d=\"scan'208\";a=\"251964553\"", "E=Sophos;i=\"5.90,281,1643702400\"; d=\"scan'208\";a=\"703492326\"" ], "From": "Wei Ling <weix.ling@intel.com>", "To": "dts@dpdk.org", "Cc": "Wei Ling <weix.ling@intel.com>", "Subject": "[dts][PATCH V1 2/3] tests/vhost_cbdma: modify testsuite by DPDK\n command change", "Date": "Fri, 22 Apr 2022 18:02:12 +0800", "Message-Id": "<20220422100212.1565366-1-weix.ling@intel.com>", "X-Mailer": "git-send-email 2.25.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "dts@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "test suite reviews and discussions <dts.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dts/>", "List-Post": "<mailto:dts@dpdk.org>", "List-Help": "<mailto:dts-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>", "Errors-To": "dts-bounces@dpdk.org" }, "content": "As commit 53d3f4778c(vhost: integrate dmadev in asynchronous data-path),\nmodify vhost_cbdma testsuite by DPDK22.03 Lib change.\n\nSigned-off-by: Wei Ling <weix.ling@intel.com>\n---\n tests/TestSuite_vhost_cbdma.py | 2567 +++++++++++++++++++++++---------\n 1 file changed, 1887 insertions(+), 680 deletions(-)", "diff": "diff --git a/tests/TestSuite_vhost_cbdma.py b/tests/TestSuite_vhost_cbdma.py\nindex f08d7cc3..fd546584 100644\n--- a/tests/TestSuite_vhost_cbdma.py\n+++ b/tests/TestSuite_vhost_cbdma.py\n@@ -1,6 +1,6 @@\n # BSD LICENSE\n #\n-# Copyright(c) <2019> Intel Corporation.\n+# Copyright(c) <2022> Intel Corporation.\n # All rights reserved.\n #\n # Redistribution and use in source and binary forms, with or without\n@@ -29,21 +29,10 @@\n # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n \n-\"\"\"\n-DPDK Test suite.\n-We introduce a new vdev parameter to enable DMA acceleration for Tx\n-operations of queues:\n- - dmas: This parameter is used to specify the assigned DMA device of\n- a queue.\n-\n-Here is an example:\n- $ ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c f -n 4 \\\n- --vdev 'net_vhost0,iface=/tmp/s0,queues=1,dmas=[txq0@80:04.0]'\n-\"\"\"\n+\n import json\n import os\n import re\n-import time\n from copy import deepcopy\n \n import framework.rst as rst\n@@ -53,23 +42,40 @@ from framework.pmd_output import PmdOutput\n from framework.settings import HEADER_SIZE, UPDATE_EXPECTED, load_global_setting\n from framework.test_case import TestCase\n \n+SPLIT_RING_PATH = {\n+ \"inorder_mergeable_path\": \"mrg_rxbuf=1,in_order=1\",\n+ \"mergeable_path\": \"mrg_rxbuf=1,in_order=0\",\n+ \"inorder_non_mergeable_path\": \"mrg_rxbuf=0,in_order=1\",\n+ \"non_mergeable_path\": \"mrg_rxbuf=0,in_order=0\",\n+ \"vectorized_path\": \"mrg_rxbuf=0,in_order=0,vectorized=1\",\n+}\n+\n+PACKED_RING_PATH = {\n+ \"inorder_mergeable_path\": \"mrg_rxbuf=1,in_order=1,packed_vq=1\",\n+ \"mergeable_path\": \"mrg_rxbuf=1,in_order=0,packed_vq=1\",\n+ \"inorder_non_mergeable_path\": \"mrg_rxbuf=0,in_order=1,packed_vq=1\",\n+ \"non_mergeable_path\": \"mrg_rxbuf=0,in_order=0,packed_vq=1\",\n+ \"vectorized_path\": \"mrg_rxbuf=0,in_order=0,vectorized=1,packed_vq=1\",\n+ \"vectorized_path_not_power_of_2\": \"mrg_rxbuf=0,in_order=0,vectorized=1,packed_vq=1\",\n+}\n+\n+\n+class TestVhostCbdma(TestCase):\n \n-class TestVirTioVhostCbdma(TestCase):\n def set_up_all(self):\n self.dut_ports = self.dut.get_ports()\n self.number_of_ports = 1\n self.vhost_user = self.dut.new_session(suite=\"vhost-user\")\n self.virtio_user = self.dut.new_session(suite=\"virtio-user\")\n- self.virtio_user1 = self.dut.new_session(suite=\"virtio-user1\")\n- self.pmdout_vhost_user = PmdOutput(self.dut, self.vhost_user)\n- self.pmdout_virtio_user = PmdOutput(self.dut, self.virtio_user)\n+ self.vhost_user_pmd = PmdOutput(self.dut, self.vhost_user)\n+ self.virtio_user_pmd = PmdOutput(self.dut, self.virtio_user)\n self.virtio_mac = \"00:01:02:03:04:05\"\n self.headers_size = HEADER_SIZE[\"eth\"] + HEADER_SIZE[\"ip\"]\n self.pci_info = self.dut.ports_info[0][\"pci\"]\n- self.socket = self.dut.get_numa_id(self.dut_ports[0])\n- self.cores = self.dut.get_core_list(\"all\", socket=self.socket)\n- self.cbdma_dev_infos = []\n self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])\n+ self.cores_list = self.dut.get_core_list(config=\"all\", socket=self.ports_socket)\n+ self.vhost_core_list = self.cores_list[0:9]\n+ self.virtio_core_list = self.cores_list[9:11]\n self.out_path = \"/tmp/%s\" % self.suite_name\n out = self.tester.send_expect(\"ls -d %s\" % self.out_path, \"# \")\n if \"No such file or directory\" in out:\n@@ -84,11 +90,7 @@ class TestVirTioVhostCbdma(TestCase):\n \"\"\"\n Run before each test case.\n \"\"\"\n- self.table_header = [\"Frame\"]\n- self.table_header.append(\"Mode/RXD-TXD\")\n- self.used_cbdma = []\n- self.table_header.append(\"Mpps\")\n- self.table_header.append(\"% linerate\")\n+ self.table_header = [\"Frame\", \"Mode/RXD-TXD\", \"Mpps\", \"% linerate\"]\n self.result_table_create(self.table_header)\n self.test_parameters = self.get_suite_cfg()[\"test_parameters\"]\n self.test_duration = self.get_suite_cfg()[\"test_duration\"]\n@@ -101,10 +103,13 @@ class TestVirTioVhostCbdma(TestCase):\n self.dut.send_expect(\"rm -rf /tmp/s0\", \"#\")\n self.mode_list = []\n \n- def get_cbdma_ports_info_and_bind_to_dpdk(self, cbdma_num):\n+ def get_cbdma_ports_info_and_bind_to_dpdk(self, cbdma_num, allow_diff_socket=False):\n \"\"\"\n- get all cbdma ports\n+ get and bind cbdma ports into DPDK driver\n \"\"\"\n+ self.all_cbdma_list = []\n+ self.cbdma_list = []\n+ self.cbdma_str = \"\"\n out = self.dut.send_expect(\n \"./usertools/dpdk-devbind.py --status-dev dma\", \"# \", 30\n )\n@@ -119,62 +124,91 @@ class TestVirTioVhostCbdma(TestCase):\n cur_socket = 1\n else:\n cur_socket = 0\n- if self.ports_socket == cur_socket:\n- self.cbdma_dev_infos.append(pci_info.group(1))\n+ if allow_diff_socket:\n+ self.all_cbdma_list.append(pci_info.group(1))\n+ else:\n+ if self.ports_socket == cur_socket:\n+ self.all_cbdma_list.append(pci_info.group(1))\n self.verify(\n- len(self.cbdma_dev_infos) >= cbdma_num,\n- \"There no enough cbdma device to run this suite\",\n+ len(self.all_cbdma_list) >= cbdma_num, \"There no enough cbdma device\"\n )\n- self.used_cbdma = self.cbdma_dev_infos[0:cbdma_num]\n- self.device_str = \" \".join(self.used_cbdma)\n+ self.cbdma_list = self.all_cbdma_list[0:cbdma_num]\n+ self.cbdma_str = \" \".join(self.cbdma_list)\n self.dut.send_expect(\n \"./usertools/dpdk-devbind.py --force --bind=%s %s\"\n- % (self.drivername, self.device_str),\n+ % (self.drivername, self.cbdma_str),\n \"# \",\n 60,\n )\n \n+ @staticmethod\n+ def generate_dmas_param(queues):\n+ das_list = []\n+ for i in range(queues):\n+ das_list.append(\"txq{}\".format(i))\n+ das_param = \"[{}]\".format(\";\".join(das_list))\n+ return das_param\n+\n+ @staticmethod\n+ def generate_lcore_dma_param(cbdma_list, core_list):\n+ group_num = int(len(cbdma_list) / len(core_list))\n+ lcore_dma_list = []\n+ if len(cbdma_list) == 1:\n+ for core in core_list:\n+ lcore_dma_list.append(\"lcore{}@{}\".format(core, cbdma_list[0]))\n+ elif len(core_list) == 1:\n+ for cbdma in cbdma_list:\n+ lcore_dma_list.append(\"lcore{}@{}\".format(core_list[0], cbdma))\n+ else:\n+ for cbdma in cbdma_list:\n+ core_list_index = int(cbdma_list.index(cbdma) / group_num)\n+ lcore_dma_list.append(\n+ \"lcore{}@{}\".format(core_list[core_list_index], cbdma)\n+ )\n+ lcore_dma_param = \"[{}]\".format(\",\".join(lcore_dma_list))\n+ return lcore_dma_param\n+\n def bind_cbdma_device_to_kernel(self):\n- if self.device_str is not None:\n- self.dut.send_expect(\"modprobe ioatdma\", \"# \")\n- self.dut.send_expect(\n- \"./usertools/dpdk-devbind.py -u %s\" % self.device_str, \"# \", 30\n- )\n- self.dut.send_expect(\n- \"./usertools/dpdk-devbind.py --force --bind=ioatdma %s\"\n- % self.device_str,\n- \"# \",\n- 60,\n- )\n+ self.dut.send_expect(\"modprobe ioatdma\", \"# \")\n+ self.dut.send_expect(\n+ \"./usertools/dpdk-devbind.py -u %s\" % self.cbdma_str, \"# \", 30\n+ )\n+ self.dut.send_expect(\n+ \"./usertools/dpdk-devbind.py --force --bind=ioatdma %s\" % self.cbdma_str,\n+ \"# \",\n+ 60,\n+ )\n+\n+ def get_vhost_port_num(self):\n+ out = self.vhost_user.send_expect(\"show port summary all\", \"testpmd> \", 60)\n+ port_num = re.search(\"Number of available ports:\\s*(\\d*)\", out)\n+ return int(port_num.group(1))\n \n- def check_packets_of_each_queue(self, queue_list):\n+ def check_each_queue_of_port_packets(self, queues=0):\n \"\"\"\n- check each queue has receive packets\n+ check each queue of each port has receive packets\n \"\"\"\n- out = self.vhost_user.send_expect(\"stop\", \"testpmd> \", 60)\n- for queue_index in queue_list:\n- queue = \"Queue= %d\" % queue_index\n- index = out.find(queue)\n- rx = re.search(\"RX-packets:\\s*(\\d*)\", out[index:])\n- tx = re.search(\"TX-packets:\\s*(\\d*)\", out[index:])\n- rx_packets = int(rx.group(1))\n- tx_packets = int(tx.group(1))\n- self.verify(\n- rx_packets > 0 and tx_packets > 0,\n- \"The queue %d rx-packets or tx-packets is 0 about \" % queue_index\n- + \"rx-packets:%d, tx-packets:%d\" % (rx_packets, tx_packets),\n- )\n- self.vhost_user.send_expect(\"clear port stats all\", \"testpmd> \", 30)\n- self.vhost_user.send_expect(\"start\", \"testpmd> \", 30)\n-\n- def check_port_stats_result(self, session):\n- out = session.send_expect(\"show port stats all\", \"testpmd> \", 30)\n- self.result_first = re.findall(r\"RX-packets: (\\w+)\", out)\n- self.result_secondary = re.findall(r\"TX-packets: (\\w+)\", out)\n- self.verify(\n- int(self.result_first[0]) > 1 and int(self.result_secondary[0]) > 1,\n- \"forward packets no correctly\",\n- )\n+ out = self.vhost_user_pmd.execute_cmd(\"stop\")\n+ port_num = self.get_vhost_port_num()\n+ for port in range(port_num):\n+ for queue in range(queues):\n+ if queues > 0:\n+ reg = \"Port= %d/Queue= %d\" % (port, queue)\n+ else:\n+ reg = \"Forward statistics for port {}\".format(port)\n+ index = out.find(reg)\n+ rx = re.search(\"RX-packets:\\s*(\\d*)\", out[index:])\n+ tx = re.search(\"TX-packets:\\s*(\\d*)\", out[index:])\n+ rx_packets = int(rx.group(1))\n+ tx_packets = int(tx.group(1))\n+ self.verify(\n+ rx_packets > 0 and tx_packets > 0,\n+ \"The port {}/queue {} rx-packets or tx-packets is 0 about \".format(\n+ port, queue\n+ )\n+ + \"rx-packets: {}, tx-packets: {}\".format(rx_packets, tx_packets),\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n \n @property\n def check_2M_env(self):\n@@ -183,650 +217,1900 @@ class TestVirTioVhostCbdma(TestCase):\n )\n return True if out == \"2048\" else False\n \n- def launch_testpmd_as_vhost_user(\n- self,\n- command,\n- cores=\"Default\",\n- dev=\"\",\n- ports=\"\",\n- iova_mode=\"pa\",\n- set_pmd_param=True,\n- ):\n- if iova_mode:\n- iova_parm = \"--iova=\" + iova_mode\n- else:\n- iova_parm = \"\"\n- self.pmdout_vhost_user.start_testpmd(\n- cores=cores,\n- param=command,\n- vdevs=[dev],\n- ports=ports,\n- prefix=\"vhost\",\n- eal_param=iova_parm,\n- )\n- if set_pmd_param:\n- self.vhost_user.send_expect(\"set fwd mac\", \"testpmd> \", 30)\n- self.vhost_user.send_expect(\"start\", \"testpmd> \", 30)\n-\n- def launch_testpmd_as_virtio_user(\n- self, command, cores=\"Default\", dev=\"\", set_pmd_param=True, eal_param=\"\"\n+ def start_vhost_testpmd(\n+ self, cores=\"Default\", param=\"\", eal_param=\"\", ports=\"\", iova_mode=\"va\"\n ):\n+ eal_param += \" --iova=\" + iova_mode\n+ self.vhost_user_pmd.start_testpmd(\n+ cores=cores, param=param, eal_param=eal_param, ports=ports, prefix=\"vhost\"\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"set fwd mac\")\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+\n+ def start_virtio_testpmd(self, cores=\"Default\", param=\"\", eal_param=\"\"):\n if self.check_2M_env:\n eal_param += \" --single-file-segments\"\n- self.pmdout_virtio_user.start_testpmd(\n- cores,\n- command,\n- vdevs=[dev],\n- no_pci=True,\n- prefix=\"virtio\",\n- eal_param=eal_param,\n- )\n- if set_pmd_param:\n- self.virtio_user.send_expect(\"set fwd mac\", \"testpmd> \", 30)\n- self.virtio_user.send_expect(\"start\", \"testpmd> \", 30)\n- self.virtio_user.send_expect(\"show port info all\", \"testpmd> \", 30)\n-\n- def diff_param_launch_send_and_verify(\n- self, mode, params, dev, cores, eal_param=\"\", is_quit=True, launch_virtio=True\n- ):\n- if launch_virtio:\n- self.launch_testpmd_as_virtio_user(\n- params, cores, dev=dev, eal_param=eal_param\n- )\n- self.send_and_verify(mode)\n- if is_quit:\n- self.virtio_user.send_expect(\"quit\", \"# \")\n- time.sleep(3)\n+ self.virtio_user_pmd.start_testpmd(\n+ cores=cores, param=param, eal_param=eal_param, no_pci=True, prefix=\"virtio\"\n+ )\n+ self.virtio_user_pmd.execute_cmd(\"set fwd mac\")\n+ self.virtio_user_pmd.execute_cmd(\"start\")\n+ self.virtio_user_pmd.execute_cmd(\"show port info all\")\n \n- def test_perf_pvp_spilt_ring_all_path_vhost_enqueue_operations_with_cbdma(self):\n+ def test_perf_pvp_split_all_path_vhost_txq_1_to_1_cbdma(self):\n \"\"\"\n- Test Case 1: PVP split ring all path vhost enqueue operations with cbdma\n+ Test Case 1: PVP split ring all path vhost enqueue operations with 1 to 1 mapping between vrings and CBDMA virtual channels\n \"\"\"\n- self.test_target = self.running_case\n- self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n- self.test_target\n- ]\n- txd_rxd = 1024\n- vhost_param = \" --nb-cores=%d --txd=%d --rxd=%d\"\n- nb_cores = 1\n- queues = 1\n- self.get_cbdma_ports_info_and_bind_to_dpdk(1)\n- vhost_vdevs = (\n- f\"'net_vhost0,iface=/tmp/s0,queues=%d,dmas=[txq0@{self.device_str}]'\"\n- )\n- virtio_path_dict = {\n- \"inorder_mergeable_path\": \"mrg_rxbuf=1,in_order=1\",\n- \"mergeable_path\": \"mrg_rxbuf=1,in_order=0\",\n- \"inorder_non_mergeable_path\": \"mrg_rxbuf=0,in_order=1\",\n- \"non_mergeable_path\": \"mrg_rxbuf=0,in_order=0\",\n- \"vector_rx_path\": \"mrg_rxbuf=0,in_order=0,vectorized=1\",\n- }\n+ cbdma_num = 1\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ dmas = self.generate_dmas_param(1)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:2]\n+ )\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=1,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n+ )\n+ vhost_param = (\n+ \"--nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ virtio_param = \"--nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024\"\n allow_pci = [self.dut.ports_info[0][\"pci\"]]\n- for index in range(1):\n- allow_pci.append(self.cbdma_dev_infos[index])\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd),\n- self.cores[0:2],\n- dev=vhost_vdevs % (nb_cores),\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n ports=allow_pci,\n iova_mode=\"va\",\n )\n- for key, path_mode in virtio_path_dict.items():\n- if key == \"non_mergeable_path\":\n- virtio_param = (\n- \" --enable-hw-vlan-strip --nb-cores=%d --txd=%d --rxd=%d\"\n- % (nb_cores, txd_rxd, txd_rxd)\n+ for key, path in SPLIT_RING_PATH.items():\n+ virtio_eal_param = (\n+ \"--vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=1'\".format(\n+ self.virtio_mac, path\n )\n+ )\n+ if key == \"non_mergeable_path\":\n+ new_virtio_param = \"--enable-hw-vlan-strip \" + virtio_param\n else:\n- virtio_param = \" --nb-cores=%d --txd=%d --rxd=%d\" % (\n- nb_cores,\n- txd_rxd,\n- txd_rxd,\n- )\n- vdevs = (\n- f\"'net_virtio_user0,mac={self.virtio_mac},path=/tmp/s0,{path_mode},queues=%d'\"\n- % nb_cores\n+ new_virtio_param = virtio_param\n+\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n )\n mode = key + \"_VA\"\n self.mode_list.append(mode)\n- self.diff_param_launch_send_and_verify(\n- mode,\n- virtio_param,\n- vdevs,\n- self.cores[2:4],\n- is_quit=False,\n- launch_virtio=True,\n- )\n- self.vhost_user.send_expect(\"show port stats all\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"stop\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"start\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"show port info all\", \"testpmd> \", 30)\n- self.vhost_user.send_expect(\"show port stats all\", \"testpmd> \", 10)\n- mode += \"_RestartVhost\"\n- self.mode_list.append(mode)\n- self.diff_param_launch_send_and_verify(\n- mode,\n- virtio_param,\n- vdevs,\n- self.cores[2:4],\n- is_quit=True,\n- launch_virtio=False,\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=new_virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ self.logger.info(\n+ \"Restart vhost with {} path with {}\".format(key, path)\n )\n+ mode += \"_RestartVhost\"\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+ self.virtio_user_pmd.quit()\n \n if not self.check_2M_env:\n- self.logger.info(\"Quit and relaunch vhost testpmd with PA mode\")\n- self.vhost_user.send_expect(\"quit\", \"# \")\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd),\n- self.cores[0:2],\n- dev=vhost_vdevs % (nb_cores),\n+ self.vhost_user_pmd.quit()\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n ports=allow_pci,\n iova_mode=\"pa\",\n )\n- for key, path_mode in virtio_path_dict.items():\n- if key == \"non_mergeable_path\":\n- virtio_param = (\n- \" --enable-hw-vlan-strip --nb-cores=%d --txd=%d --rxd=%d\"\n- % (nb_cores, txd_rxd, txd_rxd)\n+ for key, path in SPLIT_RING_PATH.items():\n+ virtio_eal_param = (\n+ \"--vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=1'\".format(\n+ self.virtio_mac, path\n )\n+ )\n+ if key == \"non_mergeable_path\":\n+ new_virtio_param = \"--enable-hw-vlan-strip \" + virtio_param\n else:\n- virtio_param = \" --nb-cores=%d --txd=%d --rxd=%d\" % (\n- nb_cores,\n- txd_rxd,\n- txd_rxd,\n- )\n- vdevs = (\n- f\"'net_virtio_user0,mac={self.virtio_mac},path=/tmp/s0,{path_mode},queues=%d'\"\n- % queues\n+ new_virtio_param = virtio_param\n+\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n )\n mode = key + \"_PA\"\n self.mode_list.append(mode)\n- self.diff_param_launch_send_and_verify(\n- mode,\n- virtio_param,\n- vdevs,\n- self.cores[2:4],\n- is_quit=False,\n- launch_virtio=True,\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=new_virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ self.logger.info(\n+ \"Restart vhost with {} path with {}\".format(key, path)\n )\n- self.vhost_user.send_expect(\"show port stats all\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"stop\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"start\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"show port info all\", \"testpmd> \", 30)\n- self.vhost_user.send_expect(\"show port stats all\", \"testpmd> \", 10)\n mode += \"_RestartVhost\"\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n self.mode_list.append(mode)\n- self.diff_param_launch_send_and_verify(\n- mode,\n- virtio_param,\n- vdevs,\n- self.cores[2:4],\n- is_quit=True,\n- launch_virtio=False,\n- )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+ self.virtio_user_pmd.quit()\n self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n self.handle_expected(mode_list=self.mode_list)\n self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n \n- def test_perf_pvp_spilt_ring_all_dynamic_queue_number_vhost_enqueue_operations_with_cbdma(\n- self,\n- ):\n+ def test_perf_pvp_split_all_path_multi_queues_vhost_txq_1_to_1_cbdma(self):\n \"\"\"\n- Test Case2: PVP split ring dynamic queue number vhost enqueue operations with cbdma\n+ Test Case 2: PVP split ring all path multi-queues vhost enqueue operations with 1 to 1 mapping between vrings and CBDMA virtual channels\n \"\"\"\n- self.test_target = self.running_case\n- self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n- self.test_target\n- ]\n- nb_cores = 1\n- txd_rxd = 1024\n- queues = 8\n- virtio_path = \"/tmp/s0\"\n- path_mode = \"mrg_rxbuf=1,in_order=1\"\n- self.get_cbdma_ports_info_and_bind_to_dpdk(8)\n- vhost_param = \" --nb-cores=%d --txd=%d --rxd=%d --txq=%d --rxq=%d \"\n- virtio_param = \" --nb-cores=%d --txd=%d --rxd=%d --txq=%d --rxq=%d \"\n- vhost_dev = f\"'net_vhost0,iface={virtio_path},queues=%d,client=1,%s'\"\n- virtio_dev = f\"net_virtio_user0,mac={self.virtio_mac},path={virtio_path},{path_mode},queues={queues},server=1\"\n- allow_pci = [self.dut.ports_info[0][\"pci\"]]\n- for index in range(8):\n- allow_pci.append(self.cbdma_dev_infos[index])\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd, queues, queues),\n- self.cores[0:2],\n- dev=vhost_dev % (queues, \"\"),\n- ports=[allow_pci[0]],\n- iova_mode=\"va\",\n+ cbdma_num = 8\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ dmas = self.generate_dmas_param(8)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:]\n )\n- self.mode_list.append(\"with_0_cbdma\")\n- self.launch_testpmd_as_virtio_user(\n- virtio_param % (nb_cores, txd_rxd, txd_rxd, queues, queues),\n- self.cores[2:4],\n- dev=virtio_dev,\n- )\n- self.send_and_verify(\"with_0_cbdma\", queue_list=range(queues))\n-\n- self.vhost_user.send_expect(\"quit\", \"#\")\n- vhost_dmas = f\"dmas=[txq0@{self.used_cbdma[0]};txq1@{self.used_cbdma[1]};txq2@{self.used_cbdma[2]};txq3@{self.used_cbdma[3]}]\"\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd, queues, queues),\n- self.cores[0:2],\n- dev=vhost_dev % (queues, vhost_dmas),\n- ports=allow_pci[:5],\n- iova_mode=\"va\",\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n )\n- self.mode_list.append(\"with_4_cbdma\")\n- self.send_and_verify(\"with_4_cbdma\", queue_list=range(int(queues / 2)))\n-\n- self.vhost_user.send_expect(\"quit\", \"#\")\n- vhost_dmas = f\"dmas=[txq0@{self.used_cbdma[0]};txq1@{self.used_cbdma[1]};txq2@{self.used_cbdma[2]};txq3@{self.used_cbdma[3]};txq4@{self.used_cbdma[4]};txq5@{self.used_cbdma[5]};txq6@{self.used_cbdma[6]};txq7@{self.used_cbdma[7]}]\"\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd, queues, queues),\n- self.cores[0:2],\n- dev=vhost_dev % (queues, vhost_dmas),\n+ vhost_param = (\n+ \" --nb-cores=8 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+ allow_pci = [self.dut.ports_info[0][\"pci\"]]\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n ports=allow_pci,\n iova_mode=\"va\",\n )\n- self.mode_list.append(\"with_8_cbdma\")\n- self.send_and_verify(\"with_8_cbdma\", queue_list=range(queues))\n+ for key, path in SPLIT_RING_PATH.items():\n+ virtio_eal_param = (\n+ \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ if key == \"non_mergeable_path\":\n+ new_virtio_param = \"--enable-hw-vlan-strip \" + virtio_param\n+ else:\n+ new_virtio_param = virtio_param\n+\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ mode = key + \"_VA\"\n+ self.mode_list.append(mode)\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=new_virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n \n if not self.check_2M_env:\n- self.logger.info(\"Quit and relaunch vhost testpmd with PA mode\")\n- self.vhost_user.send_expect(\"quit\", \"#\")\n- vhost_dmas = f\"dmas=[txq0@{self.used_cbdma[0]};txq1@{self.used_cbdma[1]};txq2@{self.used_cbdma[2]};txq3@{self.used_cbdma[3]};txq4@{self.used_cbdma[4]};txq5@{self.used_cbdma[5]}]\"\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd, queues, queues),\n- self.cores[0:2],\n- dev=vhost_dev % (queues, vhost_dmas),\n+ self.vhost_user_pmd.quit()\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n ports=allow_pci,\n iova_mode=\"pa\",\n )\n- self.mode_list.append(\"with_6_cbdma\")\n- self.send_and_verify(\"with_6_cbdma\", queue_list=range(queues))\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"mergeable_path\":\n+ virtio_eal_param = \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8\".format(\n+ self.virtio_mac, path\n+ )\n+\n+ mode = key + \"_PA\"\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.mode_list.append(mode)\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.mode_list.append(mode)\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n \n- self.virtio_user.send_expect(\"quit\", \"# \")\n- self.vhost_user.send_expect(\"quit\", \"# \")\n self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n self.handle_expected(mode_list=self.mode_list)\n self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n \n- def test_perf_pvp_packed_ring_all_path_vhost_enqueue_operations_with_cbdma(self):\n+ def test_perf_pvp_split_all_path_multi_queues_vhost_txq_M_2_1_cbdma(self):\n \"\"\"\n- Test Case 3: PVP packed ring all path vhost enqueue operations with cbdma\n+ Test Case 3: PVP split ring all path multi-queues vhost enqueue operations with M to 1 mapping between vrings and CBDMA virtual channels\n \"\"\"\n- self.test_target = self.running_case\n- self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n- self.test_target\n- ]\n- txd_rxd = 1024\n- vhost_param = \" --nb-cores=%d --txd=%d --rxd=%d\"\n- nb_cores = 1\n- queues = 1\n- self.get_cbdma_ports_info_and_bind_to_dpdk(1)\n- vhost_vdevs = (\n- f\"'net_vhost0,iface=/tmp/s0,queues=%d,dmas=[txq0@{self.device_str}]'\"\n- )\n- virtio_path_dict = {\n- \"inorder_mergeable_path\": \"mrg_rxbuf=1,in_order=1,packed_vq=1\",\n- \"mergeable_path\": \"mrg_rxbuf=1,in_order=0,packed_vq=1\",\n- \"inorder_non_mergeable_path\": \"mrg_rxbuf=0,in_order=1,packed_vq=1\",\n- \"non_mergeable_path\": \"mrg_rxbuf=0,in_order=0,packed_vq=1\",\n- \"vector_rx_path\": \"mrg_rxbuf=0,in_order=1,vectorized=1,packed_vq=1\",\n- \"vector_rx_path_not_power_of_2\": \"mrg_rxbuf=0,in_order=1,vectorized=1,packed_vq=1,queue_size=1025\",\n- }\n+ cbdma_num = 1\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ dmas = self.generate_dmas_param(8)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:2]\n+ )\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n+ )\n+ vhost_param = (\n+ \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n allow_pci = [self.dut.ports_info[0][\"pci\"]]\n- for index in range(1):\n- allow_pci.append(self.cbdma_dev_infos[index])\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd),\n- self.cores[0:2],\n- dev=vhost_vdevs % (nb_cores),\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n ports=allow_pci,\n iova_mode=\"va\",\n )\n- for key, path_mode in virtio_path_dict.items():\n- if key == \"vector_rx_path_not_power_of_2\":\n- virtio_param = \" --nb-cores=%d --txd=%d --rxd=%d\" % (\n- nb_cores,\n- (txd_rxd + 1),\n- (txd_rxd + 1),\n- )\n- else:\n- virtio_param = \" --nb-cores=%d --txd=%d --rxd=%d\" % (\n- nb_cores,\n- txd_rxd,\n- txd_rxd,\n+ for key, path in SPLIT_RING_PATH.items():\n+ virtio_eal_param = (\n+ \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8\".format(\n+ self.virtio_mac, path\n )\n- if \"vector_rx_path\" in key:\n- eal_param = \"--force-max-simd-bitwidth=512\"\n- else:\n- eal_param = \"\"\n- vdevs = (\n- f\"'net_virtio_user0,mac={self.virtio_mac},path=/tmp/s0,{path_mode},queues=%d'\"\n- % queues\n )\n- mode = key + \"_VA\"\n+ if key == \"non_mergeable_path\":\n+ new_virtio_param = \"--enable-hw-vlan-strip \" + virtio_param\n+ else:\n+ new_virtio_param = virtio_param\n+\n+ mode = key + \"_VA\" + \"_1_lcore\"\n self.mode_list.append(mode)\n- self.diff_param_launch_send_and_verify(\n- mode,\n- virtio_param,\n- vdevs,\n- self.cores[2:4],\n- eal_param=eal_param,\n- is_quit=False,\n- launch_virtio=True,\n- )\n- self.vhost_user.send_expect(\"show port stats all\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"stop\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"start\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"show port info all\", \"testpmd> \", 30)\n- self.vhost_user.send_expect(\"show port stats all\", \"testpmd> \", 10)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=new_virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n mode += \"_RestartVhost\"\n self.mode_list.append(mode)\n- self.diff_param_launch_send_and_verify(\n- mode,\n- virtio_param,\n- vdevs,\n- self.cores[2:4],\n- is_quit=True,\n- launch_virtio=False,\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n )\n- if not self.check_2M_env:\n- self.logger.info(\"Quit and relaunch vhost testpmd with PA mode\")\n- self.vhost_user.send_expect(\"quit\", \"# \")\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (queues, txd_rxd, txd_rxd),\n- self.cores[0:2],\n- dev=vhost_vdevs % (queues),\n- ports=allow_pci,\n- iova_mode=\"pa\",\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ self.vhost_user_pmd.quit()\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:4]\n+ )\n+ vhost_param = (\n+ \" --nb-cores=3 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n )\n- for key, path_mode in virtio_path_dict.items():\n- if key == \"vector_rx_path_not_power_of_2\":\n- virtio_param = \" --nb-cores=%d --txd=%d --rxd=%d\" % (\n- nb_cores,\n- (txd_rxd + 1),\n- (txd_rxd + 1),\n- )\n- else:\n- virtio_param = \" --nb-cores=%d --txd=%d --rxd=%d\" % (\n- nb_cores,\n- txd_rxd,\n- txd_rxd,\n+ )\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"va\",\n+ )\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+ virtio_eal_param = (\n+ \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8\".format(\n+ self.virtio_mac, path\n )\n- if \"vector_rx_path\" in key:\n- eal_param = \"--force-max-simd-bitwidth=512\"\n- else:\n- eal_param = \"\"\n- vdevs = (\n- f\"'net_virtio_user0,mac={self.virtio_mac},path=/tmp/s0,{path_mode},queues=%d'\"\n- % queues\n )\n- mode = key + \"_PA\"\n+\n+ mode = key + \"_VA\" + \"_3_lcore\"\n self.mode_list.append(mode)\n- self.diff_param_launch_send_and_verify(\n- mode,\n- virtio_param,\n- vdevs,\n- self.cores[2:4],\n- eal_param=eal_param,\n- is_quit=False,\n- launch_virtio=True,\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n \n- self.vhost_user.send_expect(\"show port stats all\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"stop\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"start\", \"testpmd> \", 10)\n- self.vhost_user.send_expect(\"show port info all\", \"testpmd> \", 30)\n- self.vhost_user.send_expect(\"show port stats all\", \"testpmd> \", 10)\n mode += \"_RestartVhost\"\n self.mode_list.append(mode)\n- self.diff_param_launch_send_and_verify(\n- mode,\n- virtio_param,\n- vdevs,\n- self.cores[2:4],\n- is_quit=True,\n- launch_virtio=False,\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ self.vhost_user_pmd.quit()\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:9]\n+ )\n+ vhost_param = (\n+ \" --nb-cores=8 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"va\",\n+ )\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"mergeable_path\":\n+ virtio_eal_param = (\n+ \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ mode = key + \"_VA\" + \"_8_lcore\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ if not self.check_2M_env:\n+ self.vhost_user_pmd.quit()\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"pa\",\n+ )\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"inorder_non_mergeable_path\":\n+ virtio_eal_param = \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8\".format(\n+ self.virtio_mac, path\n+ )\n+\n+ mode = key + \"_PA\" + \"_8_lcore\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n \n self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n self.handle_expected(mode_list=self.mode_list)\n self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n \n- def test_perf_pvp_packed_ring_all_dynamic_queue_number_vhost_enqueue_operations_with_cbdma(\n- self,\n- ):\n+ def test_perf_pvp_split_all_path_vhost_txq_1_to_N_cbdma(self):\n \"\"\"\n- Test Case 4: PVP packed ring dynamic queue number vhost enqueue operations with cbdma\n+ Test Case 4: PVP split ring all path vhost enqueue operations with 1 to N mapping between vrings and CBDMA virtual channels\n \"\"\"\n- self.test_target = self.running_case\n- self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n- self.test_target\n- ]\n- nb_cores = 1\n- txd_rxd = 1024\n- queues = 8\n- virtio_path = \"/tmp/s0\"\n- path_mode = \"mrg_rxbuf=1,in_order=1,packed_vq=1\"\n- self.get_cbdma_ports_info_and_bind_to_dpdk(8)\n- vhost_param = \" --nb-cores=%d --txd=%d --rxd=%d --txq=%d --rxq=%d \"\n- virtio_param = \" --nb-cores=%d --txd=%d --rxd=%d --txq=%d --rxq=%d \"\n- vhost_dev = f\"'net_vhost0,iface={virtio_path},queues=%d,client=1,%s'\"\n- virtio_dev = f\"net_virtio_user0,mac={self.virtio_mac},path={virtio_path},{path_mode},queues={queues},server=1\"\n- allow_pci = [self.dut.ports_info[0][\"pci\"]]\n- for index in range(8):\n- allow_pci.append(self.cbdma_dev_infos[index])\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd, queues, queues),\n- self.cores[0:2],\n- dev=vhost_dev % (queues, \"\"),\n- ports=[allow_pci[0]],\n- iova_mode=\"va\",\n+ cbdma_num = 8\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ dmas = self.generate_dmas_param(1)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:2]\n )\n- self.mode_list.append(\"with_0_cbdma\")\n- self.launch_testpmd_as_virtio_user(\n- virtio_param % (nb_cores, txd_rxd, txd_rxd, queues, queues),\n- self.cores[2:4],\n- dev=virtio_dev,\n- )\n- self.send_and_verify(\"with_0_cbdma\", queue_list=range(queues))\n-\n- self.vhost_user.send_expect(\"quit\", \"#\")\n- vhost_dmas = f\"dmas=[txq0@{self.used_cbdma[0]};txq1@{self.used_cbdma[1]};txq2@{self.used_cbdma[2]};txq3@{self.used_cbdma[3]}]\"\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd, queues, queues),\n- self.cores[0:2],\n- dev=vhost_dev % (queues, vhost_dmas),\n- ports=allow_pci[:5],\n- iova_mode=\"va\",\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=1,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n )\n- self.mode_list.append(\"with_4_cbdma\")\n- self.send_and_verify(\"with_4_cbdma\", queue_list=range(int(queues / 2)))\n-\n- self.vhost_user.send_expect(\"quit\", \"#\")\n- vhost_dmas = f\"dmas=[txq0@{self.used_cbdma[0]};txq1@{self.used_cbdma[1]};txq2@{self.used_cbdma[2]};txq3@{self.used_cbdma[3]};txq4@{self.used_cbdma[4]};txq5@{self.used_cbdma[5]};txq6@{self.used_cbdma[6]};txq7@{self.used_cbdma[7]}]\"\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd, queues, queues),\n- self.cores[0:2],\n- dev=vhost_dev % (queues, vhost_dmas),\n+ vhost_param = (\n+ \" --nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024\"\n+ allow_pci = [self.dut.ports_info[0][\"pci\"]]\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n ports=allow_pci,\n iova_mode=\"va\",\n )\n- self.mode_list.append(\"with_8_cbdma\")\n- self.send_and_verify(\"with_8_cbdma\", queue_list=range(queues))\n+ for key, path in SPLIT_RING_PATH.items():\n+ virtio_eal_param = (\n+ \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=1\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ if key == \"non_mergeable_path\":\n+ new_virtio_param = \"--enable-hw-vlan-strip \" + virtio_param\n+ else:\n+ new_virtio_param = virtio_param\n+\n+ mode = key + \"_VA\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=new_virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+ self.virtio_user_pmd.quit()\n \n if not self.check_2M_env:\n- self.logger.info(\"Quit and relaunch vhost testpmd with PA mode\")\n- self.vhost_user.send_expect(\"quit\", \"#\")\n- vhost_dmas = f\"dmas=[txq0@{self.used_cbdma[0]};txq1@{self.used_cbdma[1]};txq2@{self.used_cbdma[2]};txq3@{self.used_cbdma[3]};txq4@{self.used_cbdma[4]};txq5@{self.used_cbdma[5]}]\"\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores, txd_rxd, txd_rxd, queues, queues),\n- self.cores[0:2],\n- dev=vhost_dev % (queues, vhost_dmas),\n+ self.vhost_user_pmd.quit()\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n ports=allow_pci,\n iova_mode=\"pa\",\n )\n- self.mode_list.append(\"with_6_cbdma\")\n- self.send_and_verify(\"with_6_cbdma\", queue_list=range(queues))\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"non_mergeable_path\":\n+ virtio_eal_param = \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=1\".format(\n+ self.virtio_mac, path\n+ )\n+\n+ mode = key + \"_PA\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+ self.virtio_user_pmd.quit()\n \n- self.virtio_user.send_expect(\"quit\", \"# \")\n- self.vhost_user.send_expect(\"quit\", \"# \")\n self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n self.handle_expected(mode_list=self.mode_list)\n self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n \n- def send_chain_packets_and_verify(self):\n- self.pmdout_virtio_user.execute_cmd(\"clear port stats all\")\n- self.pmdout_virtio_user.execute_cmd(\"start\")\n- self.pmdout_vhost_user.execute_cmd(\"vhost enable tx all\")\n- self.pmdout_vhost_user.execute_cmd(\"set txpkts 65535,65535,65535,65535,65535\")\n- self.pmdout_vhost_user.execute_cmd(\"start tx_first 32\")\n- self.pmdout_vhost_user.execute_cmd(\"show port stats all\")\n- out = self.pmdout_virtio_user.execute_cmd(\"show port stats all\")\n- rx_pkts = int(re.search(\"RX-packets: (\\d+)\", out).group(1))\n- self.verify(rx_pkts > 0, \"virtio-user can not received packets\")\n-\n- def test_loopback_split_ring_large_chain_packets_stress_test_with_cbdma_enqueue(\n- self,\n- ):\n+ def test_perf_pvp_split_all_path_multi_queues_vhost_txq_M_to_N_cbdma(self):\n \"\"\"\n- Test Case5: loopback split ring large chain packets stress test with cbdma enqueue\n+ Test Case 5: PVP split ring all path multi-queues vhost enqueue operations with M to N mapping between vrings and CBDMA virtual channels\n \"\"\"\n- nb_cores = 1\n- queues = 1\n- txd_rxd = 2048\n- txq_rxq = 1\n- virtio_path = \"/tmp/s0\"\n- path_mode = \"mrg_rxbuf=1,in_order=0,vectorized=1,queue_size=2048\"\n- self.get_cbdma_ports_info_and_bind_to_dpdk(1)\n- vhost_param = \" --nb-cores=%d --mbuf-size=65535\"\n- virtio_param = \" --nb-cores=%d --txd=%d --rxd=%d --txq=%d --rxq=%d \"\n- virtio_dev = f\"net_virtio_user0,mac={self.virtio_mac},path={virtio_path},{path_mode},queues=%d\"\n- vhost_vdevs = (\n- f\"'net_vhost0,iface=/tmp/s0,queues=%d,dmas=[txq0@{self.device_str}]'\"\n- )\n- allow_pci = []\n- for index in range(1):\n- allow_pci.append(self.cbdma_dev_infos[index])\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores),\n- self.cores[0:2],\n- dev=vhost_vdevs % (queues),\n+ cbdma_num = 8\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ dmas = self.generate_dmas_param(3)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:2]\n+ )\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n+ )\n+ vhost_param = (\n+ \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ virtio_param = \"--nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+ allow_pci = [self.dut.ports_info[0][\"pci\"]]\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n ports=allow_pci,\n iova_mode=\"va\",\n- set_pmd_param=False,\n- )\n- self.launch_testpmd_as_virtio_user(\n- virtio_param % (nb_cores, txd_rxd, txd_rxd, txq_rxq, txq_rxq),\n- self.cores[2:4],\n- dev=virtio_dev % (queues),\n- set_pmd_param=False,\n )\n- self.send_chain_packets_and_verify()\n+ for key, path in SPLIT_RING_PATH.items():\n+ virtio_eal_param = (\n+ \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ if key == \"non_mergeable_path\":\n+ virtio_param = \"--enable-hw-vlan-strip \" + virtio_param\n \n- if not self.check_2M_env:\n- self.logger.info(\"Quit and relaunch vhost testpmd with PA mode\")\n- self.pmdout_virtio_user.execute_cmd(\"quit\", \"#\")\n- self.pmdout_vhost_user.execute_cmd(\"quit\", \"#\")\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores),\n- self.cores[0:2],\n- dev=vhost_vdevs % (queues),\n- ports=allow_pci,\n- iova_mode=\"pa\",\n- set_pmd_param=False,\n+ mode = key + \"_VA\" + \"_3dmas\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n )\n- self.launch_testpmd_as_virtio_user(\n- virtio_param % (nb_cores, txd_rxd, txd_rxd, txq_rxq, txq_rxq),\n- self.cores[2:4],\n- dev=virtio_dev % (queues),\n- set_pmd_param=False,\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n )\n- self.send_chain_packets_and_verify()\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n \n- def test_loopback_packed_ring_large_chain_packets_stress_test_with_cbdma_enqueue(\n- self,\n- ):\n- \"\"\"\n- Test Case6: loopback packed ring large chain packets stress test with cbdma enqueue\n- \"\"\"\n- nb_cores = 1\n- queues = 1\n- txd_rxd = 2048\n- txq_rxq = 1\n- virtio_path = \"/tmp/s0\"\n- path_mode = \"mrg_rxbuf=1,in_order=0,vectorized=1,packed_vq=1,queue_size=2048\"\n- self.get_cbdma_ports_info_and_bind_to_dpdk(1)\n- vhost_param = \" --nb-cores=%d --mbuf-size=65535\"\n- virtio_param = \" --nb-cores=%d --txd=%d --rxd=%d --txq=%d --rxq=%d \"\n- virtio_dev = f\"net_virtio_user0,mac={self.virtio_mac},path={virtio_path},{path_mode},queues=%d\"\n- vhost_vdevs = (\n- f\"'net_vhost0,iface=/tmp/s0,queues=%d,dmas=[txq0@{self.device_str}]'\"\n- )\n- allow_pci = []\n- for index in range(1):\n- allow_pci.append(self.cbdma_dev_infos[index])\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores),\n- self.cores[0:2],\n- dev=vhost_vdevs % (queues),\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ self.vhost_user_pmd.quit()\n+ dmas = self.generate_dmas_param(8)\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n+ )\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n ports=allow_pci,\n iova_mode=\"va\",\n- set_pmd_param=False,\n- )\n- self.launch_testpmd_as_virtio_user(\n- virtio_param % (nb_cores, txd_rxd, txd_rxd, txq_rxq, txq_rxq),\n- self.cores[2:4],\n- dev=virtio_dev % (queues),\n- set_pmd_param=False,\n )\n- self.send_chain_packets_and_verify()\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"inorder_non_mergeable_path\":\n+ virtio_eal_param = (\n+ \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+\n+ mode = key + \"_VA\" + \"_8dmas\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n \n if not self.check_2M_env:\n- self.logger.info(\"Quit and relaunch vhost testpmd with PA mode\")\n- self.pmdout_virtio_user.execute_cmd(\"quit\", \"#\")\n- self.pmdout_vhost_user.execute_cmd(\"quit\", \"#\")\n- self.launch_testpmd_as_vhost_user(\n- vhost_param % (nb_cores),\n- self.cores[0:2],\n- dev=vhost_vdevs % (queues),\n+ self.vhost_user_pmd.quit()\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n ports=allow_pci,\n iova_mode=\"pa\",\n- set_pmd_param=False,\n )\n- self.launch_testpmd_as_virtio_user(\n- virtio_param % (nb_cores, txd_rxd, txd_rxd, txq_rxq, txq_rxq),\n- self.cores[2:4],\n- dev=virtio_dev % (queues),\n- set_pmd_param=False,\n- )\n- self.send_chain_packets_and_verify()\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"vectorized_path\":\n+ virtio_eal_param = \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8\".format(\n+ self.virtio_mac, path\n+ )\n+\n+ mode = key + \"_PA\" + \"_8dmas\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n+ self.handle_expected(mode_list=self.mode_list)\n+ self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n \n- def send_imix_and_verify(self, mode, multiple_queue=True, queue_list=[]):\n+ def test_perf_pvp_split_dynamic_queues_vhost_txq_M_to_N_cbdma(self):\n \"\"\"\n- Send imix packet with packet generator and verify\n+ Test Case 6: PVP split ring dynamic queue number vhost enqueue operations with M to N mapping between vrings and CBDMA virtual channels\n \"\"\"\n- frame_sizes = [\n- 64,\n- 128,\n- 256,\n- 512,\n- 1024,\n- 1280,\n- 1518,\n- ]\n- tgenInput = []\n- for frame_size in frame_sizes:\n- payload_size = frame_size - self.headers_size\n- port = self.tester.get_local_port(self.dut_ports[0])\n- fields_config = {\n- \"ip\": {\n- \"src\": {\"action\": \"random\"},\n- },\n- }\n- if not multiple_queue:\n- fields_config = None\n+ cbdma_num = 8\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=1,client=1'\"\n+ vhost_param = \" --nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024\"\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+ allow_pci = [self.dut.ports_info[0][\"pci\"]]\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci[0:1],\n+ iova_mode=\"va\",\n+ )\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+ virtio_eal_param = \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8,server=1\".format(\n+ self.virtio_mac, path\n+ )\n+\n+ mode = key + \"_VA\" + \"_without_cbdma\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ self.vhost_user_pmd.quit()\n+ dmas = self.generate_dmas_param(4)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list[0:4], core_list=self.vhost_core_list[1:5]\n+ )\n+ vhost_eal_param = (\n+ \"--vdev 'net_vhost0,iface=/tmp/s0,queues=4,client=1,dmas={}'\".format(dmas)\n+ )\n+ vhost_param = (\n+ \" --nb-cores=4 --txq=4 --rxq=4 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci[0:5],\n+ iova_mode=\"va\",\n+ )\n+\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+\n+ mode = key + \"_VA\" + \"_1:1\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=4)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=4)\n+\n+ self.vhost_user_pmd.quit()\n+ dmas = self.generate_dmas_param(queues=8)\n+ core1 = self.vhost_core_list[1]\n+ core2 = self.vhost_core_list[2]\n+ core3 = self.vhost_core_list[3]\n+ core4 = self.vhost_core_list[4]\n+ core5 = self.vhost_core_list[5]\n+ cbdma0 = self.cbdma_list[0]\n+ cbdma1 = self.cbdma_list[1]\n+ cbdma2 = self.cbdma_list[2]\n+ cbdma3 = self.cbdma_list[3]\n+ cbdma4 = self.cbdma_list[4]\n+ cbdma5 = self.cbdma_list[5]\n+ cbdma6 = self.cbdma_list[6]\n+ cbdma7 = self.cbdma_list[7]\n+ lcore_dma = (\n+ f\"[lcore{core1}@{cbdma0},lcore{core1}@{cbdma7},\"\n+ + f\"lcore{core2}@{cbdma1},lcore{core2}@{cbdma2},lcore{core2}@{cbdma3},\"\n+ + f\"lcore{core3}@{cbdma2},lcore{core3}@{cbdma3},lcore{core3}@{cbdma4},\"\n+ f\"lcore{core4}@{cbdma2},lcore{core4}@{cbdma3},lcore{core4}@{cbdma4},lcore{core4}@{cbdma5},\"\n+ f\"lcore{core5}@{cbdma0},lcore{core5}@{cbdma1},lcore{core5}@{cbdma2},lcore{core5}@{cbdma3},\"\n+ f\"lcore{core5}@{cbdma4},lcore{core5}@{cbdma5},lcore{core5}@{cbdma6},lcore{core5}@{cbdma7}]\"\n+ )\n+ vhost_eal_param = (\n+ \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,client=1,dmas={}'\".format(dmas)\n+ )\n+ vhost_param = (\n+ \" --nb-cores=5 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci[0:9],\n+ iova_mode=\"va\",\n+ )\n+\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+\n+ mode = key + \"_VA\" + \"_M<N\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ self.vhost_user_pmd.quit()\n+ dmas = self.generate_dmas_param(7)\n+ lcore_dma = (\n+ f\"[lcore{core1}@{cbdma0},lcore{core2}@{cbdma0},lcore{core3}@{cbdma1},lcore{core3}@{cbdma2},\"\n+ f\"lcore{core4}@{cbdma1},lcore{core4}@{cbdma2},lcore{core5}@{cbdma1},lcore{core5}@{cbdma2}]\"\n+ )\n+ vhost_eal_param = (\n+ \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,client=1,dmas={}'\".format(dmas)\n+ )\n+ vhost_param = (\n+ \" --nb-cores=5 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci[0:5],\n+ iova_mode=\"va\",\n+ )\n+\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+\n+ mode = key + \"_VA\" + \"_M>N\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ if not self.check_2M_env:\n+ self.vhost_user_pmd.quit()\n+ dmas = self.generate_dmas_param(queues=8)\n+\n+ vhost_eal_param = (\n+ \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,client=1,dmas={}'\".format(\n+ dmas\n+ )\n+ )\n+ vhost_param = \" --nb-cores=5 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci[0:5],\n+ iova_mode=\"pa\",\n+ )\n+\n+ for key, path in SPLIT_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+\n+ mode = key + \"_PA\" + \"_M>N\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"ReLaunch host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n+ self.handle_expected(mode_list=self.mode_list)\n+ self.handle_results(mode_list=self.mode_list)\n+ self.virtio_user_pmd.quit()\n+ self.vhost_user_pmd.quit()\n+\n+ def test_perf_pvp_packed_all_path_vhost_txq_1_to_1_cbdma(self):\n+ \"\"\"\n+ Test Case 7: PVP packed ring all path vhost enqueue operations with 1 to 1 mapping between vrings and CBDMA virtual channels\n+ \"\"\"\n+ cbdma_num = 1\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ dmas = self.generate_dmas_param(1)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:2]\n+ )\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=1,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n+ )\n+ vhost_param = (\n+ \" --nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ allow_pci = [self.dut.ports_info[0][\"pci\"]]\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"va\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ virtio_eal_param = (\n+ \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=1'\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024\"\n+ if key == \"vectorized_path_not_power_of_2\":\n+ virtio_eal_param += \",queue_size=1025\"\n+ virtio_param = \" --nb-cores=1 --txq=1 --rxq=1 --txd=1025 --rxd=1025\"\n+ if \"vectorized\" in key:\n+ virtio_eal_param += \" --force-max-simd-bitwidth=512\"\n+\n+ mode = key + \"_VA\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+ self.virtio_user_pmd.quit()\n+\n+ if not self.check_2M_env:\n+ self.vhost_user_pmd.quit()\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"pa\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+ virtio_eal_param = \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=1'\".format(\n+ self.virtio_mac, path\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024\"\n+\n+ mode = key + \"_PA\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+ self.virtio_user_pmd.quit()\n+\n+ self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n+ self.handle_expected(mode_list=self.mode_list)\n+ self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n+\n+ def test_perf_pvp_packed_all_path_multi_queues_vhost_txq_1_to_1_cbdma(self):\n+ \"\"\"\n+ Test Case 8: PVP packed ring all path multi-queues vhost enqueue operations with 1 to 1 mapping between vrings and CBDMA virtual channels\n+ \"\"\"\n+ cbdma_num = 8\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ dmas = self.generate_dmas_param(8)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:]\n+ )\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n+ )\n+ vhost_param = (\n+ \" --nb-cores=8 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ allow_pci = [self.dut.ports_info[0][\"pci\"]]\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"va\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ virtio_eal_param = (\n+ \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=8'\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+ if key == \"vectorized_path_not_power_of_2\":\n+ virtio_eal_param += \",queue_size=1025\"\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1025 --rxd=1025\"\n+ if \"vectorized\" in key:\n+ virtio_eal_param += \" --force-max-simd-bitwidth=512\"\n+\n+ mode = key + \"_VA\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ if not self.check_2M_env:\n+ self.vhost_user_pmd.quit()\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"pa\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"mergeable_path\":\n+ virtio_param = (\n+ \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+ )\n+ virtio_eal_param = \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8\".format(\n+ self.virtio_mac, path\n+ )\n+\n+ mode = key + \"_PA\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n+ self.handle_expected(mode_list=self.mode_list)\n+ self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n+\n+ def test_perf_pvp_packed_all_path_multi_queues_vhost_txq_M_to_1_cbdma(self):\n+ \"\"\"\n+ Test Case 9: PVP packed ring all path multi-queues vhost enqueue operations with M to 1 mapping between vrings and CBDMA virtual channels\n+ \"\"\"\n+ cbdma_num = 1\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ dmas = self.generate_dmas_param(8)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:2]\n+ )\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n+ )\n+ vhost_param = (\n+ \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ allow_pci = [self.dut.ports_info[0][\"pci\"]]\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"va\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ virtio_eal_param = (\n+ \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=8'\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+ if key == \"vectorized_path_not_power_of_2\":\n+ virtio_eal_param += \",queue_size=1025\"\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1025 --rxd=1025\"\n+\n+ mode = key + \"_VA\" + \"_1_lcore\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ self.vhost_user_pmd.quit()\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:4]\n+ )\n+ vhost_param = (\n+ \" --nb-cores=3 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"va\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+ virtio_eal_param = (\n+ \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=8'\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+\n+ mode = key + \"_VA\" + \"_3_lcore\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ self.vhost_user_pmd.quit()\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:9]\n+ )\n+ vhost_param = (\n+ \" --nb-cores=8 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"va\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"mergeable_path\":\n+ virtio_eal_param = (\n+ \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=8'\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+\n+ mode = key + \"_VA\" + \"_8_lcore\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ if not self.check_2M_env:\n+ self.vhost_user_pmd.quit()\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"pa\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"inorder_non_mergeable_path\":\n+ virtio_eal_param = \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=8'\".format(\n+ self.virtio_mac, path\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+\n+ mode = key + \"_PA\" + \"_8_lcore\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n+ self.handle_expected(mode_list=self.mode_list)\n+ self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n+\n+ def test_perf_pvp_packed_all_path_vhost_txq_1_to_N_cbdma(self):\n+ \"\"\"\n+ Test Case 10: PVP packed ring all path vhost enqueue operations with 1 to N mapping between vrings and CBDMA virtual channels\n+ \"\"\"\n+ cbdma_num = 8\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ dmas = self.generate_dmas_param(1)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:2]\n+ )\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=1,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n+ )\n+ vhost_param = (\n+ \" --nb-cores=1 --txq=1 --rxq=1--txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ allow_pci = [self.dut.ports_info[0][\"pci\"]]\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"va\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ virtio_eal_param = (\n+ \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=1'\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024\"\n+ if key == \"vectorized_path_not_power_of_2\":\n+ virtio_eal_param += \",queue_size=1025\"\n+ virtio_param = \" --nb-cores=1 --txq=1 --rxq=1 --txd=1025 --rxd=1025\"\n+\n+ mode = key + \"_VA\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+ self.virtio_user_pmd.quit()\n+\n+ if not self.check_2M_env:\n+ self.vhost_user_pmd.quit()\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"pa\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"non_mergeable_path\":\n+ virtio_eal_param = \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=1'\".format(\n+ self.virtio_mac, path\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024\"\n+\n+ mode = key + \"_PA\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+ self.virtio_user_pmd.quit()\n+\n+ self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n+ self.handle_expected(mode_list=self.mode_list)\n+ self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n+\n+ def test_perf_pvp_packed_all_path_multi_queues_vhost_txq_M_to_N_cbdma(self):\n+ \"\"\"\n+ Test Case 11: PVP packed ring all path vhost enqueue operations with M to N mapping between vrings and CBDMA virtual channels\n+ \"\"\"\n+ cbdma_num = 8\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ dmas = self.generate_dmas_param(3)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list, core_list=self.vhost_core_list[1:2]\n+ )\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n+ )\n+ vhost_param = (\n+ \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ allow_pci = [self.dut.ports_info[0][\"pci\"]]\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"va\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ virtio_eal_param = (\n+ \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=8'\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+ if key == \"vectorized_path_not_power_of_2\":\n+ virtio_eal_param += \",queue_size=1025\"\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1025 --rxd=1025\"\n+\n+ mode = key + \"_VA\" + \"_3dmas\"\n+ self.mode_list.append(mode)\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ self.vhost_user_pmd.quit()\n+ dmas = self.generate_dmas_param(queues=8)\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,dmas={},dma_ring_size=2048'\".format(\n+ dmas\n+ )\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"va\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"inorder_non_mergeable_path\":\n+ virtio_eal_param = (\n+ \" --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=8'\".format(\n+ self.virtio_mac, path\n+ )\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+\n+ mode = key + \"_VA\" + \"_8dmas\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ if not self.check_2M_env:\n+ self.vhost_user_pmd.quit()\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci,\n+ iova_mode=\"pa\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"vectorized_path\":\n+ virtio_eal_param = \" --force-max-simd-bitwidth=512 --vdev 'net_virtio_user0,mac={},path=/tmp/s0,{},queues=8'\".format(\n+ self.virtio_mac, path\n+ )\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+\n+ mode = key + \"_PA\" + \"_8dmas\"\n+ self.mode_list.append(mode)\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.check_each_queue_of_port_packets(queues=8)\n+ self.virtio_user_pmd.quit()\n+\n+ self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n+ self.handle_expected(mode_list=self.mode_list)\n+ self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n+\n+ def test_perf_pvp_packed_dynamic_queues_vhost_txq_M_to_N_cbdma(self):\n+ \"\"\"\n+ Test Case 12: PVP packed ring dynamic queue number vhost enqueue operations with M to N mapping between vrings and CBDMA virtual channels\n+ \"\"\"\n+ cbdma_num = 8\n+ self.get_cbdma_ports_info_and_bind_to_dpdk(cbdma_num)\n+ vhost_eal_param = \"--vdev 'net_vhost0,iface=/tmp/s0,queues=1,client=1'\"\n+ vhost_param = \" --nb-cores=1 --txq=1 --rxq=1 --txd=1024 --rxd=1024\"\n+ virtio_param = \" --nb-cores=1 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n+ allow_pci = [self.dut.ports_info[0][\"pci\"]]\n+ for i in range(cbdma_num):\n+ allow_pci.append(self.cbdma_list[i])\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci[0:1],\n+ iova_mode=\"va\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+ virtio_eal_param = \"--vdev=net_virtio_user0,mac={},path=/tmp/s0,{},queues=8,server=1\".format(\n+ self.virtio_mac, path\n+ )\n+\n+ mode = key + \"_VA\" + \"_without_cbdma\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.start_virtio_testpmd(\n+ cores=self.virtio_core_list,\n+ param=virtio_param,\n+ eal_param=virtio_eal_param,\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets()\n+\n+ self.vhost_user_pmd.quit()\n+ dmas = self.generate_dmas_param(4)\n+ lcore_dma = self.generate_lcore_dma_param(\n+ cbdma_list=self.cbdma_list[0:4], core_list=self.vhost_core_list[1:5]\n+ )\n+ vhost_eal_param = (\n+ \"--vdev 'net_vhost0,iface=/tmp/s0,queues=4,client=1,dmas={}'\".format(dmas)\n+ )\n+ vhost_param = (\n+ \" --nb-cores=4 --txq=4 --rxq=4 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci[0:5],\n+ iova_mode=\"va\",\n+ )\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+\n+ mode = key + \"_VA\" + \"_1:1\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=4)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=4)\n+\n+ self.vhost_user_pmd.quit()\n+ dmas = self.generate_dmas_param(8)\n+ core1 = self.vhost_core_list[1]\n+ core2 = self.vhost_core_list[2]\n+ core3 = self.vhost_core_list[3]\n+ core4 = self.vhost_core_list[4]\n+ core5 = self.vhost_core_list[5]\n+ cbdma0 = self.cbdma_list[0]\n+ cbdma1 = self.cbdma_list[1]\n+ cbdma2 = self.cbdma_list[2]\n+ cbdma3 = self.cbdma_list[3]\n+ cbdma4 = self.cbdma_list[4]\n+ cbdma5 = self.cbdma_list[5]\n+ cbdma6 = self.cbdma_list[6]\n+ cbdma7 = self.cbdma_list[7]\n+ lcore_dma = (\n+ f\"[lcore{core1}@{cbdma0},lcore{core1}@{cbdma7},\"\n+ + f\"lcore{core2}@{cbdma1},lcore{core2}@{cbdma2},lcore{core2}@{cbdma3},\"\n+ + f\"lcore{core3}@{cbdma2},lcore{core3}@{cbdma3},lcore{core3}@{cbdma4},\"\n+ f\"lcore{core4}@{cbdma2},lcore{core4}@{cbdma3},lcore{core4}@{cbdma4},lcore{core4}@{cbdma5},\"\n+ f\"lcore{core5}@{cbdma0},lcore{core5}@{cbdma1},lcore{core5}@{cbdma2},lcore{core5}@{cbdma3},\"\n+ f\"lcore{core5}@{cbdma4},lcore{core5}@{cbdma5},lcore{core5}@{cbdma6},lcore{core5}@{cbdma7}]\"\n+ )\n+ vhost_eal_param = (\n+ \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,client=1,dmas={}'\".format(dmas)\n+ )\n+ vhost_param = (\n+ \" --nb-cores=5 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci[0:9],\n+ iova_mode=\"va\",\n+ )\n+\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+\n+ mode = key + \"_VA\" + \"_M<N\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ self.vhost_user_pmd.quit()\n+ dmas = self.generate_dmas_param(7)\n+ lcore_dma = (\n+ f\"[lcore{core1}@{cbdma0},lcore{core2}@{cbdma0},lcore{core3}@{cbdma1},lcore{core3}@{cbdma2},\"\n+ f\"lcore{core4}@{cbdma1},lcore{core4}@{cbdma2},lcore{core5}@{cbdma1},lcore{core5}@{cbdma2}]\"\n+ )\n+ vhost_eal_param = (\n+ \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,client=1,dmas={}'\".format(dmas)\n+ )\n+ vhost_param = (\n+ \" --nb-cores=5 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ )\n+\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci[0:5],\n+ iova_mode=\"va\",\n+ )\n+\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+\n+ mode = key + \"_VA\" + \"_M>N\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ if not self.check_2M_env:\n+ self.vhost_user_pmd.quit()\n+ dmas = self.generate_dmas_param(8)\n+ vhost_eal_param = (\n+ \"--vdev 'net_vhost0,iface=/tmp/s0,queues=8,client=1,dmas={}'\".format(\n+ dmas\n+ )\n+ )\n+ vhost_param = \" --nb-cores=5 --txq=8 --rxq=8 --txd=1024 --rxd=1024 --lcore-dma={}\".format(\n+ lcore_dma\n+ )\n+ self.start_vhost_testpmd(\n+ cores=self.vhost_core_list,\n+ param=vhost_param,\n+ eal_param=vhost_eal_param,\n+ ports=allow_pci[0:5],\n+ iova_mode=\"pa\",\n+ )\n+\n+ for key, path in PACKED_RING_PATH.items():\n+ if key == \"inorder_mergeable_path\":\n+\n+ mode = key + \"_PA\" + \"_M>N\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Start virtio-user with {} path with {}\".format(key, path)\n+ )\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ mode += \"_RestartVhost\"\n+ self.mode_list.append(mode)\n+ self.logger.info(\n+ \"Restart host with {} path with {}\".format(key, path)\n+ )\n+ self.vhost_user_pmd.execute_cmd(\"start\")\n+ self.send_imix_packets(mode=mode)\n+ self.check_each_queue_of_port_packets(queues=8)\n+\n+ self.result_table_print()\n+ self.test_target = self.running_case\n+ self.expected_throughput = self.get_suite_cfg()[\"expected_throughput\"][\n+ self.test_target\n+ ]\n+ self.handle_expected(mode_list=self.mode_list)\n+ self.handle_results(mode_list=self.mode_list)\n+ self.vhost_user_pmd.quit()\n+ self.virtio_user_pmd.quit()\n+\n+ def send_imix_packets(self, mode):\n+ \"\"\"\n+ Send imix packet with packet generator and verify\n+ \"\"\"\n+ frame_sizes = [64, 128, 256, 512, 1024, 1518]\n+ tgenInput = []\n+ for frame_size in frame_sizes:\n+ payload_size = frame_size - self.headers_size\n+ port = self.tester.get_local_port(self.dut_ports[0])\n+ fields_config = {\n+ \"ip\": {\n+ \"src\": {\"action\": \"random\"},\n+ },\n+ }\n pkt = Packet()\n pkt.assign_layers([\"ether\", \"ipv4\", \"raw\"])\n pkt.config_layers(\n@@ -874,84 +2158,10 @@ class TestVirTioVhostCbdma(TestCase):\n results_row.append(Mpps)\n results_row.append(throughput)\n self.result_table_add(results_row)\n- if queue_list:\n- self.check_packets_of_each_queue(queue_list=queue_list)\n-\n- def send_and_verify(\n- self,\n- mode,\n- multiple_queue=True,\n- queue_list=[],\n- frame_sizes=None,\n- pkt_length_mode=\"imix\",\n- ):\n- \"\"\"\n- Send packet with packet generator and verify\n- \"\"\"\n- if pkt_length_mode == \"imix\":\n- self.send_imix_and_verify(mode, multiple_queue, queue_list)\n- return\n-\n- self.throughput[mode] = dict()\n- for frame_size in frame_sizes:\n- self.throughput[mode][frame_size] = dict()\n- payload_size = frame_size - self.headers_size\n- tgenInput = []\n- port = self.tester.get_local_port(self.dut_ports[0])\n- fields_config = {\n- \"ip\": {\n- \"src\": {\"action\": \"random\"},\n- },\n- }\n- if not multiple_queue:\n- fields_config = None\n- pkt1 = Packet()\n- pkt1.assign_layers([\"ether\", \"ipv4\", \"raw\"])\n- pkt1.config_layers(\n- [\n- (\"ether\", {\"dst\": \"%s\" % self.virtio_mac}),\n- (\"ipv4\", {\"src\": \"1.1.1.1\"}),\n- (\"raw\", {\"payload\": [\"01\"] * int(\"%d\" % payload_size)}),\n- ]\n- )\n- pkt1.save_pcapfile(\n- self.tester,\n- \"%s/multiqueuerandomip_%s.pcap\" % (self.out_path, frame_size),\n- )\n- tgenInput.append(\n- (\n- port,\n- port,\n- \"%s/multiqueuerandomip_%s.pcap\" % (self.out_path, frame_size),\n- )\n- )\n- self.tester.pktgen.clear_streams()\n- streams = self.pktgen_helper.prepare_stream_from_tginput(\n- tgenInput, 100, fields_config, self.tester.pktgen\n- )\n- trans_options = {\"delay\": 5, \"duration\": 20}\n- _, pps = self.tester.pktgen.measure_throughput(\n- stream_ids=streams, options=trans_options\n- )\n- Mpps = pps / 1000000.0\n- self.verify(\n- Mpps > 0,\n- \"%s can not receive packets of frame size %d\"\n- % (self.running_case, frame_size),\n- )\n- throughput = Mpps * 100 / float(self.wirespeed(self.nic, frame_size, 1))\n- self.throughput[mode][frame_size][self.nb_desc] = Mpps\n- results_row = [frame_size]\n- results_row.append(mode)\n- results_row.append(Mpps)\n- results_row.append(throughput)\n- self.result_table_add(results_row)\n- if queue_list:\n- self.check_packets_of_each_queue(queue_list=queue_list)\n \n def handle_expected(self, mode_list):\n \"\"\"\n- Update expected numbers to configurate file: $DTS_CFG_FOLDER/$suite_name.cfg\n+ Update expected numbers to configurate file: conf/$suite_name.cfg\n \"\"\"\n if load_global_setting(UPDATE_EXPECTED) == \"yes\":\n for mode in mode_list:\n@@ -1026,7 +2236,6 @@ class TestVirTioVhostCbdma(TestCase):\n )\n ret_datas[nb_desc] = deepcopy(ret_data)\n self.test_result[mode][frame_size] = deepcopy(ret_datas)\n- # Create test results table\n self.result_table_create(header)\n for mode in mode_list:\n for frame_size in self.test_parameters.keys():\n@@ -1037,9 +2246,7 @@ class TestVirTioVhostCbdma(TestCase):\n self.test_result[mode][frame_size][nb_desc][header[i]]\n )\n self.result_table_add(table_row)\n- # present test results to screen\n self.result_table_print()\n- # save test results as a file\n if self.save_result_flag:\n self.save_result(self.test_result, mode_list)\n \n", "prefixes": [ "V1", "2/3" ] }{ "id": 110135, "url": "