[dpdk-dev] [PATCH v7] app/testpmd: support multi-process
Li, Xiaoyun
xiaoyun.li at intel.com
Mon Mar 29 09:51:32 CEST 2021
Hi
> -----Original Message-----
> From: Min Hu (Connor) <humin29 at huawei.com>
> Sent: Friday, March 26, 2021 16:53
> To: dev at dpdk.org
> Cc: Yigit, Ferruh <ferruh.yigit at intel.com>; ajit.khaparde at broadcom.com; Li,
> Xiaoyun <xiaoyun.li at intel.com>
> Subject: [PATCH v7] app/testpmd: support multi-process
>
> From: Lijun Ou <oulijun at huawei.com>
>
> This patch adds multi-process support for testpmd.
> The test cmd example as follows:
> the primary cmd:
> ./dpdk-testpmd -a xxx --proc-type=auto -l 0-1 -- -i \
> --rxq=4 --txq=4 --num-procs=2 --proc-id=0
>
> the secondary cmd:
> ./dpdk-testpmd -a xxx --proc-type=auto -l 2-3 -- -i \
> --rxq=4 --txq=4 --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>
> ---
> v7:
> * Fixed compiling error for unexpected unindent.
>
> v6:
> * Add rte flow description for multiple process.
>
> v5:
> * Fixed run_app.rst for multiple process description.
> * Fix compiling error.
>
> v4:
> * Fixed minimum vlaue of Rxq or Txq in doc.
>
> v3:
> * Fixed compiling error using gcc10.0.
>
> v2:
> * Added document for this patch.
> ---
> app/test-pmd/cmdline.c | 12 +++-
> app/test-pmd/config.c | 9 ++-
> app/test-pmd/parameters.c | 11 +++
> app/test-pmd/testpmd.c | 127 ++++++++++++++++++++++------------
> app/test-pmd/testpmd.h | 7 ++
> doc/guides/testpmd_app_ug/run_app.rst | 99 ++++++++++++++++++++++++++
> 6 files changed, 219 insertions(+), 46 deletions(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 14110eb..287d7a0 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -71,8 +71,6 @@
Why not just restrict queue numbers to be multiple of processes here in rss_fwd_config_setup()?
Or at least print a warning to tell users if it's not multiple, packet loss will happen.
> setup_fwd_config_of_each_lcore(&cur_fwd_config);
> - rxp = 0; rxq = 0;
> + start = proc_id * nb_q / num_procs;
> + end = start + nb_q / num_procs;
> + rxp = 0;
> + rxq = start;
> for (sm_id = 0; sm_id < cur_fwd_config.nb_fwd_streams; sm_id++) {
> struct fwd_stream *fs;
>
> @@ -2861,6 +2866,8 @@ rss_fwd_config_setup(void)
> continue;
> rxp = 0;
> rxq++;
> + if (rxq >= end)
> + rxq = start;
> }
> }
>
> +* ``--txq=N``
> +
> + Set the number of Tx queues per port to N. N is the sum of queues used by
> primary
> + and secondary process. As primary process and secondary process should
> have separate
> + queues, and each should occupy at least one queue.where N should be no
> less than two.
Where N should be the multiple of number of processes.
BRs
Xiaoyun
> +
> 2.7.4
More information about the dev
mailing list