From patchwork Fri Jul 2 15:49:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Yinan" X-Patchwork-Id: 95176 X-Patchwork-Delegate: lijuan.tu@intel.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 77DBEA0A0C; Fri, 2 Jul 2021 09:05:39 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4A51440141; Fri, 2 Jul 2021 09:05:39 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id 59F774003E for ; Fri, 2 Jul 2021 09:05:37 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10032"; a="269813183" X-IronPort-AV: E=Sophos;i="5.83,316,1616482800"; d="scan'208";a="269813183" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jul 2021 00:05:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,316,1616482800"; d="scan'208";a="559687351" Received: from dpdk-yinan-ntb1.sh.intel.com ([10.67.119.39]) by fmsmga001.fm.intel.com with ESMTP; 02 Jul 2021 00:05:34 -0700 From: Yinan Wang To: dts@dpdk.org Cc: Yinan Wang Date: Fri, 2 Jul 2021 11:49:14 -0400 Message-Id: <20210702154914.837623-1-yinan.wang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [dts] [PATCH v2] test_plans/vhost_cbdma_test_plan.rsttest_plans/vhost_cbdma_test_plan X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" 1. change cases using imix pkts for better coverage 2. add one cbdma performance case Signed-off-by: Yinan Wang --- test_plans/vhost_cbdma_test_plan.rst | 212 +++++++++++++-------------- 1 file changed, 102 insertions(+), 110 deletions(-) diff --git a/test_plans/vhost_cbdma_test_plan.rst b/test_plans/vhost_cbdma_test_plan.rst index c827adaa..325b5d87 100644 --- a/test_plans/vhost_cbdma_test_plan.rst +++ b/test_plans/vhost_cbdma_test_plan.rst @@ -126,103 +126,54 @@ TG --> NIC --> Vhost --> Virtio--> Vhost --> NIC --> TG >set fwd mac >start -Test Case2: Split ring dynamic queue number test for DMA-accelerated vhost Tx operations -======================================================================================== +Test Case 2: Split ring dynamic queue number test for DMA-accelerated vhost Tx operations +========================================================================================= -1. Bind four cbdma channels and one nic port to igb_uio, then launch vhost by below command:: +1. Bind 8 cbdma channels and one nic port to igb_uio, then launch vhost by below command:: ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 28-29 \ - --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=2,client=1,dmas=[txq0@80:04.5;txq1@80:04.6],dmathr=1024' \ - -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=2 --rxq=2 - >set fwd mac - >start + --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=8,client=1' \ + -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=8 --rxq=8 + >set fwd mac + >start 2. Launch virtio-user by below command:: ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 30-31 --no-pci --file-prefix=virtio \ - --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=/tmp/s0,mrg_rxbuf=1,in_order=1,queues=2,server=1 \ - -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --nb-cores=1 --txd=1024 --rxd=1024 --txq=2 --rxq=2 + --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=/tmp/s0,mrg_rxbuf=1,in_order=1,queues=8,server=1 \ + -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --nb-cores=1 --txd=1024 --rxd=1024 --txq=8 --rxq=8 >set fwd mac >start -3. Send packets with packet size [64,1518] from packet generator with random ip, check perforamnce can get target. +3. Send imix packets from packet generator with random ip, check perforamnce can get target. -4. Stop vhost port, check vhost RX and TX direction both exist packtes in two queues from vhost log. +4. Stop vhost port, check vhost RX and TX direction both exist packtes in 8 queues from vhost log. -5. On virtio-user side, dynamic change rx queue numbers from 2 queue to 1 queues, then check one queue RX/TX can work normally:: +5. Quit vhost port and relaunch vhost with 4 queues w/ cbdma:: - testpmd>port stop all - testpmd>port config all rxq 1 - testpmd>port config all txq 1 - testpmd>port start all - testpmd>start - testpmd>show port stats all - -6. Relaunch virtio-user with vectorized path and 2 queues:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 30-31 --no-pci --file-prefix=virtio \ - --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=/tmp/s0,mrg_rxbuf=0,in_order=1,vectorized=1,queues=2,server=1 \ - -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=2 --rxq=2 + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 28-29 \ + --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=4,client=1,dmas=[txq0@00:04.0;txq1@00:04.1;txq2@00:04.2;txq3@00:04.3],dmathr=1024' \ + -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=4 --rxq=4 >set fwd mac >start -7. Send packets with packet size [64,1518] from packet generator with random ip, check perforamnce can get target. +6. Send imix packets from packet generator with random ip, check perforamnce can get target. -8. Stop vhost port, check vhost RX and TX direction both exist packtes in queue0 from vhost log. +7. Stop vhost port, check vhost RX and TX direction both exist packtes in 4 queues from vhost log. -9. On vhost side, dynamic change rx queue numbers from 2 queue to 1 queues, then check one queue RX/TX can work normally:: - - testpmd>port stop all - testpmd>port config all rxq 1 - testpmd>port config all txq 1 - testpmd>port start all - testpmd>start - testpmd>show port stats all - -10. Relaunch vhost with another two cbdma channels and 2 queueus, check perforamnce can get target:: +8. Quit vhost port and relaunch vhost with 8 queues w/ cbdma:: ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 28-29 \ - --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=2,client=1,dmas=[txq0@00:04.5;txq1@00:04.6],dmathr=512' \ - -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=2 --rxq=2 - >set fwd mac - >start - -11. Stop vhost port, check vhost RX and TX direction both exist packtes in two queues from vhost log. - -Test Case3: CBDMA threshold value check -======================================== - -1. Bind four cbdma port to igb_uio, then launch vhost by below command:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \ - --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@80:04.0;txq1@80:04.1],dmathr=512' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@80:04.2;txq1@80:04.3],dmathr=4096' -- \ - -i --nb-cores=1 --rxq=2 --txq=2 - >start - -2. Launch virtio-user1:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \ - --no-pci --file-prefix=virtio1 \ - --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=0,mrg_rxbuf=1,in_order=0,queue_size=4096 \ - -- -i --nb-cores=1 --rxq=2 --txq=2 + --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=8,client=1,dmas=[txq0@80:04.0;txq1@80:04.1;txq2@80:04.2;txq3@80:04.3;txq4@80:04.4;txq5@80:04.5;txq6@80:04.6;txq7@80:04.7],dmathr=1024' \ + -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=8 --rxq=8 + >set fwd mac >start -3. Launch virtio-user0:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 \ - --no-pci --file-prefix=virtio \ - --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=0,mrg_rxbuf=1,in_order=0,queue_size=4096 \ - -- -i --nb-cores=1 --rxq=2 --txq=2 - >start - -4. Check the cbdma threshold value for each vhost port can be config correct from vhost log:: +9. Send imix packets from packet generator with random ip, check perforamnce can get target. - dma parameters: vid0,qid0,dma*,threshold:512 - dma parameters: vid0,qid2,dma*,threshold:512 - dma parameters: vid1,qid0,dma*,threshold:4096 - dma parameters: vid1,qid2,dma*,threshold:4096 +10. Stop vhost port, check vhost RX and TX direction both exist packtes in 8 queues from vhost log. -Test Case 4: PVP packed ring all path with DMA-accelerated vhost enqueue +Test Case 3: PVP packed ring all path with DMA-accelerated vhost enqueue ======================================================================== Packet pipeline: @@ -293,65 +244,106 @@ TG --> NIC --> Vhost --> Virtio--> Vhost --> NIC --> TG >set fwd mac >start -Test Case5: Packed ring dynamic queue number test for DMA-accelerated vhost Tx operations -========================================================================================= +Test Case 4: Packed ring dynamic queue number test for DMA-accelerated vhost Tx operations +========================================================================================== -1. Bind four cbdma channels and one nic port to igb_uio, then launch vhost by below command:: +1. Bind 8 cbdma channels and one nic port to igb_uio, then launch vhost by below command:: ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 28-29 \ - --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=2,client=1,dmas=[txq0@80:04.5;txq1@80:04.6],dmathr=1024' \ - -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=2 --rxq=2 - >set fwd mac - >start + --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=8,client=1' \ + -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=8 --rxq=8 + >set fwd mac + >start 2. Launch virtio-user by below command:: ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 30-31 --no-pci --file-prefix=virtio \ - --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=/tmp/s0,mrg_rxbuf=1,in_order=1,queues=2,server=1,packed_vq=1 \ - -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --nb-cores=1 --txd=1024 --rxd=1024 --txq=2 --rxq=2 + --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=/tmp/s0,mrg_rxbuf=1,in_order=1,queues=8,server=1,packed_vq=1 \ + -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --nb-cores=1 --txd=1024 --rxd=1024 --txq=8 --rxq=8 >set fwd mac >start -3. Send imix packets [64,1518] from packet generator with random ip, check perforamnce can get target. +3. Send imix packets from packet generator with random ip, check perforamnce can get target. -4. Stop vhost port, check vhost RX and TX direction both exist packets in two queues from vhost log. +4. Stop vhost port, check vhost RX and TX direction both exist packtes in 8 queues from vhost log. -5. On virtio-user side, dynamic change rx queue numbers from 2 queue to 1 queues, then check one queue RX/TX can work normally:: +5. Quit vhost port and relaunch vhost with 4 queues w/ cbdma:: - testpmd>port stop all - testpmd>port config all rxq 1 - testpmd>port config all txq 1 - testpmd>port start all - testpmd>start - testpmd>show port stats all + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 28-29 \ + --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=4,client=1,dmas=[txq0@80:04.0;txq1@80:04.1;txq2@80:04.2;txq3@80:04.3],dmathr=1024' \ + -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=4 --rxq=4 + >set fwd mac + >start -6. Relaunch virtio-user with vectorized path and 2 queues:: +6. Send imix packets from packet generator with random ip, check perforamnce can get target. - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 30-31 --no-pci --file-prefix=virtio \ - --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=/tmp/s0,mrg_rxbuf=0,in_order=1,vectorized=1,queues=2,server=1,packed_vq=1 \ - -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=2 --rxq=2 +7. Stop vhost port, check vhost RX and TX direction both exist packtes in 4 queues from vhost log. + +8. Quit vhost port and relaunch vhost with 8 queues w/ cbdma:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 28-29 \ + --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=8,client=1,dmas=[txq0@80:04.0;txq1@80:04.1;txq2@80:04.2;txq3@80:04.3;txq4@80:04.4;txq5@80:04.5;txq6@80:04.6;txq7@80:04.7],dmathr=1024' \ + -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=8 --rxq=8 >set fwd mac >start -7. Send imix packets [64,1518] from packet generator with random ip, check perforamnce can get target. +9. Send imix packets from packet generator with random ip, check perforamnce can get target. -8. Stop vhost port, check vhost RX and TX direction both exist packets in queue0 from vhost log. +10. Stop vhost port, check vhost RX and TX direction both exist packtes in 8 queues from vhost log. -9. On vhost side, dynamic change rx queue numbers from 2 queue to 1 queues, then check one queue RX/TX can work normally:: +Test Case 5: Compare PVP split ring performance between CPU copy, CBDMA copy and Sync copy +========================================================================================== + +1. Bind one cbdma port and one nic port which on same numa to igb_uio, then launch vhost by below command:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 2-3 --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=1,client=1,dmas=[txq0@00:01.0],dmathr=1024' \ + -- -i --nb-cores=1 --txd=1024 --rxd=1024 + >set fwd mac + >start + +2. Launch virtio-user with inorder mergeable path:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --no-pci --file-prefix=virtio \ + --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=/tmp/s0,mrg_rxbuf=1,in_order=1,queues=1,server=1 \ + -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --nb-cores=1 --txd=1024 --rxd=1024 + >set fwd mac + >start + +3. Send packets with 64b and 1518b seperately from packet generator, record the throughput as sync copy throughput for 64b and cbdma copy for 1518b:: - testpmd>port stop all - testpmd>port config all rxq 1 - testpmd>port config all txq 1 - testpmd>port start all - testpmd>start testpmd>show port stats all -10. Relaunch vhost with another two cbdma channels and 2 queueus, check perforamnce can get target:: +4.Quit vhost side, relaunch with below cmd:: - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 28-29 \ - --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=2,client=1,dmas=[txq0@00:04.5;txq1@00:04.6],dmathr=512' \ - -- -i --nb-cores=1 --txd=1024 --rxd=1024 --txq=2 --rxq=2 - >set fwd mac - >start + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 2-3 --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=1,client=1,dmas=[txq0@00:01.0],dmathr=2000' \ + -- -i --nb-cores=1 --txd=1024 --rxd=1024 + >set fwd mac + >start + +5. Send packets with 1518b from packet generator, record the throughput as sync copy throughput for 1518b:: + + testpmd>show port stats all + +6. Quit two testpmd, relaunch vhost by below command:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 2-3 --file-prefix=vhost --vdev 'net_vhost0,iface=/tmp/s0,queues=1' \ + -- -i --nb-cores=1 --txd=1024 --rxd=1024 + >set fwd mac + >start + +7. Launch virtio-user with inorder mergeable path:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --no-pci --file-prefix=virtio \ + --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=/tmp/s0,mrg_rxbuf=1,in_order=1,queues=1 \ + -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --nb-cores=1 --txd=1024 --rxd=1024 + >set fwd mac + >start + +8. Send packets with 64b from packet generator, record the throughput as cpu copy for 64b:: + + testpmd>show port stats all + +9. Check performance can meet below requirement:: -11. Stop vhost port, check vhost RX and TX direction both exist packets in two queues from vhost log. + (1)CPU copy vs. sync copy delta < 10% for 64B packet size + (2)CBDMA copy vs sync copy delta > 5% for 1518 packet size