[dpdk-dev] [RFC] app/testpmd: support multi-process

oulijun oulijun at huawei.com
Tue Jan 12 15:13:21 CET 2021



在 2021/1/10 20:32, Wisam Monther 写道:
> Hi,
> 
>> -----Original Message-----
>> From: dev <dev-bounces at dpdk.org> On Behalf Of Lijun Ou
>> Sent: Friday, January 8, 2021 11:46 AM
>> To: ferruh.yigit at intel.com; wenzhuo.lu at intel.com; beilei.xing at intel.com;
>> bernard.iremonger at intel.com
>> Cc: dev at dpdk.org
>> Subject: [dpdk-dev] [RFC] app/testpmd: support multi-process
>>
>> This patch adds multi-process support for testpmd.
>> The test cmd example as follows:
>> the primary cmd:
>> ./testpmd -w xxx --file-prefix=xx -l 0-1 -n 2 -- -i\
>> --rxq=16 --txq=16 --num-procs=2 --proc-id=0 the secondary cmd:
>> ./testpmd -w xxx --file-prefix=xx -l 2-3 -n 2 -- -i\
>> --rxq=16 --txq=16 --num-procs=2 --proc-id=1
>>
>> Signed-off-by: Min Hu (Connor) <humin29 at huawei.com>
>> Signed-off-by: Lijun Ou <oulijun at huawei.com>
>> ---
>>   app/test-pmd/cmdline.c    |   6 ++-
>>   app/test-pmd/config.c     |   9 +++-
>>   app/test-pmd/parameters.c |   9 ++++
>>   app/test-pmd/testpmd.c    | 133 ++++++++++++++++++++++++++++++++--
>> ------------
>>   app/test-pmd/testpmd.h    |   7 +++
>>   5 files changed, 121 insertions(+), 43 deletions(-)
>>
> 
> +1 for having this support for testpmd.
> 
> Some questions in my mind:
> How are the queues distributing here? In example I see 16 defined, are they for one instance or for all?
> Will all processes have same memory region? If installing one RTE_FLOW in one instance will be active for all?
> Same question for detaching device in one instance, how it will reflect on others?
> There is many other scenarios like this, how it will handle those?
> 
Hi,Wisam Monther
   Firstly, thank you for your questions. According to the current 
implementation scheme, all queues are evenly allocated to different 
processes based on proc_num and proc_id。
The number of receiving queues, number of processes, and process ID are 
specified for the master and slave processes. After being created by the 
main process, the sending and receiving queues are evenly distributed to 
all processes. The following shows the calculation rule for the Testpmd 
to allocate queues to each process after the proc ID is specified.
start(queue start id) = proc_id * nb_q / num_procs;
end(queue end id) = start + nb_q / num_procs;

For example, if support 16 txq and rxq
the 0 ~7 for primary process
the 8 ~15 for secondary process

all process have the same memory region.

Thanks
Lijun Ou

> BRs,
> Wisam Jaddo
> .
> 


More information about the dev mailing list