DPDK patches and discussions
 help / color / mirror / Atom feed
From: Hideyuki Yamashita <yamashita.hideyuki@ntt-tx.co.jp>
To: Maryam Tahhan <maryam.tahhan@intel.com>,
	Reshma Pattan <reshma.pattan@intel.com>
Cc: dev@dpdk.org,
	Hideyuki Yamashita <yamashita.hideyuki@ntt-tx.co.jp>,
	Hideyuki Yamashita <yamashtia.hideyuki@ntt-tx.co.jp>
Subject: [dpdk-dev] [PATCH 2/5] app/proc-info: add to use apistats
Date: Fri, 04 Dec 2020 16:51:06 +0900
Message-ID: <20201204075109.14694-3-yamashita.hideyuki@ntt-tx.co.jp> (raw)
In-Reply-To: <20201204075109.14694-1-yamashita.hideyuki@ntt-tx.co.jp>

This patch modifies to use apistats by proc-info app.
- change on main.c to call apistats functions
- change on Makefile to include experimental API

Signed-off-by: Hideyuki Yamashita <yamashtia.hideyuki@ntt-tx.co.jp>
---
 app/proc-info/main.c | 46 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/app/proc-info/main.c b/app/proc-info/main.c
index d743209..d384b13 100644
--- a/app/proc-info/main.c
+++ b/app/proc-info/main.c
@@ -37,6 +37,7 @@
 #include <rte_cryptodev.h>
 #include <rte_tm.h>
 #include <rte_hexdump.h>
+#include <rte_apistats.h>
 
 /* Maximum long option length for option parsing. */
 #define MAX_LONG_OPT_SZ 64
@@ -93,6 +94,8 @@ static char *mempool_name;
 /**< Enable iter mempool. */
 static uint32_t enable_iter_mempool;
 static char *mempool_iter_name;
+/**< Enable api stats. */
+static uint32_t enable_apistats;
 
 /**< display usage */
 static void
@@ -109,6 +112,7 @@ proc_info_usage(const char *prgname)
 		"  --xstats-name NAME: to display single xstat id by NAME\n"
 		"  --xstats-ids IDLIST: to display xstat values by id. "
 			"The argument is comma-separated list of xstat ids to print out.\n"
+		"  --apistats: to display api statistics, disabled by default\n"
 		"  --stats-reset: to reset port statistics\n"
 		"  --xstats-reset: to reset port extended statistics\n"
 		"  --collectd-format: to print statistics to STDOUT in expected by collectd format\n"
@@ -218,6 +222,7 @@ proc_info_parse_args(int argc, char **argv)
 		{"xstats-name", required_argument, NULL, 1},
 		{"collectd-format", 0, NULL, 0},
 		{"xstats-ids", 1, NULL, 1},
+		{"apistats", 0, NULL, 0},
 		{"host-id", 0, NULL, 0},
 		{"show-port", 0, NULL, 0},
 		{"show-tm", 0, NULL, 0},
@@ -266,6 +271,9 @@ proc_info_parse_args(int argc, char **argv)
 			else if (!strncmp(long_option[option_index].name, "xstats-reset",
 					MAX_LONG_OPT_SZ))
 				reset_xstats = 1;
+			else if (!strncmp(long_option[option_index].name, "apistats",
+					MAX_LONG_OPT_SZ))
+				enable_apistats = 1;
 			else if (!strncmp(long_option[option_index].name,
 					"show-port", MAX_LONG_OPT_SZ))
 				enable_shw_port = 1;
@@ -1349,6 +1357,40 @@ iter_mempool(char *name)
 	}
 }
 
+static void
+display_apistats(void)
+{
+	static const char *api_stats_border = "########################";
+	uint16_t i;
+	struct rte_apistats t0_count, t1_count;
+	memcpy(&t0_count, rte_apicounts, sizeof(struct rte_apistats));
+	sleep(1);
+	memcpy(&t1_count, rte_apicounts, sizeof(struct rte_apistats));
+	for (i = 0; i < RTE_MAX_LCORE; i++) {
+		if (t1_count.lcoreid_list[i] != 0) {
+			uint64_t rx_count_delta = t1_count.rx_burst_counts[i]
+				- t0_count.rx_burst_counts[i];
+			uint64_t tx_count_delta = t1_count.tx_burst_counts[i]
+				- t0_count.tx_burst_counts[i];
+			printf("\n  %s api statistics for lcoreid: %d %s\n",
+				api_stats_border, i, api_stats_border);
+			printf("  rx_burst_count: %13"PRIu64""
+				" rx_burst_count_delta: %13"PRIu64"\n",
+				t1_count.rx_burst_counts[i],
+				rx_count_delta);
+			printf("  tx_burst_count: %13"PRIu64""
+				" tx_burst_count_delta: %13"PRIu64"\n",
+				t1_count.tx_burst_counts[i],
+				tx_count_delta);
+			printf("  tx/rx_rate: %3.2f\n",
+				(rx_count_delta) ? (double)tx_count_delta
+				/ rx_count_delta : 0.0);
+			printf("  %s################################%s\n",
+				api_stats_border, api_stats_border);
+		}
+	}
+}
+
 int
 main(int argc, char **argv)
 {
@@ -1389,6 +1431,8 @@ main(int argc, char **argv)
 	if (!rte_eal_primary_proc_alive(NULL))
 		rte_exit(EXIT_FAILURE, "No primary DPDK process is running.\n");
 
+	rte_apistats_init();
+
 	/* parse app arguments */
 	ret = proc_info_parse_args(argc, argv);
 	if (ret < 0)
@@ -1454,6 +1498,8 @@ main(int argc, char **argv)
 		show_mempool(mempool_name);
 	if (enable_iter_mempool)
 		iter_mempool(mempool_iter_name);
+	if (enable_apistats)
+		display_apistats();
 
 	RTE_ETH_FOREACH_DEV(i)
 		rte_eth_dev_close(i);
-- 
2.18.0


  parent reply	other threads:[~2020-12-04  7:52 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-04  7:51 [dpdk-dev] [PATCH 0/5] add apistats function Hideyuki Yamashita
2020-12-04  7:51 ` [dpdk-dev] [PATCH 1/5] maintainers: update maintainers file for apistats Hideyuki Yamashita
2020-12-05 13:27   ` Varghese, Vipin
2020-12-24  6:36     ` Hideyuki Yamashita
2020-12-04  7:51 ` Hideyuki Yamashita [this message]
2020-12-05 13:15   ` [dpdk-dev] [PATCH 2/5] app/proc-info: add to use apistats Varghese, Vipin
2020-12-04  7:51 ` [dpdk-dev] [PATCH 3/5] app/test-pmd: " Hideyuki Yamashita
2020-12-05 13:04   ` Varghese, Vipin
2020-12-04  7:51 ` [dpdk-dev] [PATCH 4/5] docs: add description of apistats parameter into proc-info Hideyuki Yamashita
2020-12-05 13:02   ` Varghese, Vipin
2020-12-07  9:48     ` Pattan, Reshma
2020-12-04  7:51 ` [dpdk-dev] [PATCH 5/5] librte_ethdev: add to use apistats Hideyuki Yamashita
2020-12-05 13:01   ` Varghese, Vipin
2020-12-06 17:47   ` Stephen Hemminger
2020-12-24  6:33     ` Hideyuki Yamashita
2020-12-07 12:38   ` Ananyev, Konstantin
2020-12-22  2:48     ` Hideyuki Yamashita
2020-12-22  2:50     ` Hideyuki Yamashita
2020-12-22  9:04       ` Morten Brørup
2020-12-22 13:05       ` Ananyev, Konstantin
2020-12-04  9:09 ` [dpdk-dev] [PATCH 0/5] add apistats function Ferruh Yigit
2020-12-04 10:20 ` David Hunt
2020-12-05 13:23   ` Varghese, Vipin
2020-12-24  6:43     ` Hideyuki Yamashita
2020-12-24 12:35       ` Varghese, Vipin
2020-12-22  2:16   ` Hideyuki Yamashita
2020-12-07  9:46 ` Thomas Monjalon
2020-12-22  2:22   ` Hideyuki Yamashita
2021-02-22 15:10     ` Ferruh Yigit

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=20201204075109.14694-3-yamashita.hideyuki@ntt-tx.co.jp \
    --to=yamashita.hideyuki@ntt-tx.co.jp \
    --cc=dev@dpdk.org \
    --cc=maryam.tahhan@intel.com \
    --cc=reshma.pattan@intel.com \
    --cc=yamashtia.hideyuki@ntt-tx.co.jp \
    /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

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git