How to speed up Hotspot Build

Erik Trimble Erik.Trimble at Sun.COM
Sun Feb 8 03:47:34 UTC 2009


Peng,

Just for reference, here's some comparative data:

Here at Sun, on a dual 2.2Ghz Opteron w/ 4gb of RAM, it takes around 30 
minutes to do a build.

The parameters you've set are reasonable, though as Kelly indicated, 
just look at the 'hotspot/make/Makefile' to build the VM by itself (that 
is, you don't have to invoke Make from the top-level JDK directory, you 
can do it from inside the hotspot directory, referencing the above 
Makefile).

That said, here's a few things that might speed up your build:

(1) look for a tool called 'ccache', which is _very_ useful in caching 
outputs from GCC so that rebuilding time can be cut down quite a bit.

(2)  build in a ramdisk. This is by far going to be the biggest speedup, 
as a major issue in build times is disk I/O.   Look here on Wikipedia 
for info about how to use TMPFS under Linux:    
http://en.wikipedia.org/wiki/TMPFS
if you can't fit the entire source and object code in a tmpfs, then at 
least set the TMPDIR env variable to point to a  tmpfs location, so that 
the object and intermediary code files get built in ram.

(3)  If you only have a dual-core system (i'm assuming some sort of Core 
2 Duo machine, or an older Pentium D), than I would recommend using only 
3 build threads, not 4.  Hyperthreading is nowhere near as efficient as 
a "real" core, and the associated context switching is expensive. For a 
build, where you are doing large numbers of relatively small (and 
short-lived) processes, hyperthreading is inefficient (for a variety of 
reasons) and is probably actually hurting you more than helping.

-Erik


Peng Du wrote:
> Hello, guys
>
> Recently, I am working on some slight modifications of Hotspot VM 
> without touching the JDK part. So, I have to compile Hotspot quite 
> frequently. However, the build is awfully slow on my machine with a 
> Intel 2.4G dual core CPU, 3G memory, and OpenSUSE11. It takes about 
> 2-3 hours for one build.
>
> Here is the relevant fragment of my build script:
> ==================================
> export MAKE_VERBOSE=true
> export DEBUG_GDB3=true
> export ARCH_DATA_MODEL=32
> export ALT_PARALLEL_COMPILE_JOBS=4
> export HOTSPOT_BUILD_JOBS=4
>
> export BUILD_HOTSPOT=true
>
> export BUILD_LANGTOOLS=false
> export BUILD_JDK=false
> export BUILD_JAXP=false
> export BUILD_JAXWS=false
> export BUILD_CORBA=false
> export BUILD_DEPLOY=false
> export BUILD_J2SE=false
>
> export DEV_ONLY=true
> export SKIP_DEBUG_BUILD=false
> export SKIP_FASTDEBUG_BUILD=true
> ==================================
>
> Any ideas on how to tune this to speed up the build? Or, are there 
> problems with the script?
>
> Thanks!
>
> Peng Du
> 2/7/2009
>


-- 
Erik Trimble
Java System Support
Mailstop:  usca22-123
Phone:  x17195
Santa Clara, CA
Timezone: US/Pacific (GMT-0800)




More information about the build-dev mailing list