All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Singh, Aman Deep" <aman.deep.singh@intel.com>
To: "Min Hu (Connor" <humin29@huawei.com>, "'dev@dpdk.org'" <dev@dpdk.org>
Cc: "Mcnamara, John" <john.mcnamara@intel.com>,
	"Kovacevic, Marko" <marko.kovacevic@intel.com>,
	"Burakov, Anatoly" <anatoly.burakov@intel.com>,
	"andrew.rybchenko@oktetlabs.ru" <andrew.rybchenko@oktetlabs.ru>,
	"thomas@monjalon.net" <thomas@monjalon.net>,
	"Li, Xiaoyun" <xiaoyun.li@intel.com>,
	"Yigit, Ferruh" <ferruh.yigit@intel.com>
Subject: [dpdk-dev] [PATCH v12] app/testpmd: support multi-process
Date: Wed, 21 Apr 2021 09:56:42 +0000	[thread overview]
Message-ID: <SJ0PR11MB5007BF098C83FB1AB4D88ED1A3479@SJ0PR11MB5007.namprd11.prod.outlook.com> (raw)

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@huawei.com<mailto:humin29@huawei.com>>

Signed-off-by: Lijun Ou <oulijun@huawei.com<mailto:oulijun@huawei.com>>

Acked-by: Xiaoyun Li <xiaoyun.li@intel.com<mailto:xiaoyun.li@intel.com>>

Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com<mailto:ajit.khaparde@broadcom.com>>

Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com<mailto:ferruh.yigit@intel.com>>

---

v12:

* Updated doc info.

<....>


diff --git a/doc/guides/testpmd_app_ug/run_app.rst b/doc/guides/testpmd_app_ug/run_app.rst

index d062165..7414e85 100644

--- a/doc/guides/testpmd_app_ug/run_app.rst

+++ b/doc/guides/testpmd_app_ug/run_app.rst

@@ -543,3 +543,87 @@ The command line options are:

     bit 1 - two hairpin ports paired

     bit 0 - two hairpin ports loop

     The default value is 0. Hairpin will use single port mode and implicit Tx flow mode.

+

+Testpmd Multi-Process Command-line Options

+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+

+The following are the command-line options for testpmd multi-process support:

+

+.. code-block:: console

+

+            primary process:

+            sudo ./dpdk-testpmd -a xxx --proc-type=auto -l 0-1 -- -i --rxq=4 --txq=4 \

+        --num-procs=2 --proc-id=0

+

+            secondary process:

+            sudo ./dpdk-testpmd -a xxx --proc-type=auto -l 2-3 -- -i --rxq=4 --txq=4 \

+        --num-procs=2 --proc-id=1

+

+The command line options are:

+

+*   ``--rxq=N``

+

+    Set the number of Rx queues per port to N. N is the sum of queues used by primary

+    and secondary process. Primary process and secondary process should have separate

+    queues, and each should occupy at least one queue. Where N should be the multiple

// [Minor Comment]: , not required



+    of number of processes.

+

+*   ``--txq=N``

+

+    Set the number of Tx queues per port to N. N is the sum of queues used by primary

+    and secondary process. Primary process and secondary process should have separate

+    queues, and each should occupy at least one queue. Where N should be the multiple

// [Minor Comment]: , not required



+    of number of processes.

+

+*   ``--num-procs=N``

+

+    The number of processes which will be used.

+

+*   ``--proc-id=id``

+

+    The id of the current process (id < num-procs). id should be different in primary

+    process and secondary process, which starts from '0'.

+

+Calculation rule for queue:

+All queues are allocated to different processes based on ``proc_num`` and ``proc_id``.

+Calculation rule for the testpmd to allocate queues to each process:

+start(queue start id) = proc_id * nb_q / num_procs?

+end(queue end id) = start + nb_q / num_procs?

+

+For example, if testpmp supports 4 Tx and Rx queues the 0~1 for primary

// [Spelling] testpmp  --> "testpmd", change Rx --> 4 Rx



+process the 2~3 for secondary process

+

+The number of rings should be a multiple of the number of processes. If

+not, redundant queues will exist after queues are allocated to

+processes. After RSS is enabled, packet loss occurs when traffic is sent to all processes at the same time.

+Some traffic enters redundant queues and cannot be forwarded.

+

+All the dev ops is supported in primary process. While secondary

+process is not permitted to allocate or release shared memory, so some ops are not supported as follows::

+``dev_configure``

+``dev_start``

+``dev_stop``

+``rx_queue_setup``

+``tx_queue_setup``

+``rx_queue_release``

+``tx_queue_release``

+

+So, any command from testpmd which calls those APIs will not be

+supported in secondary process, like::

+``port config all rxq|txq|rxd|txd <value>`` ``port config <port_id>

+rx_offload xxx on/off `` ``port config <port_id> tx_offload xxx

+on/off`` etc.

+

+Flow API is supported, it applies only on its own process on SW side, but all on HW size.

// [Replace] all --> uniformly    [Spelling] size --> side



+

+Stats is supported, stats will not change when one quit and start, As

+they share the same buffer to store the stats. Flow rules are

+maintained in process level: primary and secondary has its own flow

+list (but one flow list in HW). The two can see all the queues, so

+setting the flow rules for the other is OK. But in testpmd primary

// [Replace] in --> if



+process receives or transmits packets from the queue allocated for secondary process is not permitted, and same for secondary process.

// [Rephrase] is not permitted--> it is not permitted



+

+RSS is supported, primary process and secondary process has separate

+queues to use, RSS will work in their own queues whether primary or secondary process.

--

2.7.4


Tested-by: Aman Deep Singh <aman.deep.singh@intel.com<mailto:aman.deep.singh@intel.com>>


             reply	other threads:[~2021-04-21  9:57 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-21  9:56 Singh, Aman Deep [this message]
2021-04-22  1:18 ` [dpdk-dev] [PATCH v12] app/testpmd: support multi-process Min Hu (Connor)
  -- strict thread matches above, loose matches on Subject: below --
2021-03-05  1:04 [dpdk-dev] [PATCH] " Lijun Ou
2021-04-21  8:36 ` [dpdk-dev] [PATCH v12] " Min Hu (Connor)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=SJ0PR11MB5007BF098C83FB1AB4D88ED1A3479@SJ0PR11MB5007.namprd11.prod.outlook.com \
    --to=aman.deep.singh@intel.com \
    --cc=anatoly.burakov@intel.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=humin29@huawei.com \
    --cc=john.mcnamara@intel.com \
    --cc=marko.kovacevic@intel.com \
    --cc=thomas@monjalon.net \
    --cc=xiaoyun.li@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.