[v8,6/7] app/procinfo: add support for show mempool

Message ID 20190107153829.34047-7-vipin.varghese@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series app/proc-info: enhance debug of proc-info tool |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Varghese, Vipin Jan. 7, 2019, 3:38 p.m. UTC
  Function show_mempool is used for displaying valid MEMPOOL.
In case of invalid or no name, whole list is dump.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Acked-by: Reshma  Pattan <reshma.pattan@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
---
 app/proc-info/main.c           | 65 +++++++++++++++++++++++++++++++++-
 doc/guides/tools/proc_info.rst |  7 +++-
 2 files changed, 70 insertions(+), 2 deletions(-)
  

Patch

diff --git a/app/proc-info/main.c b/app/proc-info/main.c
index ed136d828..4aeab926d 100644
--- a/app/proc-info/main.c
+++ b/app/proc-info/main.c
@@ -85,6 +85,9 @@  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;
 
 /**< display usage */
 static void
@@ -108,7 +111,8 @@  proc_info_usage(const char *prgname)
 		"  --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-ring[=name]: to display ring information\n"
+		"  --show-mempool[=name]: to display mempool information\n",
 		prgname);
 }
 
@@ -219,6 +223,7 @@  proc_info_parse_args(int argc, char **argv)
 		{"show-tm", 0, NULL, 0},
 		{"show-crypto", 0, NULL, 0},
 		{"show-ring", optional_argument, NULL, 0},
+		{"show-mempool", optional_argument, NULL, 0},
 		{NULL, 0, 0, 0}
 	};
 
@@ -275,6 +280,10 @@  proc_info_parse_args(int argc, char **argv)
 					"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;
 			}
 			break;
 		case 1:
@@ -1118,6 +1127,58 @@  show_ring(char *name)
 	STATS_BDR_STR(50, "");
 }
 
+static void
+show_mempool(char *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, "");
+}
+
 int
 main(int argc, char **argv)
 {
@@ -1207,6 +1268,8 @@  main(int argc, char **argv)
 		show_crypto();
 	if (enable_shw_ring)
 		show_ring(ring_name);
+	if (enable_shw_mempool)
+		show_mempool(mempool_name);
 
 	ret = rte_eal_cleanup();
 	if (ret)
diff --git a/doc/guides/tools/proc_info.rst b/doc/guides/tools/proc_info.rst
index ba5c3dbd1..42c5d45e0 100644
--- a/doc/guides/tools/proc_info.rst
+++ b/doc/guides/tools/proc_info.rst
@@ -19,7 +19,7 @@  The application has a number of command line options:
 
    ./$(RTE_TARGET)/app/dpdk-procinfo -- -m | [-p PORTMASK] [--stats | --xstats |
    --stats-reset | --xstats-reset] [ --show-port | --show-tm | --show-crypto |
-   --show-ring[=name] ]
+   --show-ring[=name] | --show-mempool[=name] ]
 
 Parameters
 ~~~~~~~~~~
@@ -60,6 +60,11 @@  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.
 
+**--show-mempool[=name]**
+The show-mempool parameter display current allocation of all mempool
+debug information. Specifying the name allows to display details for specific
+specific mempool. For invalid or no mempool name, whole list is dump.
+
 Limitations
 -----------