[dts] [PATCH V1 1/2] multiple_pthread: Add test plan

Liu, Yong yong.liu at intel.com
Tue Jun 27 18:59:11 CEST 2017


Lijuan,
I've known that this case should cover combinations as more as possible. My ask is just to add some descriptions about what the meaning of these combinations.
Like --lcores='0 at 8,(4-5)@(8-11)', it will start master lcore on core 8 and lcore4-5 on core 8-11. 

For dump command, I think you can use command option replace of args option. With command option, will show that where lcore thread is running. 
ps -C testpmd -L -opid,tid,%cpu,psr,comm

[root at dpdk-test38 ~]# ps -C testpmd -L -opid,tid,%cpu,psr,comm
  PID   TID %CPU PSR COMMAND
40971 40971  1.8   8 testpmd
40971 40974  0.0   8 eal-intr-thread
40971 40975  3.3   9 lcore-slave-4
40971 40976  0.0   9 lcore-slave-5
40971 40977  0.0   8 pdump-thread


Thanks,
Marvin

> -----Original Message-----
> From: Tu, LijuanX A
> Sent: Sunday, June 25, 2017 7:00 PM
> To: Liu, Yong <yong.liu at intel.com>; dts at dpdk.org
> Subject: RE: [dts] [PATCH V1 1/2] multiple_pthread: Add test plan
> 
> Hi liuyong,
> 
> This is simply random combination test. I will send V2 immediately
> The script is fixed selection of several combinations,
> I think it's not rigorous , but it 's difficult for us to randomly
> generated the combined parameters.
> 
> 
> 
> -----Original Message-----
> From: Liu, Yong
> Sent: Saturday, June 24, 2017 1:18 AM
> To: Tu, LijuanX A; dts at dpdk.org
> Cc: Tu, LijuanX A
> Subject: RE: [dts] [PATCH V1 1/2] multiple_pthread: Add test plan
> 
> Lijuan, some comments below.
> 
> > -----Original Message-----
> > From: dts [mailto:dts-bounces at dpdk.org] On Behalf Of Lijuan Tu
> > Sent: Thursday, June 15, 2017 9:59 PM
> > To: dts at dpdk.org
> > Cc: Tu, LijuanX A <lijuanx.a.tu at intel.com>
> > Subject: [dts] [PATCH V1 1/2] multiple_pthread: Add test plan
> >
> > Signed-off-by: Lijuan Tu <lijuanx.a.tu at intel.com>
> > ---
> >  test_plans/multiple_pthread_test_plan.rst | 151
> > ++++++++++++++++++++++++++++++
> >  1 file changed, 151 insertions(+)
> >  create mode 100644 test_plans/multiple_pthread_test_plan.rst
> >
> > diff --git a/test_plans/multiple_pthread_test_plan.rst
> > b/test_plans/multiple_pthread_test_plan.rst
> > new file mode 100644
> > index 0000000..4de4643
> > --- /dev/null
> > +++ b/test_plans/multiple_pthread_test_plan.rst
> > @@ -0,0 +1,151 @@
> > +.. Copyright (c) < 2017 >, Intel Corporation
> > +        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 THIS SOFTWARE, EVEN IF ADVISED
> > +   OF THE POSSIBILITY OF SUCH DAMAGE.
> > +
> > +=====================
> > +Multiple Pthread Test
> > +=====================
> > +
> > +
> > +Description
> > +-----------
> > +
> > +This test is a basic multiple pthread test which demonstrates the
> > +basics of control group. Cgroup is a Linux kernel feature that
> > +limits, accounts for and isolates the resource usage, like CPU,
> > +memory, disk I/O, network, etc of a collection of processes. Now, it's
> focus on the CPU usage.
> > +
> > +Prerequisites
> > +-------------
> > +Support igb_uio driver, kernel is 3.11+.
> > +Use "modeprobe uio" "modprobe igb_uio" and then use
> > +"./tools/dpdk_nic_bind.py --bind=igb_uio device_bus_id" to bind the
> > ports.
> > +
> > +Assuming that an Intel� DPDK build has been set up and the testpmd
> > +applications have been built.
> > +
> > +Os required: Linux and FreeBSD
> > +
> > +Test Case 1: Basic operation
> > +----------------------------
> > +
> > +To run the application, start the testpmd with the lcoress all
> > +running
> > with
> > +threads and also the unique core assigned, command as follows::
> > +
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='0 at 8,(4-5)@9'
> > + -n 4
> > -- -i --portmask=0xc
> > +    EAL: Master lcore 0 is ready (tid=ffd4900;cpuset=[8])
> > +    EAL: lcore 4 is ready (tid=873e7700;cpuset=[9])
> > +    EAL: lcore 5 is ready (tid=873e7700;cpuset=[9])
> > +
> > +To check the output, we shall make sure the lcore are init on the
> > +correct
> > cpu.
> > +e.g. Duing INIT log we can found below:
> > +
> > +The process should start successfully and display a command prompt as
> > follows::
> > +
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='0 at 8,(4-5)@9'
> > + -n 4
> > -- -i --portmask=0xc
> > +    Checking link statuses...
> > +    Port 0 Link Up - speed 10000 Mbps - full-duplex
> > +    Port 1 Link Up - speed 10000 Mbps - full-duplex
> > +    Done
> > +
> > +Start the packet forwarding as follows::
> > +
> > +    testpmd>set fwd mac
> > +
> > +Before running the test, make sure the core is a unique one
> > +otherwise, the throughput will be floating on different cores,
> > +another thing is to make sure all the logic cores are running,
> > +command as
> > follows::
> > +
> > +    testpmd>set corelist 4,5
> > +
> > +Pay attention that set corelist need to be configured before start,
> > +otherwise, it will not work::
> > +
> > +    testpmd>start
> > +    testpmd>show config fwd
> > +
> > +Using the command to find the threads that's running, as follows::
> > +
> > +    ps -C testpmd -L -opid,tid,%cpu,psr,args
> > +
> > +Result as follows:
> > +
> > +       PID    TID %CPU PSR COMMAND
> > +    179459 179459  0.2   8 ./x86_64-native-linuxapp-gcc/app/testpmd --
> > lcores=0 at 8,(4-5)@9 -n 4 -- -i --portmask=0xc
> > +    179459 179460  0.0  21 ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --
> > lcores=0 at 8,(4-5)@9 -n 4 -- -i --portmask=0xc
> > +    179461  0.0  21 ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores=0
> > at 8,(4-5)@9 -n 4 -- -i --portmask=0xc
> > +    179459 179462 80.4   9 ./x86_64-native-linuxapp-gcc/app/testpmd --
> > lcores=0 at 8,(4-5)@9 -n 4 -- -i --portmask=0xc
> > +    179459 179463  0.0   9 ./x86_64-native-linuxapp-gcc/app/testpmd --
> > lcores=0 at 8,(4-5)@9 -n 4 -- -i --portmask=0xc
> > +
> > +You will see that there are two threads running on core 9.
> > +The last 2 threads are running threads, their TID will be assigned to
> > +the
> > tasks in the folder thread0.
> > +
> > +    cd /sys/fs/cgroup/cpu/dpdk/thread0
> > +    echo 179462 > tasks
> > +    echo 179463 > tasks
> > +
> > +Assgined the percentage of cpu these two threads occupy as follows:
> > +
> Typo issue here, "assigned" should be "assigned".
> 
> > +    echo 10000 > cpu.cfs_quota_us
> > +
> > +This means the two threads will totally occupy 10% of the CPU and each
> 5%.
> > +
> > +
> > +Test Case 2: Positive Test
> > +--------------------------
> > +
> Please add some description of these settings.
> 
> 
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='0 at
> > + 8,(4-5)@(8-
> > 11)' -n 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='1,2@(0-4,6),(3-
> > 4,6)@5,(7,8)' -n 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --
> > txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --
> > lcores='(0,CONFIG_RTE_MAX_LCORE-1)@(4,5)' -n 4 -- -i --txfreet=32 --
> > rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='(0,64-66)@(4,5)' -
> > n 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='2-5,6,7-9' -n
> > + 4 --
> > -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='2, (3-5)@ 3'
> > + -n 4
> > -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='(0,7-4)@(4,5)'
> > + -n
> > 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +
> > +Test Case 3: Negative Test
> > +--------------------------
> > +
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='(0-,4-7)@(4,5)' -n
> > 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='(-1,4-7)@(4,5)' -n
> > 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='(0,4-7-9)@(4,5)' -
> > n 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='(0,abcd)@(4,5)' -n
> > 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='(0,4-7)@(1-,5)' -n
> > 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='(0,4-7)@(-1,5)' -n
> > 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='(0,4-7)@(4,5-8-
> 9)'
> > -n 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='(0,4-7)@(abc,5)' -
> > n 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='(0,4-7)@(4,xyz)' -
> > n 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='(0,4-7)=(8,9)'
> > + -n
> > 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='2,3 at 4,(0-
> > 1,,4))' -n 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01
> > --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='[0-,4-7]@(4,5)' -n
> > 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd
> > + --lcores='(0-,4-7)@[4,5]' -n
> > 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='3-4 at 3,2 at 5-
> 6'
> > -n 4 -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='2,,3''2--3' -n
> > + 4 -
> > - -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > +    ./x86_64-native-linuxapp-gcc/app/testpmd --lcores='2,,,3''2--3'
> > + -n 4
> > -- -i --txfreet=32 --rxfreet=32 --txqflags=0xf01 --txrst=32
> > --
> > 2.5.0



More information about the dts mailing list