[dts] L2FW fails with 'Not enough cores for performance!!!' (framework/etgen, py)

Liu, Yong yong.liu at intel.com
Thu Apr 19 08:02:52 CEST 2018


Kevin,
You can use the combination pktgen-3.5.0 + dpdk 18.02. Meanwhile I will submit one patch for enabling default dpdk-pktgen support.

Thanks,
Marvin

> -----Original Message-----
> From: Kevin Wilson [mailto:wkevils at gmail.com]
> Sent: Thursday, April 19, 2018 2:11 AM
> To: Liu, Yong <yong.liu at intel.com>
> Cc: dts at dpdk.org
> Subject: Re: [dts] L2FW fails with 'Not enough cores for performance!!!'
> (framework/etgen, py)
> 
> Hi Marvin,
> I tried your suggested fix and I am passing that obstacle of
> 'Not enough cores for performance!!!' error.
> 
> However, I do encounter later on an error of "illegal instruction"
> for ./pktgen,
> so you were right about your assumption.
> 
> Is it possible to upload the pktgen source code that you are using to
> the DTS repo so
> me and others can build it  to overcome this pitfall? I am not sure as
> to which dpdk-pktgen version to use ( also
> it could be that you use dpdk-pktgen patches which are mandatory for
> running DTS succesfull)
> 
> 
> Regards,
> Kevin
> 
> On Wed, Apr 18, 2018 at 5:18 AM, Liu, Yong <yong.liu at intel.com> wrote:
> > Kevin,
> > According to the log, all four cores are physical cores and no hyper-
> threading enabled.
> > DTS will allocate two physical cores for each port which will require
> four cores within you setup.
> > By default bypass_core0 setting is enabled, so only three cores are
> available and can’t start dpdk pktgen.
> >
> > You can simply change the code in etgen.py and try again.
> >
> > cores = self.tester.get_reserved_core("1C", socket=numa)
> > ...
> > map_cmd += "[%s:%s].%d, " % (cores[0], cores[0], port_map[port])
> >
> >
> > There's another potential error which may occur is that dpdk-pktgen
> can't start.
> > It is because of the binary was built on our xeon server. It may
> contains some instructions not supported on your cpu.
> > If that issue happened, you need to build dpdk-pktgen on your own server.
> >
> > Thanks,
> > Marvin
> >
> >> -----Original Message-----
> >> From: Kevin Wilson [mailto:wkevils at gmail.com]
> >> Sent: Wednesday, April 18, 2018 2:52 AM
> >> To: Liu, Yong <yong.liu at intel.com>
> >> Cc: dts at dpdk.org
> >> Subject: Re: [dts] L2FW fails with 'Not enough cores for
> performance!!!'
> >> (framework/etgen, py)
> >>
> >> Hi,
> >> Thanks for you quick reply, Yong Liu!
> >>
> >> First, I want to mention that I am running the tests on two hosts, and
> >> none of them is a VM.
> >> Second, as I mention in the mail, when I ran:
> >>
> >> cat /proc/cpuinfo | grep -i processor
> >> I see 4 cores, thus:
> >> processor       : 0
> >> processor       : 1
> >> processor       : 2
> >> processor       : 3
> >>
> >> Doesn't this indicate 4 physical processors?
> >> Another information I want to add is the output of lspcu:
> >> lscpu
> >> Architecture:          x86_64
> >> CPU op-mode(s):        32-bit, 64-bit
> >> Byte Order:            Little Endian
> >> CPU(s):                4
> >> On-line CPU(s) list:   0-3
> >> Thread(s) per core:    1
> >> Core(s) per socket:    4
> >> Socket(s):             1
> >> NUMA node(s):          1
> >> Vendor ID:             GenuineIntel
> >> CPU family:            6
> >> Model:                 45
> >> Stepping:              7
> >> CPU MHz:               1228.312
> >> BogoMIPS:              4799.79
> >> Virtualization:        VT-x
> >> L1d cache:             32K
> >> L1i cache:             32K
> >> L2 cache:              256K
> >> L3 cache:              10240K
> >> NUMA node0 CPU(s):     0-3
> >>
> >> And running:
> >> /work/src/dpdk-17.11/usertools/cpu_layout.py
> >> Gives:
> >> ======================================================================
> >> Core and Socket Information (as reported by '/sys/devices/system/cpu')
> >> ======================================================================
> >>
> >> cores =  [0, 1, 2, 3]
> >> sockets =  [0]
> >>
> >>        Socket 0
> >>        --------
> >> Core 0 [0]
> >> Core 1 [1]
> >> Core 2 [2]
> >> Core 3 [3]
> >>
> >> This this info indicate 4 physical cores ?
> >>
> >> Second question is: should the tester have exactly the same
> >> number of cores, sockets and threads as the DUT? I don't think I saw
> >> such a requirement in the docs, but maybe
> >> I am wrong.
> >>
> >>
> >> Regards,
> >> Kevin
> >>
> >> On Tue, Apr 17, 2018 at 4:34 AM, Liu, Yong <yong.liu at intel.com> wrote:
> >> > Hi Kevin,
> >> > DTS will try to allocate two physical cores for DPDK based pktgen.
> >> Meanwhile will skip first physical cores for system usage.
> >> > I'm not sure whether the four cores on your server are all physical
> >> cores. If not, may met such issue.
> >> >
> >> > Thanks,
> >> > Marvin
> >> >
> >> >> -----Original Message-----
> >> >> From: dts [mailto:dts-bounces at dpdk.org] On Behalf Of Kevin Wilson
> >> >> Sent: Monday, April 16, 2018 7:47 PM
> >> >> To: dts at dpdk.org
> >> >> Subject: [dts] L2FW fails with 'Not enough cores for performance!!!'
> >> >> (framework/etgen, py)
> >> >>
> >> >> Hi,
> >> >> I am trying to run DTS L2FW performance between a tester and a DUT
> >> using
> >> >> DTS
> >> >> (with scapy, not with IXIA) and I am getting the following error:
> >> >> TestL2fwd: Test Case test_perf_l2fwd_performance Result FAILED: 'Not
> >> >> enough cores for performance!!!'
> >> >> and the DTS app terminates.
> >> >> I located the error, and it is from packet_generator() method of
> >> >> framework/etgen.py
> >> >> What can be the reason for this  ?
> >> >>
> >> >> Further details:
> >> >> The execution.cfg file I am using is:
> >> >> [Execution1]
> >> >> crbs=IP adderss of DUT
> >> >> drivername=igb_uio
> >> >> test_suites=
> >> >>        l2fwd
> >> >> targets=
> >> >>     x86_64-native-linuxapp-gcc
> >> >> parameters=nic_type=niantic:perf=true
> >> >>
> >> >> I have 2 machine: host A is the tester, and host B is the DUT.
> >> >> Both have IXGBE nics, and each of these 2 nics have 2 ports.
> >> >> On the tester, the PCI ids of the IXGBEs are 0000:04:00.0 and
> >> 0000:04:00.1
> >> >> On the DUT, the PCI ids of the IXGBEs are 0000:06:00.0 and
> 0000:06:00.1
> >> >> The IXGBEs are 8086:158b on both hosts
> >> >>
> >> >> I have two configuration files:
> >> >> conf/ports.cfg:
> >> >> [DUT IP]
> >> >> ports =
> >> >>     pci=0000:06:00.0,peer=0000:04:00.0;
> >> >>     pci=0000:06:00.1,peer=0000:04:00.1;
> >> >>
> >> >>
> >> >> conf/crb.cfg:
> >> >>
> >> >> [DUT IP]
> >> >> dut_ip=DUT IP
> >> >> dut_user=root
> >> >> dut_passwd=dut_password
> >> >> os=linux
> >> >> tester_ip=TESTER IP
> >> >> tester_passwd=tester_password
> >> >> channels=4
> >> >> bypass_core0=False
> >> >>
> >> >> Both hosts have 4 cores (as is shown by "cat /proc/cpuinfo | grep -i
> >> >> processor")
> >> >> I am running DTS by:
> >> >> ./dts --git=v17.11  --config-file=myConfig.cfg
> >> >>
> >> >>
> >> >> Regards,
> >> >> Kevin


More information about the dts mailing list