public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Darren Hart <dvhart@linux.intel.com>
To: Josh Triplett <josh@joshtriplett.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] scripts/ksize: Add kernel build size report
Date: Sat, 08 Nov 2014 21:00:53 -0800	[thread overview]
Message-ID: <545EF505.7040101@linux.intel.com> (raw)
In-Reply-To: <20141109032630.GB1026@thin>



On 11/8/14 19:26, Josh Triplett wrote:
> On Sat, Nov 08, 2014 at 03:18:18PM -0800, Darren Hart wrote:
>> ksize generates hierarchical build size reports from vmlinux, *.o, and
>> built-in.o files.
>>
>> ksize is useful in preparing minimal configurations and comparing
>> similar configurations across kernel versions.
>>
>> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
>> Cc: Josh Triplett <josh@joshtriplett.org>
> 
> One comment below; with that addressed:
> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
> 
>> +def main(argv):
>> +    try:
>> +        opts, args = getopt.getopt(argv[1:], "dh", ["help"])
>> +    except getopt.GetoptError, err:
>> +        print '%s' % str(err)
>> +        usage()
>> +        return 2
>> +
>> +    driver_detail = False
>> +    for o, a in opts:
>> +        if o == '-d':
>> +            driver_detail = True
>> +        elif o in ('-h', '--help'):
>> +            usage()
>> +            return 0
>> +        else:
>> +            assert False, "unhandled option"
>> +
>> +    cols = term_width()
>> +
>> +    # Determine kernel version
>> +    p = Popen("strings vmlinux | grep 'Linux version' | cut -d ' ' -f 3",
>> +              shell=True, stdout=PIPE, stderr=PIPE)
>> +    version = p.communicate()[0].strip()
> 
> This seems like a very fragile, Perl-y way to obtain the kernel version.
> 
> I'd suggest either not including the version (just as bloat-o-meter
> doesn't), or parsing it out using objdump -h -t and file offsetting
> (looking for the offset and size of linux_banner).  Personally I'd go
> with the former.

I agree it's a hack, but it isn't a performance sensitive area and I
couldn't see spending the time to calculate offsets and such to save a
couple seconds for something like this. There are more advanced
approaches to extracting bits of information from vmlinux, such as
scripts/extract-ikconfig. I suppose something along those lines could be
created.

As to fragile, I have not tested every version, but this technique has
been used at least as far back as 2.6.24 [1], which seem fairly stable
to me.

Personally, I think it's nice to have. But, if nobody chimes in asking
to keep it, or with a better way to retrieve it, I can resend with it
removed.

Thanks Josh :-)

1.
http://plastilinux.blogspot.com/2009/11/how-to-know-version-of-kernel-without.html
(A slightly faster hack)

-- 
Darren Hart
Intel Open Source Technology Center

      reply	other threads:[~2014-11-09  5:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-08 23:18 [PATCH] scripts/ksize: Add kernel build size report Darren Hart
2014-11-09  3:26 ` Josh Triplett
2014-11-09  5:00   ` Darren Hart [this message]

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=545EF505.7040101@linux.intel.com \
    --to=dvhart@linux.intel.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.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