From patchwork Mon Dec 3 05:49:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Varghese, Vipin" X-Patchwork-Id: 48461 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E5D241B3E8; Mon, 3 Dec 2018 06:53:35 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 5A8675F27 for ; Mon, 3 Dec 2018 06:53:34 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Dec 2018 21:53:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,309,1539673200"; d="scan'208";a="280400256" Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203]) by orsmga005.jf.intel.com with ESMTP; 02 Dec 2018 21:53:30 -0800 From: Vipin Varghese To: konstantin.ananyev@intel.com, stephen@networkplumber.org, reshma.pattan@intel.com, dev@dpdk.org, john.mcnamara@intel.com Cc: thomas@monjalon.net, stephen1.byrne@intel.com, amol.patel@intel.com, Vipin Varghese Date: Mon, 3 Dec 2018 11:19:52 +0530 Message-Id: <20181203055000.39012-2-vipin.varghese@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181203055000.39012-1-vipin.varghese@intel.com> References: <20181122141543.37067-1-vipin.varghese@intel.com> <20181203055000.39012-1-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH v6 1/9] app/procinfo: add usage for new debug X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Update the file with MACRO for stats border, usage text information and string comparision. Signed-off-by: Vipin Varghese --- V6: - add mempool iterate elements option - Vipin Varghese V3: - change the usage details - Vipin Varghese V2: - change word dbg to show - Stephen Hemminger --- app/proc-info/main.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index c20effa4f..c034aad97 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -36,6 +36,10 @@ #define MAX_STRING_LEN 256 +#define STATS_BDR_FMT "========================================" +#define STATS_BDR_STR(w, s) printf("%.*s%s%.*s\n", w, \ + STATS_BDR_FMT, s, w, STATS_BDR_FMT) + /**< mask of enabled ports */ static uint32_t enabled_port_mask; /**< Enable stats. */ @@ -83,7 +87,13 @@ proc_info_usage(const char *prgname) " --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" - " --host-id STRING: host id used to identify the system process is running on\n", + " --host-id STRING: host id used to identify the system process is running on\n" + " --show-port to display ports information\n" + " --show-tm to display traffic manager information for ports\n" + " --show-crypto to display crypto information\n" + " --show-ring[=name] to display ring information\n" + " --show-mempool[=name] to display mempool information\n" + " --iter-mempool=name to iterate mempool elements\n", prgname); } @@ -190,6 +200,12 @@ proc_info_parse_args(int argc, char **argv) {"collectd-format", 0, NULL, 0}, {"xstats-ids", 1, NULL, 1}, {"host-id", 0, NULL, 0}, + {"show-port", 0, NULL, 0}, + {"show-tm", 0, NULL, 0}, + {"show-crypto", 0, NULL, 0}, + {"show-ring", optional_argument, NULL, 0}, + {"show-mempool", optional_argument, NULL, 0}, + {"iter-mempool", required_argument, NULL, 0}, {NULL, 0, 0, 0} }; From patchwork Mon Dec 3 05:49:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Varghese, Vipin" X-Patchwork-Id: 48462 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2C66F1B431; Mon, 3 Dec 2018 06:53:38 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 452641B431 for ; Mon, 3 Dec 2018 06:53:37 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Dec 2018 21:53:36 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,309,1539673200"; d="scan'208";a="280400271" Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203]) by orsmga005.jf.intel.com with ESMTP; 02 Dec 2018 21:53:34 -0800 From: Vipin Varghese To: konstantin.ananyev@intel.com, stephen@networkplumber.org, reshma.pattan@intel.com, dev@dpdk.org, john.mcnamara@intel.com Cc: thomas@monjalon.net, stephen1.byrne@intel.com, amol.patel@intel.com, Vipin Varghese Date: Mon, 3 Dec 2018 11:19:53 +0530 Message-Id: <20181203055000.39012-3-vipin.varghese@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181203055000.39012-1-vipin.varghese@intel.com> References: <20181122141543.37067-1-vipin.varghese@intel.com> <20181203055000.39012-1-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH v6 2/9] app/procinfo: add compare for new options X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add code for new debug options to compare usage strings and set enable flag. Signed-off-by: Vipin Varghese --- V6: - check for iter mempool - Vipin Varghese V3: - variables from debug to show - Vipin Varghese V2: - compare string from dbg to show - Stephen Hemminger --- app/proc-info/main.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index c034aad97..bda7e9af8 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -63,6 +63,21 @@ static uint32_t mem_info; /**< Enable displaying xstat name. */ static uint32_t enable_xstats_name; static char *xstats_name; +/**< Enable show port. */ +static uint32_t enable_shw_port; +/**< Enable show tm. */ +static uint32_t enable_shw_tm; +/**< Enable show crypto. */ +static uint32_t enable_shw_crypto; +/**< Enable show ring. */ +static uint32_t enable_shw_ring; +static char *ring_name; +/**< Enable show mempool. */ +static uint32_t enable_shw_mempool; +static char *mempool_name; +/**< Enable iter mempool. */ +static uint32_t enable_iter_mempool; +static char *mempool_iter_name; /**< Enable xstats by ids. */ #define MAX_NB_XSTATS_IDS 1024 @@ -249,6 +264,29 @@ 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, + "show-port", MAX_LONG_OPT_SZ)) + enable_shw_port = 1; + else if (!strncmp(long_option[option_index].name, + "show-tm", MAX_LONG_OPT_SZ)) + enable_shw_tm = 1; + else if (!strncmp(long_option[option_index].name, + "show-crypto", MAX_LONG_OPT_SZ)) + enable_shw_crypto = 1; + else if (!strncmp(long_option[option_index].name, + "show-ring", MAX_LONG_OPT_SZ)) { + enable_shw_ring = 1; + ring_name = optarg; + } else if (!strncmp(long_option[option_index].name, + "show-mempool", MAX_LONG_OPT_SZ)) { + enable_shw_mempool = 1; + mempool_name = optarg; + } else if (!strncmp(long_option[option_index].name, + "iter-mempool", MAX_LONG_OPT_SZ)) { + enable_iter_mempool = 1; + mempool_iter_name = optarg; + } + break; case 1: /* Print xstat single value given by name*/ From patchwork Mon Dec 3 05:49:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Varghese, Vipin" X-Patchwork-Id: 48463 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5F79E1B444; Mon, 3 Dec 2018 06:53:42 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id CA52F1B274 for ; Mon, 3 Dec 2018 06:53:40 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Dec 2018 21:53:40 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,309,1539673200"; d="scan'208";a="280400280" Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203]) by orsmga005.jf.intel.com with ESMTP; 02 Dec 2018 21:53:37 -0800 From: Vipin Varghese To: konstantin.ananyev@intel.com, stephen@networkplumber.org, reshma.pattan@intel.com, dev@dpdk.org, john.mcnamara@intel.com Cc: thomas@monjalon.net, stephen1.byrne@intel.com, amol.patel@intel.com, Vipin Varghese Date: Mon, 3 Dec 2018 11:19:54 +0530 Message-Id: <20181203055000.39012-4-vipin.varghese@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181203055000.39012-1-vipin.varghese@intel.com> References: <20181122141543.37067-1-vipin.varghese@intel.com> <20181203055000.39012-1-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH v6 3/9] app/procinfo: add prototype for debug instances X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add prototype function calls for the show functions. Signed-off-by: Vipin Varghese --- V6: - add call to iter mempool - Vipin Varghese V3: - update function names from debug to show - Vipin Varghese V2: - removed if else ladder - Vipin Varghese --- app/proc-info/main.c | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index bda7e9af8..698b120f2 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -638,6 +638,42 @@ metrics_display(int port_id) rte_free(names); } +static void +show_port(void) +{ + printf(" port\n"); +} + +static void +show_tm(void) +{ + printf(" tm\n"); +} + +static void +show_crypto(void) +{ + printf(" crypto\n"); +} + +static void +show_ring(char *name) +{ + printf(" ring Name (%s)\n", name); +} + +static void +show_mempool(char *name) +{ + printf(" mempool Name (%s)\n", name); +} + +static void +iter_mempool(char *name) +{ + printf(" Iter elements in mempool (%s)\n", name); +} + int main(int argc, char **argv) { @@ -718,6 +754,20 @@ main(int argc, char **argv) if (enable_metrics) metrics_display(RTE_METRICS_GLOBAL); + /* show information for PMD */ + if (enable_shw_port) + show_port(); + if (enable_shw_tm) + show_tm(); + if (enable_shw_crypto) + show_crypto(); + if (enable_shw_ring) + show_ring(ring_name); + if (enable_shw_mempool) + show_mempool(mempool_name); + if (enable_iter_mempool) + iter_mempool(mempool_iter_name); + ret = rte_eal_cleanup(); if (ret) printf("Error from rte_eal_cleanup(), %d\n", ret); From patchwork Mon Dec 3 05:49:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Varghese, Vipin" X-Patchwork-Id: 48464 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C630A1B450; Mon, 3 Dec 2018 06:53:46 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 9C5D91B461 for ; Mon, 3 Dec 2018 06:53:44 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Dec 2018 21:53:44 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,309,1539673200"; d="scan'208";a="280400290" Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203]) by orsmga005.jf.intel.com with ESMTP; 02 Dec 2018 21:53:41 -0800 From: Vipin Varghese To: konstantin.ananyev@intel.com, stephen@networkplumber.org, reshma.pattan@intel.com, dev@dpdk.org, john.mcnamara@intel.com Cc: thomas@monjalon.net, stephen1.byrne@intel.com, amol.patel@intel.com, Vipin Varghese Date: Mon, 3 Dec 2018 11:19:55 +0530 Message-Id: <20181203055000.39012-5-vipin.varghese@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181203055000.39012-1-vipin.varghese@intel.com> References: <20181122141543.37067-1-vipin.varghese@intel.com> <20181203055000.39012-1-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH v6 4/9] app/procinfo: add support for show port X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Function show_port is used for displaying the port PMD information under under primary process. The information shows basic, per queue and security. Signed-off-by: Vipin Varghese --- V5: - convert 100 to MAX_STRING_LEN - Reshma Pattan - RSS made for port - Reshma Pattan - update bdr_str to static - Stephen Hemminger - remove memset for link, dev_info, queue, stats - Stephen Hemminger V3: - fix meson build - Reshma Pattan - change 100 to MAX_STRING_LEN - Reshma Pattan - memset to struct elements - Reshma Pattan - printf tab space - Reshma Pattan - remove 'drop packet information' - Vipin Varghese V2: - redefine code format - Vipin Varghese --- app/proc-info/main.c | 117 +++++++++++++++++++++++++++++++++++++- app/proc-info/meson.build | 2 +- 2 files changed, 117 insertions(+), 2 deletions(-) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index 698b120f2..dda6499b6 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -29,6 +29,9 @@ #include #include #include +#include +#include +#include /* Maximum long option length for option parsing. */ #define MAX_LONG_OPT_SZ 64 @@ -84,6 +87,9 @@ static char *mempool_iter_name; static uint32_t nb_xstats_ids; static uint64_t xstats_ids[MAX_NB_XSTATS_IDS]; +/* border variable to hold for show */ +static char bdr_str[MAX_STRING_LEN]; + /**< display usage */ static void proc_info_usage(const char *prgname) @@ -641,7 +647,116 @@ metrics_display(int port_id) static void show_port(void) { - printf(" port\n"); + uint16_t i = 0; + int ret = 0, j, k; + + snprintf(bdr_str, MAX_STRING_LEN, " show - Port PMD %"PRIu64, + rte_get_tsc_hz()); + STATS_BDR_STR(10, bdr_str); + + RTE_ETH_FOREACH_DEV(i) { + uint16_t mtu = 0; + struct rte_eth_link link; + struct rte_eth_dev_info dev_info; + struct rte_eth_rxq_info queue_info; + struct rte_eth_stats stats; + struct rte_eth_rss_conf rss_conf; + + memset(&rss_conf, 0, sizeof(rss_conf)); + + snprintf(bdr_str, MAX_STRING_LEN, " Port (%u)", i); + STATS_BDR_STR(5, bdr_str); + printf(" - generic config\n"); + + printf("\t -- Socket %d\n", rte_eth_dev_socket_id(i)); + rte_eth_link_get(i, &link); + printf("\t -- link speed %d duplex %d," + " auto neg %d status %d\n", + link.link_speed, + link.link_duplex, + link.link_autoneg, + link.link_status); + printf("\t -- promiscuous (%d)\n", + rte_eth_promiscuous_get(i)); + ret = rte_eth_dev_get_mtu(i, &mtu); + if (ret == 0) + printf("\t -- mtu (%d)\n", mtu); + + printf(" - queue\n"); + + rte_eth_dev_info_get(i, &dev_info); + + for (j = 0; j < dev_info.nb_rx_queues; j++) { + ret = rte_eth_rx_queue_info_get(i, j, &queue_info); + if (ret == 0) { + printf("\t -- queue %d rx scatter %d" + " descriptors %d offloads 0x%"PRIx64 + " mempool socket %d\n", + j, + queue_info.scattered_rx, + queue_info.nb_desc, + queue_info.conf.offloads, + queue_info.mp->socket_id); + + ret = rte_eth_stats_get(i, &stats); + if (ret == 0) { + printf("\t -- packet input %"PRIu64 + " output %"PRIu64"" + " error %"PRIu64"\n", + stats.q_ipackets[j], + stats.q_opackets[j], + stats.q_errors[j]); + } + } + } + + ret = rte_eth_dev_rss_hash_conf_get(i, &rss_conf); + if (ret == 0) { + if (rss_conf.rss_key) { + printf("\t -- RSS len %u key (hex):", + rss_conf.rss_key_len); + for (k = 0; k < rss_conf.rss_key_len; k++) + printf(" %x", rss_conf.rss_key[k]); + printf("\t -- hf 0x%"PRIx64"\n", + rss_conf.rss_hf); + } + } + + ret = rte_eth_stats_get(i, &stats); + if (ret == 0) { + printf("\t -- packet input %"PRIu64 + " output %"PRIu64"\n", + stats.ipackets, + stats.opackets); + printf("\t -- packet error input %"PRIu64 + " output %"PRIu64"\n", + stats.ierrors, + stats.oerrors); + printf("\t -- RX no mbuf %"PRIu64"\n", + stats.rx_nombuf); + } + + printf(" - cyrpto context\n"); + void *ptr_ctx = rte_eth_dev_get_sec_ctx(i); + printf("\t -- security context - %p\n", ptr_ctx); + + if (ptr_ctx) { + printf("\t -- size %u\n", + rte_security_session_get_size(ptr_ctx)); + const struct rte_security_capability *ptr_sec_cap = + rte_security_capabilities_get(ptr_ctx); + if (ptr_sec_cap) { + printf("\t -- action (0x%x), protocol (0x%x)," + " offload flags (0x%x)\n", + ptr_sec_cap->action, + ptr_sec_cap->protocol, + ptr_sec_cap->ol_flags); + printf("\t -- capabilities - oper type %x\n", + ptr_sec_cap->crypto_capabilities->op); + } + } + } + STATS_BDR_STR(50, ""); } static void diff --git a/app/proc-info/meson.build b/app/proc-info/meson.build index a52b2ee4a..866b390d6 100644 --- a/app/proc-info/meson.build +++ b/app/proc-info/meson.build @@ -3,4 +3,4 @@ sources = files('main.c') allow_experimental_apis = true -deps += ['ethdev', 'metrics'] +deps += ['ethdev', 'metrics', 'security'] From patchwork Mon Dec 3 05:49:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Varghese, Vipin" X-Patchwork-Id: 48465 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E79CA1B463; Mon, 3 Dec 2018 06:53:50 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id E3E715B3A for ; Mon, 3 Dec 2018 06:53:48 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Dec 2018 21:53:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,309,1539673200"; d="scan'208";a="280400302" Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203]) by orsmga005.jf.intel.com with ESMTP; 02 Dec 2018 21:53:45 -0800 From: Vipin Varghese To: konstantin.ananyev@intel.com, stephen@networkplumber.org, reshma.pattan@intel.com, dev@dpdk.org, john.mcnamara@intel.com Cc: thomas@monjalon.net, stephen1.byrne@intel.com, amol.patel@intel.com, Vipin Varghese Date: Mon, 3 Dec 2018 11:19:56 +0530 Message-Id: <20181203055000.39012-6-vipin.varghese@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181203055000.39012-1-vipin.varghese@intel.com> References: <20181122141543.37067-1-vipin.varghese@intel.com> <20181203055000.39012-1-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH v6 5/9] app/procinfo: add support for show tm X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Function show_tm is used for displaying the tm PMD under the primary process. This covers basic and per node|level details with stats. Signed-off-by: Vipin Varghese --- V6: - replace or with logical or - Reshma Pathan & Konstantin Ananyev V3: - memset for struct elements - Vipin Varghese - code cleanup for TM - Vipin Varghese - fetch for leaf nodes if node exist - Jasvinder Singh - display MARCO to function - Reshma Pathan & Stephen Hemminger V2: - MACRO for display node|level - cap - Vipin Varghese --- app/proc-info/main.c | 276 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 275 insertions(+), 1 deletion(-) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index dda6499b6..67e962878 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -32,6 +32,7 @@ #include #include #include +#include /* Maximum long option length for option parsing. */ #define MAX_LONG_OPT_SZ 64 @@ -759,10 +760,283 @@ show_port(void) STATS_BDR_STR(50, ""); } +static void +display_nodecap_info(int is_leaf, struct rte_tm_node_capabilities *cap) +{ + if (cap == NULL) + return; + + if (!is_leaf) { + printf("\t -- nonleaf sched max:\n" + "\t\t + children (%u)\n" + "\t\t + sp priorities (%u)\n" + "\t\t + wfq children per group (%u)\n" + "\t\t + wfq groups (%u)\n" + "\t\t + wfq weight (%u)\n", + cap->nonleaf.sched_n_children_max, + cap->nonleaf.sched_sp_n_priorities_max, + cap->nonleaf.sched_wfq_n_children_per_group_max, + cap->nonleaf.sched_wfq_n_groups_max, + cap->nonleaf.sched_wfq_weight_max); + } else { + printf("\t -- leaf cman support:\n" + "\t\t + wred pkt mode (%d)\n" + "\t\t + wred byte mode (%d)\n" + "\t\t + head drop (%d)\n" + "\t\t + wred context private (%d)\n" + "\t\t + wred context shared (%u)\n", + cap->leaf.cman_wred_packet_mode_supported, + cap->leaf.cman_wred_byte_mode_supported, + cap->leaf.cman_head_drop_supported, + cap->leaf.cman_wred_context_private_supported, + cap->leaf.cman_wred_context_shared_n_max); + } +} + +static void +display_levelcap_info(int is_leaf, struct rte_tm_level_capabilities *cap) +{ + if (cap == NULL) + return; + + if (!is_leaf) { + printf("\t -- shaper private: (%d) dual rate (%d)\n", + cap->nonleaf.shaper_private_supported, + cap->nonleaf.shaper_private_dual_rate_supported); + printf("\t -- shaper share: (%u)\n", + cap->nonleaf.shaper_shared_n_max); + printf("\t -- non leaf sched MAX:\n" + "\t\t + children (%u)\n" + "\t\t + sp (%u)\n" + "\t\t + wfq children per group (%u)\n" + "\t\t + wfq groups (%u)\n" + "\t\t + wfq weight (%u)\n", + cap->nonleaf.sched_n_children_max, + cap->nonleaf.sched_sp_n_priorities_max, + cap->nonleaf.sched_wfq_n_children_per_group_max, + cap->nonleaf.sched_wfq_n_groups_max, + cap->nonleaf.sched_wfq_weight_max); + } else { + printf("\t -- shaper private: (%d) dual rate (%d)\n", + cap->leaf.shaper_private_supported, + cap->leaf.shaper_private_dual_rate_supported); + printf("\t -- shaper share: (%u)\n", + cap->leaf.shaper_shared_n_max); + printf(" -- leaf cman support:\n" + "\t\t + wred pkt mode (%d)\n" + "\t\t + wred byte mode (%d)\n" + "\t\t + head drop (%d)\n" + "\t\t + wred context private (%d)\n" + "\t\t + wred context shared (%u)\n", + cap->leaf.cman_wred_packet_mode_supported, + cap->leaf.cman_wred_byte_mode_supported, + cap->leaf.cman_head_drop_supported, + cap->leaf.cman_wred_context_private_supported, + cap->leaf.cman_wred_context_shared_n_max); + } +} + static void show_tm(void) { - printf(" tm\n"); + int ret = 0, check_for_leaf = 0, is_leaf = 0; + unsigned int j, k; + uint16_t i = 0; + + snprintf(bdr_str, MAX_STRING_LEN, " show - TM PMD %"PRIu64, + rte_get_tsc_hz()); + STATS_BDR_STR(10, bdr_str); + + RTE_ETH_FOREACH_DEV(i) { + struct rte_eth_dev_info dev_info; + struct rte_tm_capabilities cap; + struct rte_tm_error error; + struct rte_tm_node_capabilities capnode; + struct rte_tm_level_capabilities caplevel; + uint32_t n_leaf_nodes = 0; + + memset(&dev_info, 0, sizeof(dev_info)); + memset(&cap, 0, sizeof(cap)); + memset(&error, 0, sizeof(error)); + + rte_eth_dev_info_get(i, &dev_info); + printf(" - Generic for port (%u)\n" + "\t -- driver name %s\n" + "\t -- max vf (%u)\n" + "\t -- max tx queues (%u)\n" + "\t -- number of tx queues (%u)\n", + i, + dev_info.driver_name, + dev_info.max_vfs, + dev_info.max_tx_queues, + dev_info.nb_tx_queues); + + ret = rte_tm_capabilities_get(i, &cap, &error); + if (ret) + continue; + + printf(" - MAX: nodes (%u) levels (%u) children (%u)\n", + cap.n_nodes_max, + cap.n_levels_max, + cap.sched_n_children_max); + + printf(" - identical nodes: non leaf (%d) leaf (%d)\n", + cap.non_leaf_nodes_identical, + cap.leaf_nodes_identical); + + printf(" - Shaper MAX:\n" + "\t -- total (%u)\n" + "\t -- private (%u) private dual (%d)\n" + "\t -- shared (%u) shared dual (%u)\n", + cap.shaper_n_max, + cap.shaper_private_n_max, + cap.shaper_private_dual_rate_n_max, + cap.shaper_shared_n_max, + cap.shaper_shared_dual_rate_n_max); + + printf(" - mark support:\n"); + printf("\t -- vlan dei: GREEN (%d) YELLOW (%d) RED (%d)\n", + cap.mark_vlan_dei_supported[RTE_TM_GREEN], + cap.mark_vlan_dei_supported[RTE_TM_YELLOW], + cap.mark_vlan_dei_supported[RTE_TM_RED]); + printf("\t -- ip ecn tcp: GREEN (%d) YELLOW (%d) RED (%d)\n", + cap.mark_ip_ecn_tcp_supported[RTE_TM_GREEN], + cap.mark_ip_ecn_tcp_supported[RTE_TM_YELLOW], + cap.mark_ip_ecn_tcp_supported[RTE_TM_RED]); + printf("\t -- ip ecn sctp: GREEN (%d) YELLOW (%d) RED (%d)\n", + cap.mark_ip_ecn_sctp_supported[RTE_TM_GREEN], + cap.mark_ip_ecn_sctp_supported[RTE_TM_YELLOW], + cap.mark_ip_ecn_sctp_supported[RTE_TM_RED]); + printf("\t -- ip dscp: GREEN (%d) YELLOW (%d) RED (%d)\n", + cap.mark_ip_dscp_supported[RTE_TM_GREEN], + cap.mark_ip_dscp_supported[RTE_TM_YELLOW], + cap.mark_ip_dscp_supported[RTE_TM_RED]); + + printf(" - mask stats (0x%"PRIx64")" + " dynamic update (0x%"PRIx64")\n", + cap.stats_mask, + cap.dynamic_update_mask); + + printf(" - sched MAX:\n" + "\t -- total (%u)\n" + "\t -- sp levels (%u)\n" + "\t -- wfq children per group (%u)\n" + "\t -- wfq groups (%u)\n" + "\t -- wfq weight (%u)\n", + cap.sched_sp_n_priorities_max, + cap.sched_sp_n_priorities_max, + cap.sched_wfq_n_children_per_group_max, + cap.sched_wfq_n_groups_max, + cap.sched_wfq_weight_max); + + printf(" - CMAN support:\n" + "\t -- WRED mode: pkt (%d) byte (%d)\n" + "\t -- head drop (%d)\n", + cap.cman_wred_packet_mode_supported, + cap.cman_wred_byte_mode_supported, + cap.cman_head_drop_supported); + printf("\t -- MAX WRED CONTEXT:" + " total (%u) private (%u) shared (%u)\n", + cap.cman_wred_context_n_max, + cap.cman_wred_context_private_n_max, + cap.cman_wred_context_shared_n_max); + + for (j = 0; j < cap.n_nodes_max; j++) { + memset(&capnode, 0, sizeof(capnode)); + ret = rte_tm_node_capabilities_get(i, j, + &capnode, &error); + if (ret) + continue; + + check_for_leaf = 1; + + printf(" NODE %u\n", j); + printf("\t - shaper private: (%d) dual rate (%d)\n", + capnode.shaper_private_supported, + capnode.shaper_private_dual_rate_supported); + printf("\t - shaper shared max: (%u)\n", + capnode.shaper_shared_n_max); + printf("\t - stats mask %"PRIx64"\n", + capnode.stats_mask); + + ret = rte_tm_node_type_get(i, j, &is_leaf, &error); + if (ret) + continue; + + display_nodecap_info(is_leaf, &capnode); + } + + for (j = 0; j < cap.n_levels_max; j++) { + memset(&caplevel, 0, sizeof(caplevel)); + ret = rte_tm_level_capabilities_get(i, j, + &caplevel, &error); + if (ret) + continue; + + printf(" - Level %u\n", j); + printf("\t -- node MAX: %u non leaf %u leaf %u\n", + caplevel.n_nodes_max, + caplevel.n_nodes_nonleaf_max, + caplevel.n_nodes_leaf_max); + printf("\t -- indetical: non leaf %u leaf %u\n", + caplevel.non_leaf_nodes_identical, + caplevel.leaf_nodes_identical); + + for (k = 0; k < caplevel.n_nodes_max; k++) { + ret = rte_tm_node_type_get(i, k, + &is_leaf, &error); + if (ret) + continue; + + display_levelcap_info(is_leaf, &caplevel); + } + } + + if (check_for_leaf) { + ret = rte_tm_get_number_of_leaf_nodes(i, + &n_leaf_nodes, &error); + if (ret == 0) + printf(" - leaf nodes (%u)\n", n_leaf_nodes); + } + + for (j = 0; j < n_leaf_nodes; j++) { + struct rte_tm_node_stats stats; + memset(&stats, 0, sizeof(stats)); + + ret = rte_tm_node_stats_read(i, j, + &stats, &cap.stats_mask, 0, &error); + if (ret) + continue; + + printf(" - STATS for node (%u)\n", j); + printf(" -- pkts (%"PRIu64") bytes (%"PRIu64")\n", + stats.n_pkts, stats.n_bytes); + + ret = rte_tm_node_type_get(i, j, &is_leaf, &error); + if (ret || (!is_leaf)) + continue; + + printf(" -- leaf queued:" + " pkts (%"PRIu64") bytes (%"PRIu64")\n", + stats.leaf.n_pkts_queued, + stats.leaf.n_bytes_queued); + printf(" - dropped:\n" + "\t -- GREEN:" + " pkts (%"PRIu64") bytes (%"PRIu64")\n" + "\t -- YELLOW:" + " pkts (%"PRIu64") bytes (%"PRIu64")\n" + "\t -- RED:" + " pkts (%"PRIu64") bytes (%"PRIu64")\n", + stats.leaf.n_pkts_dropped[RTE_TM_GREEN], + stats.leaf.n_bytes_dropped[RTE_TM_GREEN], + stats.leaf.n_pkts_dropped[RTE_TM_YELLOW], + stats.leaf.n_bytes_dropped[RTE_TM_YELLOW], + stats.leaf.n_pkts_dropped[RTE_TM_RED], + stats.leaf.n_bytes_dropped[RTE_TM_RED]); + } + } + + STATS_BDR_STR(50, ""); } static void From patchwork Mon Dec 3 05:49:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Varghese, Vipin" X-Patchwork-Id: 48466 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 296391B479; Mon, 3 Dec 2018 06:53:55 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 967FB1B274 for ; Mon, 3 Dec 2018 06:53:53 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Dec 2018 21:53:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,309,1539673200"; d="scan'208";a="280400327" Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203]) by orsmga005.jf.intel.com with ESMTP; 02 Dec 2018 21:53:50 -0800 From: Vipin Varghese To: konstantin.ananyev@intel.com, stephen@networkplumber.org, reshma.pattan@intel.com, dev@dpdk.org, john.mcnamara@intel.com Cc: thomas@monjalon.net, stephen1.byrne@intel.com, amol.patel@intel.com, Vipin Varghese Date: Mon, 3 Dec 2018 11:19:57 +0530 Message-Id: <20181203055000.39012-7-vipin.varghese@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181203055000.39012-1-vipin.varghese@intel.com> References: <20181122141543.37067-1-vipin.varghese@intel.com> <20181203055000.39012-1-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH v6 6/9] app/procinfo: add support for show crypto X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Function show_crypto is used for displaying the crypto PMD under the primary process. Signed-off-by: Vipin Varghese --- v4: - add space to compare - Vipin Varghese V3: - replace MACRO to function - Reshma Pathan & Stephen Hemminger - add memset for struct elements - Reshma Pathan - change display formating of flags - Vipin Varghese - use MACRO for string - Vipin Varghese --- app/proc-info/main.c | 80 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index 67e962878..2aa448605 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -1039,10 +1039,88 @@ show_tm(void) STATS_BDR_STR(50, ""); } +static void +display_crypto_feature_info(uint64_t x) +{ + if (x == 0) + return; + + printf("\t -- feature flags\n"); + printf("\t\t + symmetric (%c), asymmetric (%c)\n" + "\t\t + symmetric operation chaining (%c)\n", + (x & RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO) ? 'y' : 'n', + (x & RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO) ? 'y' : 'n', + (x & RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING) ? 'y' : 'n'); + printf("\t\t + CPU: SSE (%c), AVX (%c), AVX2 (%c), AVX512 (%c)\n", + (x & RTE_CRYPTODEV_FF_CPU_SSE) ? 'y' : 'n', + (x & RTE_CRYPTODEV_FF_CPU_AVX) ? 'y' : 'n', + (x & RTE_CRYPTODEV_FF_CPU_AVX2) ? 'y' : 'n', + (x & RTE_CRYPTODEV_FF_CPU_AVX512) ? 'y' : 'n'); + printf("\t\t + AESNI: CPU (%c), HW (%c)\n", + (x & RTE_CRYPTODEV_FF_CPU_AESNI) ? 'y' : 'n', + (x & RTE_CRYPTODEV_FF_HW_ACCELERATED) ? 'y' : 'n'); + printf("\t\t + INLINE (%c)\n", + (x & RTE_CRYPTODEV_FF_SECURITY) ? 'y' : 'n'); + printf("\t\t + ARM: NEON (%c), CE (%c)\n", + (x & RTE_CRYPTODEV_FF_CPU_NEON) ? 'y' : 'n', + (x & RTE_CRYPTODEV_FF_CPU_ARM_CE) ? 'y' : 'n'); + printf("\t -- buffer offload\n"); + printf("\t\t + IN_PLACE_SGL (%c)\n", + (x & RTE_CRYPTODEV_FF_IN_PLACE_SGL) ? 'y' : 'n'); + printf("\t\t + OOP_SGL_IN_SGL_OUT (%c)\n", + (x & RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT) ? 'y' : 'n'); + printf("\t\t + OOP_SGL_IN_LB_OUT (%c)\n", + (x & RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT) ? 'y' : 'n'); + printf("\t\t + OOP_LB_IN_SGL_OUT (%c)\n", + (x & RTE_CRYPTODEV_FF_OOP_LB_IN_SGL_OUT) ? 'y' : 'n'); + printf("\t\t + OOP_LB_IN_LB_OUT (%c)\n", + (x & RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT) ? 'y' : 'n'); +} + static void show_crypto(void) { - printf(" crypto\n"); + uint8_t crypto_dev_count = rte_cryptodev_count(), i; + + snprintf(bdr_str, MAX_STRING_LEN, " show - CRYPTO PMD %"PRIu64, + rte_get_tsc_hz()); + STATS_BDR_STR(10, bdr_str); + + for (i = 0; i < crypto_dev_count; i++) { + struct rte_cryptodev_info dev_info; + struct rte_cryptodev_stats stats; + + memset(&dev_info, 0, sizeof(dev_info)); + rte_cryptodev_info_get(i, &dev_info); + + printf(" - device (%u)\n", i); + printf("\t -- name (%s)\n" + "\t -- driver (%s)\n" + "\t -- id (%u) on socket (%d)\n" + "\t -- queue pairs (%d)\n", + rte_cryptodev_name_get(i), + dev_info.driver_name, + dev_info.driver_id, + dev_info.device->numa_node, + rte_cryptodev_queue_pair_count(i)); + + display_crypto_feature_info(dev_info.feature_flags); + + printf("\t -- stats\n"); + memset(&stats, 0, sizeof(0)); + if (rte_cryptodev_stats_get(i, &stats) == 0) { + printf("\t\t + enqueue count (%"PRIu64")" + " error (%"PRIu64")\n", + stats.enqueued_count, + stats.enqueue_err_count); + printf("\t\t + dequeue count (%"PRIu64")" + " error (%"PRIu64")\n", + stats.dequeued_count, + stats.dequeue_err_count); + } + } + + STATS_BDR_STR(50, ""); } static void From patchwork Mon Dec 3 05:49:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Varghese, Vipin" X-Patchwork-Id: 48467 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 422701B466; Mon, 3 Dec 2018 06:53:59 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id BF4B51B44A for ; Mon, 3 Dec 2018 06:53:57 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Dec 2018 21:53:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,309,1539673200"; d="scan'208";a="280400338" Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203]) by orsmga005.jf.intel.com with ESMTP; 02 Dec 2018 21:53:54 -0800 From: Vipin Varghese To: konstantin.ananyev@intel.com, stephen@networkplumber.org, reshma.pattan@intel.com, dev@dpdk.org, john.mcnamara@intel.com Cc: thomas@monjalon.net, stephen1.byrne@intel.com, amol.patel@intel.com, Vipin Varghese Date: Mon, 3 Dec 2018 11:19:58 +0530 Message-Id: <20181203055000.39012-8-vipin.varghese@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181203055000.39012-1-vipin.varghese@intel.com> References: <20181122141543.37067-1-vipin.varghese@intel.com> <20181203055000.39012-1-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH v6 7/9] app/procinfo: add support for debug ring X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Function show_ring is used for displaying the RING of the primary process. Signed-off-by: Vipin Varghese --- V3: - replace space to tab in printf - Reshma Pathan - change ring display information - Vipin Varghese --- app/proc-info/main.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index 2aa448605..00b2d85f7 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -1126,7 +1126,39 @@ show_crypto(void) static void show_ring(char *name) { - printf(" ring Name (%s)\n", name); + snprintf(bdr_str, MAX_STRING_LEN, " show - RING %"PRIu64, + rte_get_tsc_hz()); + STATS_BDR_STR(10, bdr_str); + + if (name != NULL) { + struct rte_ring *ptr = rte_ring_lookup(name); + if (ptr != NULL) { + printf(" - Name (%s) on socket (%d)\n" + " - flags:\n" + "\t -- Single Producer Enqueue (%u)\n" + "\t -- Single Consmer Dequeue (%u)\n", + ptr->name, + ptr->memzone->socket_id, + ptr->flags & RING_F_SP_ENQ, + ptr->flags & RING_F_SC_DEQ); + printf(" - size (%u) mask (0x%x) capacity (%u)\n", + ptr->size, + ptr->mask, + ptr->capacity); + printf(" - count (%u) free count (%u)\n", + rte_ring_count(ptr), + rte_ring_free_count(ptr)); + printf(" - full (%d) empty (%d)\n", + rte_ring_full(ptr), + rte_ring_empty(ptr)); + + STATS_BDR_STR(50, ""); + return; + } + } + + rte_ring_list_dump(stdout); + STATS_BDR_STR(50, ""); } static void From patchwork Mon Dec 3 05:49:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Varghese, Vipin" X-Patchwork-Id: 48468 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A806D1B4AA; Mon, 3 Dec 2018 06:54:02 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 959241B4A7 for ; Mon, 3 Dec 2018 06:54:01 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Dec 2018 21:54:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,309,1539673200"; d="scan'208";a="280400344" Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203]) by orsmga005.jf.intel.com with ESMTP; 02 Dec 2018 21:53:58 -0800 From: Vipin Varghese To: konstantin.ananyev@intel.com, stephen@networkplumber.org, reshma.pattan@intel.com, dev@dpdk.org, john.mcnamara@intel.com Cc: thomas@monjalon.net, stephen1.byrne@intel.com, amol.patel@intel.com, Vipin Varghese Date: Mon, 3 Dec 2018 11:19:59 +0530 Message-Id: <20181203055000.39012-9-vipin.varghese@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181203055000.39012-1-vipin.varghese@intel.com> References: <20181122141543.37067-1-vipin.varghese@intel.com> <20181203055000.39012-1-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH v6 8/9] app/procinfo: add support for show iter mempool X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Function show_mempool is used for displaying valid MEMPOOL. Function iter_mempool is used for iterating mempool elements for a mempool for max of 256 bytes. In case of show_mempool for invalid name, whole list is dump. Signed-off-by: Vipin Varghese --- V6: - split iter mempool - Vipin Varghese V5: - update ret to uint32_t - Reshma Pattan v4: - add spacing for flag compare - Vipin Varghese V3: - add avail and in use - Vipin Varghese - add flag split - Vipin Varghese --- app/proc-info/main.c | 80 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 2 deletions(-) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index 00b2d85f7..7a7e7372e 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -33,6 +33,7 @@ #include #include #include +#include /* Maximum long option length for option parsing. */ #define MAX_LONG_OPT_SZ 64 @@ -1161,16 +1162,91 @@ show_ring(char *name) STATS_BDR_STR(50, ""); } +static void +mempool_itr_obj(struct rte_mempool *mp, + void *opaque, void *obj, + unsigned int obj_idx) +{ + printf(" - obj_idx %u opaque %p obj %p\n", + obj_idx, opaque, obj); + + if (obj) + rte_hexdump(stdout, " Obj Content", + obj, (mp->elt_size > 256)?256:mp->elt_size); +} + static void show_mempool(char *name) { - printf(" mempool Name (%s)\n", name); + uint64_t flags = 0; + + snprintf(bdr_str, MAX_STRING_LEN, " show - MEMPOOL %"PRIu64, + rte_get_tsc_hz()); + STATS_BDR_STR(10, bdr_str); + + if (name != NULL) { + struct rte_mempool *ptr = rte_mempool_lookup(name); + if (ptr != NULL) { + flags = ptr->flags; + printf(" - Name: %s on socket %d\n" + " - flags:\n" + "\t -- No spread (%c)\n" + "\t -- No cache align (%c)\n" + "\t -- SP put (%c), SC get (%c)\n" + "\t -- Pool created (%c)\n" + "\t -- No IOVA config (%c)\n", + ptr->name, + ptr->socket_id, + (flags & MEMPOOL_F_NO_SPREAD) ? 'y' : 'n', + (flags & MEMPOOL_F_NO_CACHE_ALIGN) ? 'y' : 'n', + (flags & MEMPOOL_F_SP_PUT) ? 'y' : 'n', + (flags & MEMPOOL_F_SC_GET) ? 'y' : 'n', + (flags & MEMPOOL_F_POOL_CREATED) ? 'y' : 'n', + (flags & MEMPOOL_F_NO_IOVA_CONTIG) ? 'y' : 'n'); + printf(" - Size %u Cache %u element %u\n" + " - header %u trailer %u\n" + " - private data size %u\n", + ptr->size, + ptr->cache_size, + ptr->elt_size, + ptr->header_size, + ptr->trailer_size, + ptr->private_data_size); + printf(" - memezone - socket %d\n", + ptr->mz->socket_id); + printf(" - Count: avail (%u), in use (%u)\n", + rte_mempool_avail_count(ptr), + rte_mempool_in_use_count(ptr)); + + STATS_BDR_STR(50, ""); + return; + } + } + + rte_mempool_list_dump(stdout); + STATS_BDR_STR(50, ""); } static void iter_mempool(char *name) { - printf(" Iter elements in mempool (%s)\n", name); + snprintf(bdr_str, MAX_STRING_LEN, " iter - MEMPOOL %"PRIu64, + rte_get_tsc_hz()); + STATS_BDR_STR(10, bdr_str); + + if (name != NULL) { + struct rte_mempool *ptr = rte_mempool_lookup(name); + if (ptr != NULL) { + /* iterate each object */ + uint32_t ret = rte_mempool_obj_iter(ptr, + mempool_itr_obj, NULL); + printf(" - iterated %u objects\n", ret); + STATS_BDR_STR(50, ""); + return; + } + } + + STATS_BDR_STR(50, ""); } int From patchwork Mon Dec 3 05:50:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Varghese, Vipin" X-Patchwork-Id: 48469 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1823F1B4C0; Mon, 3 Dec 2018 06:54:07 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 40CC71B4BB for ; Mon, 3 Dec 2018 06:54:05 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Dec 2018 21:54:04 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,309,1539673200"; d="scan'208";a="280400360" Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203]) by orsmga005.jf.intel.com with ESMTP; 02 Dec 2018 21:54:02 -0800 From: Vipin Varghese To: konstantin.ananyev@intel.com, stephen@networkplumber.org, reshma.pattan@intel.com, dev@dpdk.org, john.mcnamara@intel.com Cc: thomas@monjalon.net, stephen1.byrne@intel.com, amol.patel@intel.com, Vipin Varghese Date: Mon, 3 Dec 2018 11:20:00 +0530 Message-Id: <20181203055000.39012-10-vipin.varghese@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181203055000.39012-1-vipin.varghese@intel.com> References: <20181122141543.37067-1-vipin.varghese@intel.com> <20181203055000.39012-1-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH v6 9/9] doc/procinfo: add information for debug options X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Document update for debug options and information for PMD instances like port, traffic manager, crypto, mempool and ring instances. Signed-off-by: Vipin Varghese Acked-by: John McNamara --- V6: - add ack for v5 - John Mcnamara - update entry for mempool iter - Vipin Varghese V3: - update document from dbg to show - Vipin Varghese V2: - update word style for content - Vipin Varghese --- doc/guides/tools/proc_info.rst | 35 ++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/doc/guides/tools/proc_info.rst b/doc/guides/tools/proc_info.rst index d5b5ed6a6..ee0bd99bb 100644 --- a/doc/guides/tools/proc_info.rst +++ b/doc/guides/tools/proc_info.rst @@ -6,9 +6,9 @@ dpdk-procinfo Application The dpdk-procinfo application is a Data Plane Development Kit (DPDK) application that runs as a DPDK secondary process and is capable of retrieving port -statistics, resetting port statistics and printing DPDK memory information. -This application extends the original functionality that was supported by -dump_cfg. +statistics, resetting port statistics and printing DPDK memory information and +debug information for port|tm|crypto|ring|mempool. This application extends the +original functionality that was supported by dump_cfg. Running the Application ----------------------- @@ -17,7 +17,8 @@ The application has a number of command line options: .. code-block:: console ./$(RTE_TARGET)/app/dpdk-procinfo -- -m | [-p PORTMASK] [--stats | --xstats | - --stats-reset | --xstats-reset] + --stats-reset | --xstats-reset | --show-port | --show-tm | --show-crypto | + --show-mempool[=name] | --show-ring[=name] | --iter-mempool=name] Parameters ~~~~~~~~~~ @@ -41,6 +42,32 @@ If no port mask is specified xstats are reset for all DPDK ports. **-m**: Print DPDK memory information. +**--show-port** +The show-port parameter displays port level various configuration and +mbuf pool information associated to RX queues. + +**--show-tm** +The show-tm parameter displays per port traffic manager settings and +current configuration. It also display statistics too. + +**--show-crypto** +The show-crypto parameter displays available cryptodev configurations, +settings and stats per node. + +**--show-mempool[=name]** +The show-mempool parameter display current allocation of all mempool +with debug information. Specifying the name allows display details for +specific mempool. For invalid or no mempool name, whole list is dump. + +**--show-ring[=name]** +The show-ring pararmeter display current allocation of all ring with +debug information. Specifying the name allows to display details for specific +ring. For invalid or no ring name, whole list is dump. + +**--iter-mempool=name** +The iter-mempool parameter iterates and displays mempool elements specified +by name. For invalid or no mempool name no elements are displayed. + Limitations -----------