From: Vipin Varghese <vipin.varghese@intel.com>
To: dev@dpdk.org, marko.kovacevic@intel.com, reshma.pattan@intel.com
Cc: keith.wiles@intel.com, john.mcnamara@intel.com,
stephen1.byrne@intel.com, amit.tamboli@intel.com,
sanjay.padubidri@intel.com, amol.patel@intel.com,
Vipin Varghese <vipin.varghese@intel.com>
Subject: [dpdk-dev] [PATCH v3] app/pdump: enhance to support multi-core capture
Date: Thu, 28 Mar 2019 20:34:06 +0530 [thread overview]
Message-ID: <20190328150406.12051-1-vipin.varghese@intel.com> (raw)
Message-ID: <20190328150406.Tftqbn9OkJscujxjbbKmeD-Zuwkby96nsHzxaNOrZw8@z> (raw)
In-Reply-To: <20190328145746.11786-1-vipin.varghese@intel.com>
Enhance pdump application, to allow user to run on multiple cores.
Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
---
Change Log:
V3:
- correct the parse_usage - Vipin Varghese
- add change log - Vipin Varghese
V2:
- Replace option '-c' to '-l' - Keith Wiles
---
app/pdump/main.c | 75 ++++++++++++++++++++++++++++++++------
doc/guides/tools/pdump.rst | 5 +++
2 files changed, 69 insertions(+), 11 deletions(-)
diff --git a/app/pdump/main.c b/app/pdump/main.c
index ccf2a1d2f..a2e092420 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -62,6 +62,7 @@
#define SIZE 256
#define BURST_SIZE 32
#define NUM_VDEVS 2
+#define CORES_STR_SIZE 32
/* true if x is a power of 2 */
#define POWEROF2(x) ((((x)-1) & (x)) == 0)
@@ -144,7 +145,7 @@ static volatile uint8_t quit_signal;
static void
pdump_usage(const char *prgname)
{
- printf("usage: %s [EAL options] -- --pdump "
+ printf("usage: %s [EAL options] -- [-l <list of cores>] --pdump "
"'(port=<port id> | device_id=<pci id or vdev name>),"
"(queue=<queue_id>),"
"(rx-dev=<iface or pcap file> |"
@@ -415,6 +416,7 @@ print_pdump_stats(void)
for (i = 0; i < num_tuples; i++) {
printf("##### PDUMP DEBUG STATS #####\n");
pt = &pdump_t[i];
+ printf(" == DPDK interface (%d) ==\n", i);
printf(" -packets dequeued: %"PRIu64"\n",
pt->stats.dequeue_pkts);
printf(" -packets transmitted to vdev: %"PRIu64"\n",
@@ -834,22 +836,62 @@ enable_pdump(void)
}
}
+static inline void
+pdump_packets(struct pdump_tuples *pt)
+{
+ if (pt->dir & RTE_PDUMP_FLAG_RX)
+ pdump_rxtx(pt->rx_ring, pt->rx_vdev_id, &pt->stats);
+ if (pt->dir & RTE_PDUMP_FLAG_TX)
+ pdump_rxtx(pt->tx_ring, pt->tx_vdev_id, &pt->stats);
+}
+
+static int
+dump_packets_core(void *arg)
+{
+ struct pdump_tuples *pt = (struct pdump_tuples *) arg;
+
+ while (!quit_signal)
+ pdump_packets(pt);
+
+ return 0;
+}
+
static inline void
dump_packets(void)
{
int i;
- struct pdump_tuples *pt;
+ uint32_t lcore_id = 0;
+
+ lcore_id = rte_get_next_lcore(lcore_id, 1, 1);
+
+ if (rte_lcore_count() == 1) {
+ while (!quit_signal) {
+ for (i = 0; i < num_tuples; i++) {
+ struct pdump_tuples *pt = &pdump_t[i];
+ pdump_packets(pt);
+ }
+ }
+ } else {
+ printf(" Tuples (%u) lcores (%u)\n",
+ num_tuples, rte_lcore_count());
+
+ if ((uint32_t)num_tuples >= rte_lcore_count()) {
+ printf("Insufficent Cores\n");
+ return;
+ }
- while (!quit_signal) {
for (i = 0; i < num_tuples; i++) {
- pt = &pdump_t[i];
- if (pt->dir & RTE_PDUMP_FLAG_RX)
- pdump_rxtx(pt->rx_ring, pt->rx_vdev_id,
- &pt->stats);
- if (pt->dir & RTE_PDUMP_FLAG_TX)
- pdump_rxtx(pt->tx_ring, pt->tx_vdev_id,
- &pt->stats);
+ /* use remote launch for n interfaces */
+ rte_eal_remote_launch(dump_packets_core,
+ &pdump_t[i], lcore_id);
+ lcore_id = rte_get_next_lcore(lcore_id, 0, 1);
+
+ if (rte_eal_wait_lcore(lcore_id) < 0)
+ rte_exit(EXIT_FAILURE, "failed to wait\n");
}
+
+ while (!quit_signal)
+ ;
}
}
@@ -860,7 +902,7 @@ main(int argc, char **argv)
int ret;
int i;
- char c_flag[] = "-c1";
+ char c_flag[CORES_STR_SIZE] = "-c1";
char n_flag[] = "-n4";
char mp_flag[] = "--proc-type=secondary";
char *argp[argc + 3];
@@ -868,6 +910,17 @@ main(int argc, char **argv)
/* catch ctrl-c so we can print on exit */
signal(SIGINT, signal_handler);
+ for (i = 0; i < argc; i++) {
+ if (strstr(argv[i], "-l")) {
+ snprintf(c_flag, RTE_DIM(c_flag), "-l %s", argv[i+1]);
+ strlcpy(argv[i], "", 2);
+ strlcpy(argv[i + 1], "", 2);
+ break;
+ }
+ }
+
+ printf(" c_flag %s", c_flag);
+
argp[0] = argv[0];
argp[1] = c_flag;
argp[2] = n_flag;
diff --git a/doc/guides/tools/pdump.rst b/doc/guides/tools/pdump.rst
index 7c2b73e72..3cfd9fc44 100644
--- a/doc/guides/tools/pdump.rst
+++ b/doc/guides/tools/pdump.rst
@@ -35,6 +35,7 @@ The tool has a number of command line options:
.. code-block:: console
./build/app/dpdk-pdump --
+ [-l <list of cores>]
--pdump '(port=<port id> | device_id=<pci id or vdev name>),
(queue=<queue_id>),
(rx-dev=<iface or pcap file> |
@@ -43,6 +44,9 @@ The tool has a number of command line options:
[mbuf-size=<mbuf data size>],
[total-num-mbufs=<number of mbufs>]'
+The ``-l`` command line option is optional and it takes list cores on which
+capture for each ``--pdump`` is to be run.
+
The ``--pdump`` command line option is mandatory and it takes various sub arguments which are described in
below section.
@@ -113,3 +117,4 @@ Example
.. code-block:: console
$ sudo ./build/app/dpdk-pdump -- --pdump 'port=0,queue=*,rx-dev=/tmp/rx.pcap'
+ $ sudo ./build/app/dpdk-pdump -- -l 3,4,5 --pdump 'port=0,queue=*,rx-dev=/tmp/rx.pcap' --pdump 'port=1,queue=*,tx-dev=/tmp/tx.pcap'
--
2.17.1
next prev parent reply other threads:[~2019-03-28 15:03 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-28 6:00 [dpdk-dev] [PATCH] " Vipin Varghese
2019-03-28 6:00 ` Vipin Varghese
2019-03-28 14:57 ` [dpdk-dev] [PATCH v2] " Vipin Varghese
2019-03-28 14:57 ` Vipin Varghese
2019-03-28 15:04 ` Vipin Varghese [this message]
2019-03-28 15:04 ` [dpdk-dev] [PATCH v3] " Vipin Varghese
2019-03-28 15:34 ` Wiles, Keith
2019-03-28 15:34 ` Wiles, Keith
2019-03-29 10:08 ` Pattan, Reshma
2019-03-29 10:08 ` Pattan, Reshma
2019-03-29 10:22 ` Varghese, Vipin
2019-03-29 10:22 ` Varghese, Vipin
2019-03-29 10:52 ` Pattan, Reshma
2019-03-29 10:52 ` Pattan, Reshma
2019-03-29 17:03 ` Ferruh Yigit
2019-03-29 17:03 ` Ferruh Yigit
2019-04-01 4:05 ` Varghese, Vipin
2019-04-01 4:05 ` Varghese, Vipin
2019-04-02 4:33 ` [dpdk-dev] [PATCH v4 0/2] app/pdump: enhance to support unique cores Vipin Varghese
2019-04-02 4:33 ` Vipin Varghese
2019-04-02 4:33 ` [dpdk-dev] [PATCH v4 1/2] app/pdump: remove core restriction Vipin Varghese
2019-04-02 4:33 ` Vipin Varghese
2019-04-02 4:33 ` [dpdk-dev] [PATCH v4 2/2] app/pdump: enhance to support multi-core capture Vipin Varghese
2019-04-02 4:33 ` Vipin Varghese
2019-04-02 7:05 ` David Marchand
2019-04-02 7:05 ` David Marchand
2019-04-02 8:06 ` Varghese, Vipin
2019-04-02 8:06 ` Varghese, Vipin
2019-04-02 9:18 ` [dpdk-dev] [PATCH v5 0/2] app/pdump: enhance to support unique cores Vipin Varghese
2019-04-02 9:18 ` Vipin Varghese
2019-04-02 9:18 ` [dpdk-dev] [PATCH v5 1/2] app/pdump: remove core restriction Vipin Varghese
2019-04-02 9:18 ` Vipin Varghese
2019-04-02 9:18 ` [dpdk-dev] [PATCH v5 2/2] app/pdump: enhance to support multi-core capture Vipin Varghese
2019-04-02 9:18 ` Vipin Varghese
2019-04-02 10:01 ` David Marchand
2019-04-02 10:01 ` David Marchand
2019-04-02 15:30 ` Varghese, Vipin
2019-04-02 15:30 ` Varghese, Vipin
2019-04-04 7:39 ` David Marchand
2019-04-04 7:39 ` David Marchand
2019-04-02 16:13 ` Pattan, Reshma
2019-04-02 16:13 ` Pattan, Reshma
2019-04-03 3:53 ` Varghese, Vipin
2019-04-03 3:53 ` Varghese, Vipin
2019-04-05 17:10 ` Pattan, Reshma
2019-04-05 17:10 ` Pattan, Reshma
2019-04-08 3:03 ` Varghese, Vipin
2019-04-08 3:03 ` Varghese, Vipin
2019-04-04 8:55 ` [dpdk-dev] [PATCH v6 0/2] app/pdump: enhance to support unique cores Vipin Varghese
2019-04-04 8:55 ` Vipin Varghese
2019-04-04 8:55 ` [dpdk-dev] [PATCH v6 1/2] app/pdump: remove core restriction Vipin Varghese
2019-04-04 8:55 ` Vipin Varghese
2019-04-09 9:04 ` Pattan, Reshma
2019-04-09 9:04 ` Pattan, Reshma
2019-04-04 8:55 ` [dpdk-dev] [PATCH v6 2/2] app/pdump: enhance to support multi-core capture Vipin Varghese
2019-04-04 8:55 ` Vipin Varghese
2019-04-05 17:09 ` Pattan, Reshma
2019-04-05 17:09 ` Pattan, Reshma
2019-04-08 3:01 ` Varghese, Vipin
2019-04-08 3:01 ` Varghese, Vipin
2019-04-09 9:05 ` Pattan, Reshma
2019-04-09 9:05 ` Pattan, Reshma
2019-04-22 19:49 ` [dpdk-dev] [PATCH v6 0/2] app/pdump: enhance to support unique cores Thomas Monjalon
2019-04-22 19:49 ` Thomas Monjalon
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=20190328150406.12051-1-vipin.varghese@intel.com \
--to=vipin.varghese@intel.com \
--cc=amit.tamboli@intel.com \
--cc=amol.patel@intel.com \
--cc=dev@dpdk.org \
--cc=john.mcnamara@intel.com \
--cc=keith.wiles@intel.com \
--cc=marko.kovacevic@intel.com \
--cc=reshma.pattan@intel.com \
--cc=sanjay.padubidri@intel.com \
--cc=stephen1.byrne@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).