From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 5F0DA558D for ; Fri, 13 Jan 2017 02:08:29 +0100 (CET) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP; 12 Jan 2017 17:08:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,220,1477983600"; d="scan'208";a="921953983" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga003.jf.intel.com with ESMTP; 12 Jan 2017 17:08:28 -0800 Received: from fmsmsx102.amr.corp.intel.com (10.18.124.200) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 12 Jan 2017 17:08:28 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX102.amr.corp.intel.com (10.18.124.200) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 12 Jan 2017 17:08:27 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.20]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.204]) with mapi id 14.03.0248.002; Fri, 13 Jan 2017 09:08:24 +0800 From: "Liu, Yong" To: "Xu, GangX" , "dts@dpdk.org" CC: "Xu, GangX" Thread-Topic: [dts] [PATCH V1 2/2] add test plan interrupt_pmd Thread-Index: AQHSbJrmVr9Bsg5L002mB9CbT6Tu8qE1lx8w Date: Fri, 13 Jan 2017 01:08:23 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E62D45A07@SHSMSX103.ccr.corp.intel.com> References: <1484201605-41417-1-git-send-email-gangx.xu@intel.com> <1484201605-41417-2-git-send-email-gangx.xu@intel.com> In-Reply-To: <1484201605-41417-2-git-send-email-gangx.xu@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dts] [PATCH V1 2/2] add test plan interrupt_pmd X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 01:08:30 -0000 Gang, Some comments below. > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of xu,gang > Sent: Thursday, January 12, 2017 2:13 PM > To: dts@dpdk.org > Cc: Xu, GangX > Subject: [dts] [PATCH V1 2/2] add test plan interrupt_pmd >=20 > Signed-off-by: xu,gang > --- > test_plans/interrupt_pmd_test_plan.rst | 259 > +++++++++++++++++++++++++++++++++ > 1 file changed, 259 insertions(+) > create mode 100644 test_plans/interrupt_pmd_test_plan.rst >=20 > diff --git a/test_plans/interrupt_pmd_test_plan.rst > b/test_plans/interrupt_pmd_test_plan.rst > new file mode 100644 > index 0000000..42c319c > --- /dev/null > +++ b/test_plans/interrupt_pmd_test_plan.rst > @@ -0,0 +1,259 @@ > +.. Copyright (c) <2016>, Intel Corporation Please update copyright to 2017. > + All rights reserved. > + > + Redistribution and use in source and binary forms, with or without > + modification, are permitted provided that the following conditions > + are met: > + > + - Redistributions of source code must retain the above copyright > + notice, this list of conditions and the following disclaimer. > + > + - Redistributions in binary form must reproduce the above copyright > + notice, this list of conditions and the following disclaimer in > + the documentation and/or other materials provided with the > + distribution. > + > + - Neither the name of Intel Corporation nor the names of its > + contributors may be used to endorse or promote products derived > + from this software without specific prior written permission. > + > + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND > CONTRIBUTORS > + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS > + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE > + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, > INDIRECT, > + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > OR > + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > CONTRACT, > + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + ARISING IN ANY WAY OUT OF THE USE OF TH > + > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +One-shot Rx Interrupt > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +One-shot Rx interrupt feature will split rx interrupt handling from > +other interrupts like LSC interrupt. It implemented one handling > +mechanism to eliminate non-deterministic DPDK polling thread wakeup late= ncy. > + > +VFIO' multiple interrupt vectors support mechanism to enable multiple > +event fds serving per Rx queue interrupt handling. > +UIO has limited interrupt support, specifically it only support a > +single interrupt vector, which is not suitable for enabling multi > +queues Rx/Tx interrupt. > + > +Prerequisites > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Each of the 10Gb Ethernet* ports of the DUT is directly connected in > +full-duplex to a different port of the peer traffic generator. Please add more description as below: Assume PF port PCI addresses are 0000:08:00.0 and 0000:08:00.1, their Interfaces name are p786p1 and p786p2. Assume generated VF PCI address will be 0000:08:10.0, 0000:08:10.1. > + > +Iommu pass through feature has been enabled in kernel. > + intel_iommu=3Don iommu=3Dpt > + > +Support igb_uio and vfio driver, if used vfio, kernel need 3.6+ and > +enable vt-d in bios. When used vfio, requested to insmod two drivers vfi= o and > vfio-pci. > + > +Test Case1: PF interrupt pmd with uio > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Run l3fwd-power with one queue per port:: > + l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" > + > +Send one packet to Port0 and Port1, check that thread on core1 and > +core2 waked up: > + L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0 > + L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq0 > + > +Check the packet has been normally forwarded. > + > +After the packet forwarded, thread on core1 and core 2 will return to sl= eep. > + L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers > + L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq0 triggers > + > +Send packet flows to Port0 and Port1, check that thread on core1 and cor= e2 > will > +keep up awake. > + > +Test Case2: PF interrupt pmd with vfio > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Run l3fwd-power with one queue per port:: > + l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" > + > +Send one packet to Port0 and Port1, check that thread on core1 and > +core2 waked up: > + L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0 > + L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq0 > + > +Check the packet has been normally forwarded. > + > +After the packet forwarded, thread on core1 and core 2 will return to sl= eep. > + L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers > + L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq0 triggers > + > +Send packet flows to Port0 and Port1, check that thread on core1 and cor= e2 > will > +keep up awake. > + > +Test Case3: PF interrupt pmd multi queue with vfio > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > +Run l3fwd-power with two queues per port:: > + l3fwd-power -c 1f -n 4 -- -p 0x3 \ > + --config=3D"(0,0,1),(0,1,2)(1,0,3),(1,1,4)" > + > +Send packet with increased dest IP to Port0 and Port1, check that > +thread on > +core1,core2,core3,core4 waked up: > + L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0 > + L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq1 > + L3FWD_POWER: lcore 3 is waked up from rx interrupt on port1,rxq0 > + L3FWD_POWER: lcore 4 is waked up from rx interrupt on port1,rxq1 > + > +Check the packet has been normally forwarded. > + > +After the packet forwarded, thread on core1,core2,core3,core4 will > +return to sleep. > + L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers > + L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq1 triggers > + L3FWD_POWER: lcore 3 sleeps until interrupt on port1,rxq0 triggers > + L3FWD_POWER: lcore 4 sleeps until interrupt on port1,rxq1 triggers > + > +Send packet flows to Port0 and Port1, check that thread on > +core1,core2,core3, > +core4 will keep up awake. > + > +Test Case4: PF lsc interrupt with vfio > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Run l3fwd-power with one queue per port:: > + l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" > + > +Plug out Port0 cable, check that link down interrtup captured and > +handled by pmd driver. > + > +Plug out Port1 cable, check that link down interrtup captured and > +handled by pmd driver. > + > +Plug in Port0 cable, check that link up interrtup captured and handled > +by pmd driver. > + > +Plug in Port1 cable, check that link up interrtup captured and handled > +by pmd driver. > + > +Test Case5: PF interrupt max Rx queues with vfio > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Run l3fwd-power with 32 queues per port:: > + l3fwd-power -c ffffffff -n 4 -- -p 0x3 -P --config=3D"(0,0,0),(0,1,1),\ > + (0,2,2),(0,3,3),(0,4,4),(0,5,5),(0,6,6),(0,7,7),(0,8,8), > + > (0,9,9),(0,10,10),(0,11,11),(0,12,12),(0,13,13),(0,14,14),\ > + (0,15,15),\ > + > (1,0,16),(1,1,17),(1,2,18),(1,3,19),(1,4,20),(1,5,21),(1,6,22),\ > + (1,7,23),(1,8,24),(1,9,25),(1,10,26),(1,11,27),(1,12,28),\ > + (1,13,29),(1,14,30),\(1,15,31)" > + > +Send packet with increased dest IP to Port0, check that all threads wake= d up: > + > +Test Case6: VF interrupt pmd in VM with uio > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Create one VF per Port in host and add these two VFs into VM: > + rmmod ixgbe > + modprobe ixgbe max_vfs=3D1 > + virsh > + virsh # nodedev-dettach PCI_VF1 > + virsh # nodedev-dettach PCI_VF2 > + > +Assign mac address for VF: > + ip link set p786p1 vf 0 mac 00:11:22:33:44:55 > + ip link set p786p2 vf 0 mac 00:11:22:33:44:66 > + > +Start VM and start l3fwd-power with one queue per port in VM: > + l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" > + > +Send one packet to VF0 and VF1, check that thread on core1 and core2 wak= ed > up: > + L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0 > + L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq0 > + > +Check the packet has been normally forwarded. > + > +After the packet forwarded, thread on core1 and core 2 will return to sl= eep. > + L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers > + L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq0 triggers > + > +Send packet flows to VF0 and VF1, check that thread on core1 and core2 > +will keep up awake. > + > +Test Case7: VF interrupt pmd in Host with uio > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Create one VF per Port in host and make sure PF interface up: > + rmmod ixgbe > + modprobe ixgbe max_vfs=3D1 > + ifconfig p786p1 up > + ifconfig p786p2 up > + > +Assign mac address for VF: > + ip link set p786p1 vf 0 mac 00:11:22:33:44:55 > + ip link set p786p2 vf 0 mac 00:11:22:33:44:66 > + > +Bind VF device to igb_uio: > + ./tools/dpdk_nic_bind.py --bind=3Digb_uio 0000:08:10.0 0000:08:10.1 > + Tools folder has been changed, currently folder name is usertools. > +Start VM and start l3fwd-power with one queue per port in VM: > + l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" > + > +Send one packet to VF0 and VF1, check that thread on core1 and core2 wak= ed > up: > + L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0 > + L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq0 > + > +Check the packet has been normally forwarded. > + > +After the packet forwarded, thread on core1 and core 2 will return to sl= eep. > + L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers > + L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq0 triggers > + > +Send packet flows to VF0 and VF1, check that thread on core1 and core2 > +will keep up awake. > + > +Test Case8: VF interrupt pmd in Host with vfio > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Create one VF per Port in host and make sure PF interface up: > + rmmod ixgbe > + modprobe ixgbe max_vfs=3D2 > + ifconfig p786p1 up > + ifconfig p786p2 up > + > +Assign mac address for VF: > + ip link set p786p1 vf 0 mac 00:11:22:33:44:55 > + ip link set p786p2 vf 0 mac 00:11:22:33:44:66 > + > +Bind VF device to igb_uio: > + ./tools/dpdk_nic_bind.py --bind=3Digb_uio 0000:08:10.0 0000:08:10.1 Same as previous. > + > +Start VM and start l3fwd-power with two queues per port in VM: > + l3fwd-power -c 1f -n 4 -- -p 0x3 -P \ > + --config=3D"(0,0,1),(0,1,2)(1,0,3),(1,1,4)" > + > +Send packets with increased dest IP to Port0 and Port1, check that > +thread on > +core1,core2,core3,core4 waked up: > + L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0 > + L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq1 > + L3FWD_POWER: lcore 3 is waked up from rx interrupt on port1,rxq0 > + L3FWD_POWER: lcore 4 is waked up from rx interrupt on port1,rxq1 > + > +Check the packet has been normally forwarded. > + > +After the packet forwarded, thread on core1,core2,core3,core4 will > +return to sleep. > + L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers > + L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq1 triggers > + L3FWD_POWER: lcore 3 sleeps until interrupt on port1,rxq0 triggers > + L3FWD_POWER: lcore 4 sleeps until interrupt on port1,rxq1 triggers > + > +Send packet flows to Port0 and Port1, check that thread on > +core1,core2,core3, > +core4 will keep up awake. > + > +Test Case9: PF interrupt pmd latency test > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Setup validation scenario the case as test1 Send burst packet flow to > +Port0 and Port1, use IXIA capture the maxmium latecny. > + > +Compare latency(l3fwd-power PF interrupt pmd with uio) with l3fwd latenc= y. > + > +Setup validation scenario the case as test2 Send burst packet flow to > +Port0 and Port1, use IXIA capture the maxmium latecny. > + > +Compare latency(l3fwd-power PF interrupt pmd with vfio) with l3fwd laten= cy. > \ No newline at end of file I'm not sure about the format, but the last line should not be here. > -- > 1.9.3