From: Xueming Li <xuemingl@mellanox.com>
To: Anatoly Burakov <anatoly.burakov@intel.com>,
Ferruh Yigit <ferruh.yigit@intel.com>,
Stephen Hemminger <stephen@networkplumber.org>
Cc: dev@dpdk.org, Asaf Penso <asafp@mellanox.com>
Subject: [dpdk-dev] [RFC v2 2/2] app/testpmd: support malloc and free tracking log
Date: Fri, 17 Apr 2020 08:03:43 +0000 [thread overview]
Message-ID: <1587110623-405-3-git-send-email-xuemingl@mellanox.com> (raw)
In-Reply-To: <1587110623-405-1-git-send-email-xuemingl@mellanox.com>
In-Reply-To: <1586318694-31358-1-git-send-email-xuemingl@mellanox.com>
New CLI commands to manipulate malloc tracking log:
dump_malloc start <n>: start malloc tracking with number of buffers
dump_malloc dump <n>: dump mmalloc tracking log with detail level
dump_malloc stop: stop malloc tracking
Signed-off-by: Xueming Li <xuemingl@mellanox.com>
---
app/test-pmd/cmdline.c | 60 ++++++++++++++++++++++++++++-
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 15 ++++++++
2 files changed, 74 insertions(+), 1 deletion(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 863b567..0490823 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -9554,6 +9554,8 @@ struct cmd_rm_mirror_rule_result {
struct cmd_dump_result {
cmdline_fixed_string_t dump;
+ cmdline_fixed_string_t cmd;
+ uint32_t val;
};
static void
@@ -9628,6 +9630,16 @@ static void cmd_dump_parsed(void *parsed_result,
dump_socket_mem(stdout);
else if (!strcmp(res->dump, "dump_memzone"))
rte_memzone_dump(stdout);
+ else if (!strcmp(res->dump, "dump_malloc")) {
+ if (!strcmp(res->cmd, "start")) {
+ if (rte_malloc_log_init(res->val))
+ fprintf(stdout, "Failed to start logging\n");
+ } else if (!strcmp(res->cmd, "dump")) {
+ rte_malloc_log_dump(stdout, res->val);
+ } else if (!strcmp(res->cmd, "stop")) {
+ rte_malloc_log_stop();
+ }
+ }
else if (!strcmp(res->dump, "dump_struct_sizes"))
dump_struct_sizes();
else if (!strcmp(res->dump, "dump_ring"))
@@ -9650,7 +9662,50 @@ static void cmd_dump_parsed(void *parsed_result,
"dump_mempool#"
"dump_devargs#"
"dump_log_types");
-
+cmdline_parse_token_string_t cmd_dump_malloc =
+ TOKEN_STRING_INITIALIZER(struct cmd_dump_result, dump,
+ "dump_malloc");
+cmdline_parse_token_string_t cmd_dump_malloc_cmd_start =
+ TOKEN_STRING_INITIALIZER(struct cmd_dump_result, cmd,
+ "start");
+cmdline_parse_token_string_t cmd_dump_malloc_cmd_dump =
+ TOKEN_STRING_INITIALIZER(struct cmd_dump_result, cmd,
+ "dump");
+cmdline_parse_token_string_t cmd_dump_malloc_cmd_stop =
+ TOKEN_STRING_INITIALIZER(struct cmd_dump_result, cmd,
+ "stop");
+cmdline_parse_token_num_t cmd_dump_val =
+ TOKEN_NUM_INITIALIZER(struct cmd_dump_result, val, UINT32);
+
+cmdline_parse_inst_t cmd_dump_malloc_start = {
+ .f = cmd_dump_parsed, /* function to call */
+ .help_str = "Start rte_malloc tracking log with <count> buffer entries",
+ .tokens = { /* token list, NULL terminated */
+ (void *)&cmd_dump_malloc,
+ (void *)&cmd_dump_malloc_cmd_start,
+ (void *)&cmd_dump_val,
+ NULL,
+ },
+};
+cmdline_parse_inst_t cmd_dump_malloc_dump = {
+ .f = cmd_dump_parsed, /* function to call */
+ .help_str = "Dump rte_malloc tracking log with <level>, 0:summary, 1:leaks, 2: all",
+ .tokens = { /* token list, NULL terminated */
+ (void *)&cmd_dump_malloc,
+ (void *)&cmd_dump_malloc_cmd_dump,
+ (void *)&cmd_dump_val,
+ NULL,
+ },
+};
+cmdline_parse_inst_t cmd_dump_malloc_stop = {
+ .f = cmd_dump_parsed, /* function to call */
+ .help_str = "Stop rte_malloc tracking log",
+ .tokens = { /* token list, NULL terminated */
+ (void *)&cmd_dump_malloc,
+ (void *)&cmd_dump_malloc_cmd_stop,
+ NULL,
+ },
+};
cmdline_parse_inst_t cmd_dump = {
.f = cmd_dump_parsed, /* function to call */
.data = NULL, /* 2nd arg of func */
@@ -19505,6 +19560,9 @@ struct cmd_showport_macs_result {
(cmdline_parse_inst_t *)&cmd_showport_rss_hash_key,
(cmdline_parse_inst_t *)&cmd_config_rss_hash_key,
(cmdline_parse_inst_t *)&cmd_dump,
+ (cmdline_parse_inst_t *)&cmd_dump_malloc_start,
+ (cmdline_parse_inst_t *)&cmd_dump_malloc_dump,
+ (cmdline_parse_inst_t *)&cmd_dump_malloc_stop,
(cmdline_parse_inst_t *)&cmd_dump_one,
(cmdline_parse_inst_t *)&cmd_ethertype_filter,
(cmdline_parse_inst_t *)&cmd_syn_filter,
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index dcee5de..1c55f23 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -567,6 +567,21 @@ Dumps the statistics of all or specific memory pool::
testpmd> dump_mempool [mempool_name]
+dump malloc
+~~~~~~~~~~~~
+
+Start rte_malloc and rte_free tracking with number of buffers::
+
+ testpmd> dump_malloc start <count>
+
+Dump tracking result with different level, 0:summary, 1:leaks, 2: all::
+
+ testpmd> dump_malloc dump <level>
+
+Stop tracking::
+
+ testpmd> dump_malloc stop
+
dump devargs
~~~~~~~~~~~~
--
1.8.3.1
next prev parent reply other threads:[~2020-04-17 8:04 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-03 7:54 [dpdk-dev] [RFC] malloc: add malloc and free log function Xueming Li
2020-04-03 7:54 ` Xueming Li
2020-04-03 9:50 ` Burakov, Anatoly
2020-04-08 4:04 ` [dpdk-dev] [PATCH v1 0/2] malloc: support malloc and free tracking log Xueming Li
2020-04-17 8:03 ` [dpdk-dev] [RFC v2 " Xueming Li
2020-04-17 8:03 ` [dpdk-dev] [RFC v2 1/2] " Xueming Li
2020-04-17 8:03 ` Xueming Li [this message]
2020-04-21 13:41 ` [dpdk-dev] [RFC v2 2/2] app/testpmd: " Iremonger, Bernard
2020-07-30 15:10 ` Somnath Kotur
2020-07-30 15:13 ` Xueming(Steven) Li
2020-07-30 15:30 ` Somnath Kotur
2020-04-08 4:04 ` [dpdk-dev] [PATCH v1 1/2] malloc: " Xueming Li
2020-04-08 5:10 ` Stephen Hemminger
2020-04-08 5:11 ` Stephen Hemminger
2020-04-08 6:45 ` Xueming(Steven) Li
2020-04-08 4:04 ` [dpdk-dev] [PATCH v1 2/2] app/testpmd: " Xueming Li
2020-04-16 10:10 ` Iremonger, Bernard
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=1587110623-405-3-git-send-email-xuemingl@mellanox.com \
--to=xuemingl@mellanox.com \
--cc=anatoly.burakov@intel.com \
--cc=asafp@mellanox.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=stephen@networkplumber.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).