All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jim Cromie <jim.cromie@gmail.com>
To: jbaron@akamai.com, linux-kernel@vger.kernel.org,
	akpm@linuxfoundation.org, gregkh@linuxfoundation.org
Cc: linux@rasmusvillemoes.dk, Jim Cromie <jim.cromie@gmail.com>
Subject: [PATCH v5 06/18] dyndbg: fix overcounting of ram used by dyndbg
Date: Sun, 19 Jul 2020 17:10:46 -0600	[thread overview]
Message-ID: <20200719231058.1586423-7-jim.cromie@gmail.com> (raw)
In-Reply-To: <20200719231058.1586423-1-jim.cromie@gmail.com>

during dyndbg init, verbose logging prints its ram overhead.  It
counted strlens of struct _ddebug's 4 string members, in all callsite
entries, which would be approximately correct if each had been
mallocd.  But they are pointers into shared .rodata; for example, all
10 kobject callsites have identical filename, module values.

Its best not to count that memory at all, since we cannot know they
were linked in because of CONFIG_DYNAMIC_DEBUG=y, and we want to
report a number that reflects what ram is saved by deconfiguring it.

Also fix wording and size under-reporting of the __dyndbg section.

Heres my overhead, on a virtme-run VM on a fedora-31 laptop:

  dynamic_debug:dynamic_debug_init: 260 modules, 2479 entries \
    and 10400 bytes in ddebug tables, 138824 bytes in __dyndbg section

Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
 lib/dynamic_debug.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index 66c0bdf06ce7..9b2445507988 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -1017,7 +1017,6 @@ static int __init dynamic_debug_init(void)
 	char *cmdline;
 	int ret = 0;
 	int n = 0, entries = 0, modct = 0;
-	int verbose_bytes = 0;
 
 	if (&__start___dyndbg == &__stop___dyndbg) {
 		if (IS_ENABLED(CONFIG_DYNAMIC_DEBUG)) {
@@ -1033,9 +1032,6 @@ static int __init dynamic_debug_init(void)
 	iter_start = iter;
 	for (; iter < __stop___dyndbg; iter++) {
 		entries++;
-		verbose_bytes += strlen(iter->modname) + strlen(iter->function)
-			+ strlen(iter->filename) + strlen(iter->format);
-
 		if (strcmp(modname, iter->modname)) {
 			modct++;
 			ret = ddebug_add_module(iter_start, n, modname);
@@ -1052,9 +1048,9 @@ static int __init dynamic_debug_init(void)
 		goto out_err;
 
 	ddebug_init_success = 1;
-	vpr_info("%d modules, %d entries and %d bytes in ddebug tables, %d bytes in (readonly) verbose section\n",
+	vpr_info("%d modules, %d entries and %d bytes in ddebug tables, %d bytes in __dyndbg section\n",
 		 modct, entries, (int)(modct * sizeof(struct ddebug_table)),
-		 verbose_bytes + (int)(__stop___dyndbg - __start___dyndbg));
+		 (int)(entries * sizeof(struct _ddebug)));
 
 	/* apply ddebug_query boot param, dont unload tables on err */
 	if (ddebug_setup_string[0] != '\0') {
-- 
2.26.2


  parent reply	other threads:[~2020-07-19 23:12 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-19 23:10 [PATCH v5 00/18] dynamic_debug fixes, cleanups, features, export Jim Cromie
2020-07-19 23:10 ` [PATCH v5 01/18] dyndbg-docs: eschew file /full/path query in docs Jim Cromie
2020-07-19 23:10 ` [PATCH v5 02/18] dyndbg-docs: initialization is done early, not arch Jim Cromie
2020-07-19 23:10 ` [PATCH v5 03/18] dyndbg: drop obsolete comment on ddebug_proc_open Jim Cromie
2020-07-19 23:10 ` [PATCH v5 04/18] dyndbg: refine debug verbosity; 1 is basic, 2 more chatty Jim Cromie
2020-07-19 23:10 ` [PATCH v5 05/18] dyndbg: rename __verbose section to __dyndbg Jim Cromie
2020-07-19 23:10 ` Jim Cromie [this message]
2020-07-19 23:10 ` [PATCH v5 07/18] dyndbg: fix a BUG_ON in ddebug_describe_flags Jim Cromie
2020-07-19 23:10 ` [PATCH v5 08/18] dyndbg: fix pr_err with empty string Jim Cromie
2020-07-19 23:10 ` [PATCH v5 09/18] dyndbg: prefer declarative init in caller, to memset in callee Jim Cromie
2020-07-19 23:10 ` [PATCH v5 10/18] dyndbg: make ddebug_tables list LIFO for add/remove_module Jim Cromie
2020-07-19 23:10 ` [PATCH v5 11/18] dyndbg: use gcc ?: to reduce word count Jim Cromie
2020-07-19 23:10 ` [PATCH v5 12/18] dyndbg: refactor parse_linerange out of ddebug_parse_query Jim Cromie
2020-07-19 23:10 ` [PATCH v5 13/18] dyndbg: accept 'file foo.c:func1' and 'file foo.c:10-100' Jim Cromie
2020-07-19 23:10 ` [PATCH v5 14/18] dyndbg: accept query terms like file=bar and module=foo Jim Cromie
2020-07-19 23:10 ` [PATCH v5 15/18] dyndbg: combine flags & mask into a struct, simplify with it Jim Cromie
2020-07-19 23:10 ` [PATCH v5 16/18] dyndbg: allow anchored match on format query term Jim Cromie
2020-07-19 23:10 ` [PATCH v5 17/18] dyndbg: shorten our logging prefix, drop __func__ Jim Cromie
2020-07-19 23:10 ` [PATCH v5 18/18] dyndbg: export ddebug_exec_queries Jim Cromie
2020-07-24 13:48 ` [PATCH v5 00/18] dynamic_debug fixes, cleanups, features, export Jason Baron
2020-07-24 14:59   ` Greg KH
2020-07-24 15:00     ` Greg KH

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=20200719231058.1586423-7-jim.cromie@gmail.com \
    --to=jim.cromie@gmail.com \
    --cc=akpm@linuxfoundation.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jbaron@akamai.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.