From: Remy Horton <remy.horton@intel.com>
To: dev@dpdk.org
Cc: Reshma Pattan <reshma.pattan@intel.com>,
Thomas Monjalon <thomas.monjalon@6wind.com>
Subject: [PATCH v12 2/6] app/proc_info: add metrics displaying
Date: Mon, 27 Mar 2017 21:21:33 +0100 [thread overview]
Message-ID: <1490646097-27803-3-git-send-email-remy.horton@intel.com> (raw)
In-Reply-To: <1490646097-27803-1-git-send-email-remy.horton@intel.com>
From: Reshma Pattan <reshma.pattan@intel.com>
Modify the dpdk-procinfo process to display the newly added metrics.
Added new command line option "--metrics" to display metrics.
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Signed-off-by: Remy Horton <remy.horton@intel.com>
---
app/proc_info/main.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 78 insertions(+), 1 deletion(-)
diff --git a/app/proc_info/main.c b/app/proc_info/main.c
index ef2098d..d576b42 100644
--- a/app/proc_info/main.c
+++ b/app/proc_info/main.c
@@ -1,7 +1,7 @@
/*
* BSD LICENSE
*
- * Copyright(c) 2010-2016 Intel Corporation. All rights reserved.
+ * Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -58,6 +58,7 @@
#include <rte_atomic.h>
#include <rte_branch_prediction.h>
#include <rte_string_fns.h>
+#include <rte_metrics.h>
/* Maximum long option length for option parsing. */
#define MAX_LONG_OPT_SZ 64
@@ -77,6 +78,8 @@ static uint32_t enable_collectd_format;
static int stdout_fd;
/**< Host id process is running on */
static char host_id[MAX_LONG_OPT_SZ];
+/**< Enable metrics. */
+static uint32_t enable_metrics;
/**< Enable stats reset. */
static uint32_t reset_stats;
/**< Enable xstats reset. */
@@ -94,6 +97,8 @@ proc_info_usage(const char *prgname)
" --stats: to display port statistics, enabled by default\n"
" --xstats: to display extended port statistics, disabled by "
"default\n"
+ " --metrics: to display derived metrics of the ports, 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"
@@ -171,6 +176,7 @@ proc_info_parse_args(int argc, char **argv)
{"stats", 0, NULL, 0},
{"stats-reset", 0, NULL, 0},
{"xstats", 0, NULL, 0},
+ {"metrics", 0, NULL, 0},
{"xstats-reset", 0, NULL, 0},
{"collectd-format", 0, NULL, 0},
{"host-id", 0, NULL, 0},
@@ -205,6 +211,10 @@ proc_info_parse_args(int argc, char **argv)
else if (!strncmp(long_option[option_index].name, "xstats",
MAX_LONG_OPT_SZ))
enable_xstats = 1;
+ else if (!strncmp(long_option[option_index].name,
+ "metrics",
+ MAX_LONG_OPT_SZ))
+ enable_metrics = 1;
/* Reset stats */
if (!strncmp(long_option[option_index].name, "stats-reset",
MAX_LONG_OPT_SZ))
@@ -414,6 +424,67 @@ nic_xstats_clear(uint8_t port_id)
printf("\n NIC extended statistics for port %d cleared\n", port_id);
}
+static void
+metrics_display(int port_id)
+{
+ struct rte_metric_value *metrics;
+ struct rte_metric_name *names;
+ int len, ret;
+ static const char *nic_stats_border = "########################";
+
+ len = rte_metrics_get_names(NULL, 0);
+ if (len < 0) {
+ printf("Cannot get metrics count\n");
+ return;
+ }
+ if (len == 0) {
+ printf("No metrics to display (none have been registered)\n");
+ return;
+ }
+
+ metrics = rte_malloc("proc_info_metrics",
+ sizeof(struct rte_metric_value) * len, 0);
+ if (metrics == NULL) {
+ printf("Cannot allocate memory for metrics\n");
+ return;
+ }
+
+ names = rte_malloc(NULL, sizeof(struct rte_metric_name) * len, 0);
+ if (names == NULL) {
+ printf("Cannot allocate memory for metrcis names\n");
+ rte_free(metrics);
+ return;
+ }
+
+ if (len != rte_metrics_get_names(names, len)) {
+ printf("Cannot get metrics names\n");
+ rte_free(metrics);
+ rte_free(names);
+ return;
+ }
+
+ if (port_id == RTE_METRICS_GLOBAL)
+ printf("###### Non port specific metrics #########\n");
+ else
+ printf("###### metrics for port %-2d #########\n", port_id);
+ printf("%s############################\n", nic_stats_border);
+ ret = rte_metrics_get_values(port_id, metrics, len);
+ if (ret < 0 || ret > len) {
+ printf("Cannot get metrics values\n");
+ rte_free(metrics);
+ rte_free(names);
+ return;
+ }
+
+ int i;
+ for (i = 0; i < len; i++)
+ printf("%s: %"PRIu64"\n", names[i].name, metrics[i].value);
+
+ printf("%s############################\n", nic_stats_border);
+ rte_free(metrics);
+ rte_free(names);
+}
+
int
main(int argc, char **argv)
{
@@ -480,8 +551,14 @@ main(int argc, char **argv)
nic_stats_clear(i);
else if (reset_xstats)
nic_xstats_clear(i);
+ else if (enable_metrics)
+ metrics_display(i);
}
}
+ /* print port independent stats */
+ if (enable_metrics)
+ metrics_display(RTE_METRICS_GLOBAL);
+
return 0;
}
--
2.5.5
next prev parent reply other threads:[~2017-03-27 20:21 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-27 20:21 [PATCH v12 0/6] Expanded statistics reporting Remy Horton
2017-03-27 20:21 ` [PATCH v12 1/6] lib: add information metrics library Remy Horton
2017-03-28 14:14 ` Pattan, Reshma
2017-03-28 15:00 ` Remy Horton
2017-03-27 20:21 ` Remy Horton [this message]
2017-03-27 20:21 ` [PATCH v12 3/6] lib: add bitrate statistics library Remy Horton
2017-03-28 15:30 ` Pattan, Reshma
2017-03-28 15:45 ` Remy Horton
2017-03-27 20:21 ` [PATCH v12 4/6] app/test-pmd: add bitrate statistics calculation Remy Horton
2017-03-28 15:49 ` Pattan, Reshma
2017-03-27 20:21 ` [PATCH v12 5/6] lib: added new library for latency stats Remy Horton
2017-03-27 20:21 ` [PATCH v12 6/6] app/test-pmd: add latency statistics calculation Remy Horton
2017-03-27 21:03 ` [PATCH v12 0/6] Expanded statistics reporting Stephen Hemminger
2017-03-28 11:21 ` Mcnamara, John
2017-03-29 18:28 ` [PATCH v13 " Remy Horton
2017-03-29 18:28 ` [PATCH v13 1/6] lib: add information metrics library Remy Horton
2017-03-30 10:01 ` Pattan, Reshma
2017-03-29 18:28 ` [PATCH v13 2/6] app/proc_info: add metrics displaying Remy Horton
2017-03-29 18:28 ` [PATCH v13 3/6] lib: add bitrate statistics library Remy Horton
2017-03-30 10:04 ` Pattan, Reshma
2017-03-30 10:08 ` Pattan, Reshma
2017-03-29 18:28 ` [PATCH v13 4/6] app/test-pmd: add bitrate statistics calculation Remy Horton
2017-03-29 18:28 ` [PATCH v13 5/6] lib: added new library for latency stats Remy Horton
2017-03-29 18:28 ` [PATCH v13 6/6] app/test-pmd: add latency statistics calculation Remy Horton
2017-03-30 10:22 ` Pattan, Reshma
2017-03-30 13:18 ` [PATCH v13 0/6] Expanded statistics reporting Pattan, Reshma
2017-03-30 21:00 ` [PATCH v14 " Remy Horton
2017-03-30 21:00 ` [PATCH v14 1/6] lib: add information metrics library Remy Horton
2017-04-05 13:39 ` Thomas Monjalon
2017-04-05 14:46 ` Remy Horton
2017-04-05 15:06 ` Thomas Monjalon
2017-04-05 15:16 ` Remy Horton
2017-04-05 15:23 ` Thomas Monjalon
2017-03-30 21:00 ` [PATCH v14 2/6] app/proc_info: add metrics displaying Remy Horton
2017-03-30 21:00 ` [PATCH v14 3/6] lib: add bitrate statistics library Remy Horton
2017-03-30 21:01 ` [PATCH v14 4/6] app/test-pmd: add bitrate statistics calculation Remy Horton
2017-03-30 21:01 ` [PATCH v14 5/6] lib: added new library for latency stats Remy Horton
2017-04-05 14:24 ` Thomas Monjalon
2017-04-05 14:34 ` Remy Horton
2017-03-30 21:01 ` [PATCH v14 6/6] app/test-pmd: add latency statistics calculation Remy Horton
2017-04-05 16:01 ` [PATCH v14 0/6] Expanded statistics reporting 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=1490646097-27803-3-git-send-email-remy.horton@intel.com \
--to=remy.horton@intel.com \
--cc=dev@dpdk.org \
--cc=reshma.pattan@intel.com \
--cc=thomas.monjalon@6wind.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.