New appctl 'dpdk/get-malloc-stats' implemented to get result of 'rte_malloc_dump_stats()' function.
Could be used for debugging. Signed-off-by: Eli Britstein <el...@nvidia.com> Reviewed-by: Salem Sol <sal...@nvidia.com> --- v2: - Following Eelco Chaudron's comments, abandoned get-socket-stats. - Acked-by: Eelco Chaudron <echau...@redhat.com> https://mail.openvswitch.org/pipermail/ovs-dev/2021-May/382920.html - Acked-by: Kevin Traynor <Kevin Traynor <ktray...@redhat.com> https://mail.openvswitch.org/pipermail/ovs-dev/2021-May/382932.html v3: - Following Ilya Maximets's comment, using dpdk_unixctl_mem_stream. NEWS | 1 + lib/dpdk-unixctl.man | 2 ++ lib/dpdk.c | 10 ++++++++++ 3 files changed, 13 insertions(+) diff --git a/NEWS b/NEWS index 402ce5969..bcb44e045 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,7 @@ Post-v2.15.0 - DPDK: * OVS validated with DPDK 20.11.1. It is recommended to use this version until further releases. + * New debug appctl command 'dpdk/get-malloc-stats'. v2.15.0 - 15 Feb 2021 diff --git a/lib/dpdk-unixctl.man b/lib/dpdk-unixctl.man index 2d6d576f2..a0d1fa2ea 100644 --- a/lib/dpdk-unixctl.man +++ b/lib/dpdk-unixctl.man @@ -10,5 +10,7 @@ list of words separated by spaces: a word can be either a logging \fBlevel\fR \fBnotice\fR, \fBinfo\fR or \fBdebug\fR) or a \fBpattern\fR matching DPDK components (see \fBdpdk/log-list\fR command on \fBovs\-appctl\fR(8)) separated by a colon from the logging \fBlevel\fR to apply. +.IP "\fBdpdk/get-malloc-stats\fR" +Prints the heap information statistics about DPDK malloc. .RE . diff --git a/lib/dpdk.c b/lib/dpdk.c index 319540394..2eaaa569c 100644 --- a/lib/dpdk.c +++ b/lib/dpdk.c @@ -25,6 +25,7 @@ #include <rte_cpuflags.h> #include <rte_errno.h> #include <rte_log.h> +#include <rte_malloc.h> #include <rte_memzone.h> #include <rte_version.h> @@ -356,6 +357,12 @@ dpdk_unixctl_log_set(struct unixctl_conn *conn, int argc, const char *argv[], unixctl_command_reply(conn, NULL); } +static void +malloc_dump_stats_wrapper(FILE *stream) +{ + rte_malloc_dump_stats(stream, NULL); +} + static bool dpdk_init__(const struct smap *ovs_other_config) { @@ -525,6 +532,9 @@ dpdk_init__(const struct smap *ovs_other_config) dpdk_unixctl_mem_stream, rte_log_dump); unixctl_command_register("dpdk/log-set", "{level | pattern:level}", 0, INT_MAX, dpdk_unixctl_log_set, NULL); + unixctl_command_register("dpdk/get-malloc-stats", "", 0, 0, + dpdk_unixctl_mem_stream, + malloc_dump_stats_wrapper); /* We are called from the main thread here */ RTE_PER_LCORE(_lcore_id) = NON_PMD_CORE_ID; -- 2.28.0.2311.g225365fb51 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev