bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #40639] GNU Make with profiling information


From: Eddy Petrișor
Subject: [bug #40639] GNU Make with profiling information
Date: Tue, 19 Nov 2013 21:31:17 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131030 Firefox/17.0 Iceweasel/17.0.10

URL:
  <http://savannah.gnu.org/bugs/?40639>

                 Summary: GNU Make with profiling information
                 Project: make
            Submitted by: eddyp
            Submitted on: Tue 19 Nov 2013 21:31:16 GMT
                Severity: 3 - Normal
              Item Group: Enhancement
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
       Component Version: SCM
        Operating System: Any
           Fixed Release: None
           Triage Status: None

    _______________________________________________________

Details:

Hello all,

For perfomance analysis of the build systems I maintain I have found the need
for GNU Make to provide profiling information so it can help the developer
with spotting the slow parts of the build system.

I have found others had the same need (see also the related patch #7447), but
nobody was motivated enough to refine the patch to something useful.

I have taken the crude work done by OpenShift guest <address@hidden> on
profiling for make 3.82, I reworked it and updated to on top of the master
version. I now I consider the profiling feature ready to be proposed for
review.


Here is how it looks when used:

0 address@hidden ~/usr/src/make/make-profiler $ ./make -P"target=%N start=%S
duration=%D" >/dev/null
target=all start=1384896401494 duration=0
target=all-am start=1384896401494 duration=0
target=all start=1384896401498 duration=0
target=all-am start=1384896401498 duration=0
target=all start=1384896401508 duration=0
target=all-yes start=1384896401508 duration=0
target=check-macro-version start=1384896401503 duration=5
target=all start=1384896401512 duration=0
target=all-am start=1384896401512 duration=0
target=all-am start=1384896401539 duration=0
target=config.h start=1384896401527 duration=5
target=all-recursive start=1384896401487 duration=53
target=all start=1384896401466 duration=75
target=config.h start=1384896401462 duration=4




The new profiling parameter is
-P[FMT]/--profile[=FMT]/--profile-format[=FMT].

The man page is also updated, so here is a quote:

 -P[FMT], --profile[=FMT], --profile-format[=FMT]
      Print to stderr profiling information for  each  run  target,  one
      line  per  target, according to format string FMT.  The FMT string
      can contain plain text and the following formatting sequences:

         %N target name
         %L recursion level for the make instance processing the target
         %P pid of the make instance processing the target
         %S start target timestamp (in miliseconds since 1 ian 1970)
         %E end target timestamp (in miliseconds since 1 ian 1970)
         %D difference between the target start and end  timestamps  (in
         miliseconds)
         %% literal %

         If  the option is repeated, all the FMT parameters are concate‐
         nated internally into a single formatting string.

         Any unrecognized % sequence will generate an error.  If the FMT
         string ends with a single % character, then that character will
         be ignored.

         The default FMT string is [PROF:%N:lvl=%L:pid=%P] %S;%E;%D.


My git repo is at (work is rebased on top of official master):

https://github.com/eddyp/make-profiler


The first results I got based on Make's own build system can be visible in
this screenshot:

https://github.com/eddyp/make-profiler/blob/master-rebase/make-j_profile.png

Please tell me what you think, or tell me if you prefer a unified diff patch
attached to this report for a review. Or maybe you prefer me to squash the
profile related changes into a single commit.


Notes:
 - My master-rebase branch, as the name suggests, will be rebased
 - I am aware the code in my master-rebase contains the more mature profiling
feature code and the less polished graph code; I will separate the profiling
code from the graph code on different branches, but I have had the need to use
both features





    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?40639>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]