From: Matt Mackall <mpm@selenic.com>
To: Robin Getz <rgetz@blackfin.uclinux.org>
Cc: Sam Ravnborg <sam@ravnborg.org>,
Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>,
Denis Vlasenko <vda.linux@googlemail.com>,
Rob Landley <rob@landley.net>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] update kernel's scripts/bloat-o-meter from busybox
Date: Mon, 01 Jun 2009 14:48:52 -0500 [thread overview]
Message-ID: <1243885732.22069.112.camel@calx> (raw)
In-Reply-To: <200906011526.01108.rgetz@blackfin.uclinux.org>
On Mon, 2009-06-01 at 15:26 -0400, Robin Getz wrote:
> From: "Rob Landley" <rob@landley.net>
> From: "Denis Vlasenko" <vda.linux@googlemail.com>
> From: "Bernhard Reutner-Fischer" <rep.dot.nop@gmail.com>
>
> Since bloat-o-meter was added to the kernel's source tree, it has received
> little attention - either it works really well - or no one uses it. I suspect
> the first :)
>
> However - some folks who have been using it more (mainly as part of busybox)
> have been poking at it more often - and the output is a little more friendly
> now.
>
> http://git.busybox.net/busybox/log/scripts/bloat-o-meter
>
> I think Rob had been sending early patches both places, but somewhere along
> the line things never made it to lkml.
I probably dropped them on the ground during a busy spell.
> Acked-by: Robin Getz <rgetz@blackfin.uclinux.org>
>
> ---
> Since none of this is from me, I can only add my Acked by. Bernhard, Denis,
> and Rob will need to add their Signed-off-by separately.
>
> ----
>
>
> bloat-o-meter | 37 +++++++++++++++++++++++++++++--------
> 1 file changed, 29 insertions(+), 8 deletions(-)
>
>
>
> Index: scripts/bloat-o-meter
> ===================================================================
> --- scripts/bloat-o-meter (revision 6437)
> +++ scripts/bloat-o-meter (working copy)
> @@ -9,18 +9,37 @@
>
> import sys, os, re
>
> -if len(sys.argv) != 3:
> +def usage():
> sys.stderr.write("usage: %s file1 file2\n" % sys.argv[0])
> sys.exit(-1)
>
> +if len(sys.argv) < 3:
> + usage()
> +
> +for f in sys.argv[1], sys.argv[2]:
in sys.argv[1:3]: is a bit more standard
But this test should instead happen inside getsizes, no loop needed.
> + if not os.path.exists(f):
> + sys.stderr.write("Error: file '%s' does not exist\n" % f)
> + usage()
> +
> +nm_args = " ".join([x for x in sys.argv[3:]])
nm_args = " ".join(sys.argv[3:])
> def getsizes(file):
> sym = {}
> - for l in os.popen("nm --size-sort " + file).readlines():
> - size, type, name = l[:-1].split()
> - if type in "tTdDbB":
> + for l in os.popen("nm --size-sort %s %s" % (nm_args, file)).readlines():
> + l = l.strip()
> + # Skip empty lines
> + if not len(l): continue
(seems to be some whitespace damage? there should be no tabs in this
source)
if not l
> + # Skip archive members
> + if len(l.split()) == 1 and l.endswith(':'):
if ' ' not in l ...
> + continue
> + size, type, name = l.split()
> + if type in "tTdDbBrR":
> # function names begin with '.' on 64-bit powerpc
> if "." in name[1:]: name = "static." + name.split(".")[0]
> sym[name] = sym.get(name, 0) + int(size, 16)
> + for l in os.popen("readelf -S " + file).readlines():
> + x = l.split()
> + if len(x)<6 or x[1] != ".rodata": continue
> + sym[".rodata"] = int(x[5], 16)
Not sure what this addition is about?
> return sym
>
> old = getsizes(sys.argv[1])
> @@ -53,8 +72,10 @@
> delta.sort()
> delta.reverse()
>
> -print "add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s (%s)" % \
> - (add, remove, grow, shrink, up, -down, up-down)
> -print "%-40s %7s %7s %+7s" % ("function", "old", "new", "delta")
> +print "%-48s %7s %7s %+7s" % ("function", "old", "new", "delta")
> for d, n in delta:
> - if d: print "%-40s %7s %7s %+7d" % (n, old.get(n,"-"), new.get(n,"-"), d)
> + if d: print "%-48s %7s %7s %+7d" % (n, old.get(n,"-"), new.get(n,"-"), d)
> +print "-"*78
> +total="(add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s)%%sTotal: %s
> bytes"\
> + % (add, remove, grow, shrink, up, -down, up-down)
> +print total % (" "*(80-len(total)))
Not terribly excited about this last bit, which is going out of its way
to right-align the total? Who cares about that?
--
http://selenic.com : development and support for Mercurial and Linux
next prev parent reply other threads:[~2009-06-01 19:55 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-01 19:26 [PATCH] update kernel's scripts/bloat-o-meter from busybox Robin Getz
2009-06-01 19:48 ` Matt Mackall [this message]
2009-06-01 20:39 ` Mike Frysinger
2009-06-01 20:57 ` Robin Getz
2009-06-01 21:17 ` Matt Mackall
2009-06-02 6:04 ` Rob Landley
2009-06-02 13:07 ` Bernhard Reutner-Fischer
2009-06-02 20:11 ` Robin Getz
2009-06-05 21:42 ` Sam Ravnborg
2009-06-10 12:27 ` Denys Vlasenko
2009-06-14 20:37 ` Sam Ravnborg
2009-06-02 5:59 ` Rob Landley
2009-06-02 6:10 ` Joe Perches
2009-06-02 6:33 ` Michael Ellerman
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=1243885732.22069.112.camel@calx \
--to=mpm@selenic.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rep.dot.nop@gmail.com \
--cc=rgetz@blackfin.uclinux.org \
--cc=rob@landley.net \
--cc=sam@ravnborg.org \
--cc=vda.linux@googlemail.com \
/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.