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

Liu, Yong yong.liu at intel.com
Wed Apr 18 04:18:44 CEST 2018


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