[v3,8/9] app/procinfo: add support for show mempool
Checks
Commit Message
Function show_mempool is used for displaying the MEMPOOL of the
primary process. For valid mempool elements are iterated for max
of 256 bytes.
Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
---
V3:
- add avail and in use - Vipin Varghese
- add flag split - Vipin Varghese
---
app/proc-info/main.c | 67 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 66 insertions(+), 1 deletion(-)
Comments
Sending v4 for spacing issue
<snipped>
> + (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');
<snipped>
@@ -33,6 +33,7 @@
#include <rte_security.h>
#include <rte_cryptodev.h>
#include <rte_tm.h>
+#include <rte_hexdump.h>
/* Maximum long option length for option parsing. */
#define MAX_LONG_OPT_SZ 64
@@ -1154,10 +1155,74 @@ 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(" mempools 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));
+
+ /* iterate each object */
+ int ret = rte_mempool_obj_iter(ptr,
+ mempool_itr_obj, NULL);
+ printf(" - iterated %u objects\n", ret);
+
+ STATS_BDR_STR(50, "");
+ return;
+ }
+ }
+
+ rte_mempool_list_dump(stdout);
+ STATS_BDR_STR(50, "");
}
int