Need Reviewers - corba cygwin build time improvements

Kelly O'Hair Kelly.Ohair at Sun.COM
Sat Aug 29 22:12:58 UTC 2009


6875240: Reduce Makefile build time by limiting repeated exec's

Webrev is at:
    http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-build-cygwin-6875240/webrev/

Summary of Issue:
   JDK builds with CYGWIN, especially on Windows 2003 X64 are experiencing
   slow build times, when compared to using the MKS Unix toolset.
   Indications are that CYGWIN has a slower fork/exec, and access to
   the file system can be up to 2X slower from CYGWIN tools.
   It is assumed that this is all due to the emulation layer of CYGWIN.

What does this impact:
   This does not impact the hotspot or ant-based builds due to their
   limited use of CYGWIN utilities and minimal fork/exec's.
   So this effort will be directed at the corba and jdk repositories.

Phase One was to see if the corba repository build time could be
improved. Corba build results are as follows (rough timings):

                              Before Changes       After Changes
   MKS corba build time:         7mins                 5mins
   CYGWIN corba build time:     20mins                10mins

Not as good as MKS (http://www.mkssoftware.com/) unix tools,
but much better than before.

(And yes, the corba makefiles may be replaced with an ant script
  some day, which should make it build even faster, but this served
  as an experiment before tackling the larger jdk repository)

Summary of the changes:

   * Clear out .SUFFIXES. to reduce default rule searches

   * Rely on $(CURDIR) defined by GNU make

   * Use 'make -C dir' instead of $(CD) $@; $(MAKE)

   * 'export' make variables that would normally be re-defined in
     sub-makes, this adds more variables to the environment of the
     sub-makes but prevents some fork/exec's from happening.

   * Removed the TIMING logic and some of the echos in the Makefile
     SUBDIRS looping (we could use MAKE="time $(MAKE)" instead).

   * Replace use of the find command with the GNU make wildcard function.

   * Get rid of unnecessary fork/exec's, merge command lines where possible.

-kto




More information about the build-dev mailing list