How to run two DPDK instances simultaneously in the lx2160ardb board

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to run two DPDK instances simultaneously in the lx2160ardb board

Jump to solution
3,377 Views
zhanghonghui
Contributor I
I am getting something error when using dprc.3 to run my DPDK application while using dprc.2  works fine.
Our solution need run two DPDK instances simultaneously in the lx2160ardb board, but seems that the MC firmware does not response
to GPP's(General Purpose Processor) request if there's more than 2 DPRCs was created.
 
I'm using the lsdk20.04 BSP which I downloaded from NXP website.
 
Could you help to take a look at this issue? Or could you please help to contact somebody for the help?
 
I collected the kernel logs, syslogs, all the information about DPRCs, dprc created logs and the blocked point of DPDK application which I got from GDB.
The mainly error seems is that some MC resources could not be allocated when creating DPRC.3, and other is that the software GPP was blocked in send command to MC.
 
Using High Performance Buffers
MC error: No resources (status 0x8)
Invalid --object arg: ''
MC error: No resources (status 0x8)
Invalid --object arg: ''
 
(gdb) bt
#0  rte_pause () at /home/zhanghh/16.latest-dpdk/dpdk/build/include/rte_pause_64.h:17
#1  rte_spinlock_lock (sl=<optimized out>) at /home/zhanghh/16.latest-dpdk/dpdk/build/include/generic/rte_spinlock.h:66
#2  mc_send_command (mc_io=0x17ffe91c0, cmd=0xffffd18409a0, cmd@entry=0xffffd18409b0) at /home/zhanghh/16.latest-dpdk/dpdk/drivers/bus/fslmc/mc/mc_sys.c:63
#3  0x000000000056b4d4 in dpio_open (mc_io=<optimized out>, cmd_flags=cmd_flags@entry=0, dpio_id=<optimized out>, token=token@entry=0x17ffe92f0)
    at /home/zhanghh/16.latest-dpdk/dpdk/drivers/bus/fslmc/mc/dpio.c:46
 
please check the attachment for detail, If any more logs was needed, please just let me know.
 
PS. the DPDK software version is git clone from:
 
the last git commit is:
commit a36da6a94243015b228c15b8b9aa1e650fd4b96d
Merge: 3e8b2c4 eb00ab7
Author: Sachin Saxena <sachin.saxena@nxp.com>
Date:   Wed Sep 18 15:20:47 2019 +0200
 
    Merge pull request #1050 in GITAM/dpdk from 18.11-qoriq-dev to 18.11-qoriq
 
    * commit 'eb00ab73ab7df8df0e3a0dc72d97c425da2de5a3':
      PVT: examples/l3fwd: fix jumbo packet drop issue
 
 
thanks in advance.
0 Kudos
1 Solution
3,348 Views
bpe
NXP Employee
NXP Employee

You are probably hitting the hardware maximum number of DPIOs. In dprc.2 I see 34 DPIOs, that is the default number created by the script.  In dprc.1 there are already 16 dpios, each DPIO assigned to a CPU. When the script creates the third dprc it requests for another 34 DPIOs. In total there are 34 + 34 + 16 dpios which exceeds the total number available on LX2 that is 67. Try reducing the number of requested resources, do not run with the default each time you create a new dprc.

Hope this helps,
Platon

View solution in original post

0 Kudos
6 Replies
3,362 Views
bpe
NXP Employee
NXP Employee

Did you try following the scenario described in the LSDK documentation strictly? If so, did it succeed on your board?

There are no known problems with that scenario, moreover, there are known
successful use cases that create as much as eight DPRCs, each DPRC running a
separate application and each application using only one cpu

It is not clear what fails in your case. The console logs you provided display
only error messages but not the commands that cause them to appear. If you wish
more help with respect to this issue, please:

- reproduce the problem with the LSDK-supplied CLI tools.
- provide a console log that displays all commands you issue,  along with the system
reaction to them.

Best Regards,
Platon

 

0 Kudos
3,354 Views
zhanghonghui
Contributor I

Thanks for your reply,

I'm following the follow command to startup a DPDK application in DPRCs:

1. cd /usr/local/dpdk/dpaa2/, using the command

./dynamic_dpl.sh dpmac.3

to create dprc.2

2. ./dynamic_dpl.sh dpmac.4

to create dprc.3

3. mount hugepages:

mount -t hugetlbfs none /mnt/hugepages

4. export DRPC=dprc.2

5. using testpmd to start a dpdk application in dprc.2:

testpmd -l 9-13 -- -i

it works fine, and stop the dpdk application.

6. export DPRC=dprc.3

7. using testpmd to start a dpdk application in dprc.3:

testpmd -l 9-13 -- -i

it blocked in MC response, as I using gdb attached the process in previous reply.

 

the attachment was the console logs which I issue all my operations and got the result.

0 Kudos
3,349 Views
bpe
NXP Employee
NXP Employee

You are probably hitting the hardware maximum number of DPIOs. In dprc.2 I see 34 DPIOs, that is the default number created by the script.  In dprc.1 there are already 16 dpios, each DPIO assigned to a CPU. When the script creates the third dprc it requests for another 34 DPIOs. In total there are 34 + 34 + 16 dpios which exceeds the total number available on LX2 that is 67. Try reducing the number of requested resources, do not run with the default each time you create a new dprc.

Hope this helps,
Platon

0 Kudos
3,305 Views
zhanghonghui
Contributor I

thanks, this solved my problem perfectly.

0 Kudos
3,343 Views
zhanghonghui
Contributor I

hi,Platon,

Thanks for your reply, it really helped with the problem.

I export the DRIO_COUNT to 16 just before I create the DPRC, and it resolved the issue perfectly.

Thanks very much.

0 Kudos
3,360 Views
zhanghonghui
Contributor I
 
0 Kudos