From: Michal Jastrzebski <michalx.k.jastrzebski@intel.com>
To: dev@dpdk.org
Cc: Jacek Piasecki <jacekx.piasecki@intel.com>,
Kuba Kozak <kubax.kozak@intel.com>
Subject: [dpdk-dev] [PATCH v2 4/5] add support for new xstats API retrieving by id
Date: Fri, 31 Mar 2017 00:22:19 +0200 [thread overview]
Message-ID: <1490912539-244547-1-git-send-email-michalx.k.jastrzebski@intel.com> (raw)
In-Reply-To: <1490910640-244285-1-git-send-email-michalx.k.jastrzebski@intel.com>
Add support for new xstats API retrieving by id to proc_info
application
Signed-off-by: Jacek Piasecki <jacekx.piasecki@intel.com>
Signed-off-by: Kuba Kozak <kubax.kozak@intel.com>
---
app/proc_info/main.c | 56 +++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 45 insertions(+), 11 deletions(-)
diff --git a/app/proc_info/main.c b/app/proc_info/main.c
index ef2098d..22fcca0 100644
--- a/app/proc_info/main.c
+++ b/app/proc_info/main.c
@@ -83,6 +83,9 @@
static uint32_t reset_xstats;
/**< Enable memory info. */
static uint32_t mem_info;
+/**< Enable displaying xstat name. */
+static uint32_t enable_xstats_name;
+static char *xstats_name;
/**< display usage */
static void
@@ -94,6 +97,7 @@
" --stats: to display port statistics, enabled by default\n"
" --xstats: to display extended port statistics, disabled by "
"default\n"
+ " --xstats-name NAME: to display single xstat value by NAME\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"
@@ -172,6 +176,7 @@
{"stats-reset", 0, NULL, 0},
{"xstats", 0, NULL, 0},
{"xstats-reset", 0, NULL, 0},
+ {"xstats-name", required_argument, NULL, 1},
{"collectd-format", 0, NULL, 0},
{"host-id", 0, NULL, 0},
{NULL, 0, 0, 0}
@@ -214,7 +219,18 @@
MAX_LONG_OPT_SZ))
reset_xstats = 1;
break;
-
+ case 1:
+ /* Print xstat single value given by name*/
+ if (!strncmp(long_option[option_index].name,
+ "xstats-name",
+ MAX_LONG_OPT_SZ)) {
+ enable_xstats_name = 1;
+ xstats_name = optarg;
+ printf("name:%s:%s\n",
+ long_option[option_index].name,
+ optarg);
+ }
+ break;
default:
proc_info_usage(prgname);
return -1;
@@ -341,20 +357,36 @@ static void collectd_resolve_cnt_type(char *cnt_type, size_t cnt_type_len,
}
static void
+nic_xstats_by_name_display(__rte_unused uint8_t port_id,
+ __rte_unused char *name)
+{
+ uint64_t id;
+
+ printf("###### NIC statistics for port %-2d, statistic name '%s':\n",
+ port_id, name);
+
+ if (rte_eth_xstats_get_id_by_name(port_id, name, &id) == 0)
+ printf("%s: %"PRIu64"\n", name, id);
+ else
+ printf("Statistic not found...\n");
+
+}
+
+static void
nic_xstats_display(uint8_t port_id)
{
struct rte_eth_xstat_name *xstats_names;
- struct rte_eth_xstat *xstats;
+ uint64_t *values;
int len, ret, i;
static const char *nic_stats_border = "########################";
- len = rte_eth_xstats_get_names(port_id, NULL, 0);
+ len = rte_eth_xstats_get_names(port_id, NULL, NULL, 0);
if (len < 0) {
printf("Cannot get xstats count\n");
return;
}
- xstats = malloc(sizeof(xstats[0]) * len);
- if (xstats == NULL) {
+ values = malloc(sizeof(values) * len);
+ if (values == NULL) {
printf("Cannot allocate memory for xstats\n");
return;
}
@@ -362,11 +394,11 @@ static void collectd_resolve_cnt_type(char *cnt_type, size_t cnt_type_len,
xstats_names = malloc(sizeof(struct rte_eth_xstat_name) * len);
if (xstats_names == NULL) {
printf("Cannot allocate memory for xstat names\n");
- free(xstats);
+ free(values);
return;
}
if (len != rte_eth_xstats_get_names(
- port_id, xstats_names, len)) {
+ port_id, xstats_names, NULL, len)) {
printf("Cannot get xstat names\n");
goto err;
}
@@ -375,7 +407,7 @@ static void collectd_resolve_cnt_type(char *cnt_type, size_t cnt_type_len,
port_id);
printf("%s############################\n",
nic_stats_border);
- ret = rte_eth_xstats_get(port_id, xstats, len);
+ ret = rte_eth_xstats_get(port_id, NULL, values, len);
if (ret < 0 || ret > len) {
printf("Cannot get xstats\n");
goto err;
@@ -391,18 +423,18 @@ static void collectd_resolve_cnt_type(char *cnt_type, size_t cnt_type_len,
xstats_names[i].name);
sprintf(buf, "PUTVAL %s/dpdkstat-port.%u/%s-%s N:%"
PRIu64"\n", host_id, port_id, counter_type,
- xstats_names[i].name, xstats[i].value);
+ xstats_names[i].name, values[i]);
write(stdout_fd, buf, strlen(buf));
} else {
printf("%s: %"PRIu64"\n", xstats_names[i].name,
- xstats[i].value);
+ values[i]);
}
}
printf("%s############################\n",
nic_stats_border);
err:
- free(xstats);
+ free(values);
free(xstats_names);
}
@@ -480,6 +512,8 @@ static void collectd_resolve_cnt_type(char *cnt_type, size_t cnt_type_len,
nic_stats_clear(i);
else if (reset_xstats)
nic_xstats_clear(i);
+ else if (enable_xstats_name)
+ nic_xstats_by_name_display(i, xstats_name);
}
}
--
1.9.1
next prev parent reply other threads:[~2017-03-30 22:22 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-30 21:50 [dpdk-dev] [PATCH v2 0/5] Extended xstats API in ethdev library to allow grouping of stats Michal Jastrzebski
2017-03-30 21:50 ` [dpdk-dev] [PATCH v2 1/5] add new xstats API retrieving by id Michal Jastrzebski
2017-04-03 12:09 ` [dpdk-dev] [PATCH v3 0/3] Extended xstats API in ethdev library to allow grouping of stats Jacek Piasecki
2017-04-03 12:09 ` [dpdk-dev] [PATCH v3 1/3] add new xstats API retrieving by id Jacek Piasecki
2017-04-03 12:37 ` Van Haaren, Harry
2017-04-04 15:03 ` Thomas Monjalon
2017-04-04 15:45 ` Van Haaren, Harry
2017-04-04 16:18 ` Thomas Monjalon
2017-04-10 17:59 ` [dpdk-dev] [PATCH v4 0/3] Extended xstats API in ethdev library to allow grouping of stats Jacek Piasecki
2017-04-10 17:59 ` [dpdk-dev] [PATCH v4 1/3] ethdev: new xstats API add retrieving by ID Jacek Piasecki
2017-04-11 16:37 ` [dpdk-dev] [PATCH v5 0/3] Extended xstats API in ethdev library to allow grouping of stats Michal Jastrzebski
2017-04-11 16:37 ` [dpdk-dev] [PATCH v5 1/3] ethdev: new xstats API add retrieving by ID Michal Jastrzebski
2017-04-12 8:56 ` Van Haaren, Harry
2017-04-12 17:10 ` Thomas Monjalon
2017-04-13 10:52 ` Mcnamara, John
2017-04-13 14:59 ` [dpdk-dev] [PATCH v6 0/5] Extended xstats API in ethdev library to allow grouping of stats Kuba Kozak
2017-04-13 14:59 ` [dpdk-dev] [PATCH v6 1/5] ethdev: new xstats API add retrieving by ID Kuba Kozak
2017-04-13 16:23 ` Van Haaren, Harry
2017-04-13 14:59 ` [dpdk-dev] [PATCH v6 2/5] ethdev: added new function for xstats ID Kuba Kozak
2017-04-13 16:23 ` Van Haaren, Harry
2017-04-13 14:59 ` [dpdk-dev] [PATCH v6 3/5] proc-info: add support for new xstats API Kuba Kozak
2017-04-13 16:23 ` Van Haaren, Harry
2017-04-13 14:59 ` [dpdk-dev] [PATCH v6 4/5] net/e1000: new xstats API add ID support for e1000 Kuba Kozak
2017-04-13 16:23 ` Van Haaren, Harry
2017-04-13 14:59 ` [dpdk-dev] [PATCH v6 5/5] net/ixgbe: new xstats API add ID support for ixgbe Kuba Kozak
2017-04-13 16:23 ` Van Haaren, Harry
2017-04-13 16:21 ` [dpdk-dev] [PATCH v6 0/5] Extended xstats API in ethdev library to allow grouping of stats Van Haaren, Harry
2017-04-20 20:31 ` Thomas Monjalon
2017-04-24 12:32 ` Olivier Matz
2017-04-24 12:41 ` Thomas Monjalon
2017-04-24 15:49 ` Mcnamara, John
2017-04-25 22:49 ` Roger B Melton
2017-04-11 16:37 ` [dpdk-dev] [PATCH v5 2/3] net/e1000: new xstats API add ID support for e1000 Michal Jastrzebski
2017-04-12 8:56 ` Van Haaren, Harry
2017-04-11 16:37 ` [dpdk-dev] [PATCH v5 3/3] net/ixgbe: new xstats API add ID support for ixgbe Michal Jastrzebski
2017-04-12 8:56 ` Van Haaren, Harry
2017-04-10 17:59 ` [dpdk-dev] [PATCH v4 2/3] net/e1000: new xstats API add ID support for e1000 Jacek Piasecki
2017-04-10 17:59 ` [dpdk-dev] [PATCH v4 3/3] net/ixgbe: new xstats API add ID support for ixgbe Jacek Piasecki
2017-04-03 12:09 ` [dpdk-dev] [PATCH v3 2/3] add new xstats API id support for e1000 Jacek Piasecki
2017-04-03 12:38 ` Van Haaren, Harry
2017-04-03 12:09 ` [dpdk-dev] [PATCH v3 3/3] add new xstats API id support for ixgbe Jacek Piasecki
2017-04-03 12:38 ` Van Haaren, Harry
2017-03-30 21:50 ` [dpdk-dev] [PATCH v2 2/5] add new xstats API id support for e1000 Michal Jastrzebski
2017-03-30 22:06 ` [dpdk-dev] [PATCH v2 3/5] add new xstats API id support for ixgbe Michal Jastrzebski
2017-03-30 22:22 ` Michal Jastrzebski [this message]
2017-03-30 22:23 ` [dpdk-dev] [PATCH v2 5/5] add support for new xstats API retrieving by id Michal Jastrzebski
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=1490912539-244547-1-git-send-email-michalx.k.jastrzebski@intel.com \
--to=michalx.k.jastrzebski@intel.com \
--cc=dev@dpdk.org \
--cc=jacekx.piasecki@intel.com \
--cc=kubax.kozak@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).