Instrumented profiling for multimodule Jigsaw startup

Aleksey Shipilev aleksey.shipilev at oracle.com
Wed Mar 14 12:02:07 PDT 2012


(Trying again with attachments)

-Aleksey.

On 03/14/2012 10:59 PM, Aleksey Shipilev wrote:
> Ok, here's the first bunch of data from me.
> 
> The setup is:
>   - Intel i5 520M, 8 Gb DDR3, running Ubuntu 11.10 i686
>   - personal Jigsaw build, as of 2012-03-14; this build is also
> instrumented with multiple logging messages all around Java launcher,
> JDK, and Hotspot.
>   - simple Perl script annotates output with timestamps; that is better
> than synchronizing timers between JDK and JVM code; the tracing code
> incurs non-negligible overhead, but one can see *relative* times spent
> in each section.
>   - multimodule library with 500 modules, all in single dependency
> chain; each module references one other module, and invokes the method
> from there, forcing Jigsaw to actually load the modules at runtime
>   - two measurement modes: a) hot startup, when file caches are warmed
> up, and b) cold startup, where drop_caches = 3 was set before the run,
> effectively forcing kernel to drop the read cache
> 
> I had also run this setup for two cases: invoking from the dependency
> root (i.e. forcing loading all the modules) and from the dependency leaf
> (i.e. loading only one user module).
> 
> The results are attached.
> 
> In short, without tracing:
>   23.4 secs to start up in cold mode, loading 500 modules
>    1.7 secs to start up in warm mode, loading 500 modules
>    2.7 secs to start up in cold mode, loading single module
>    0.6 secs to start up in warm mode, loading single module
> 
> Note that last two scenarios are effectively simple "HelloWorld" scenarios.
> 
> Some observations on these results:
>   A. Current Jigsaw build is actually starting up pretty fast. It was
> was somewhat 20s to load 500 modules in *warm* mode in November; now
> it's only 1.5s, which is a nice improvement.
> 
>   B. The major performance hog is reading module configuration. Even in
> warm mode, it takes around 500ms to load local class map. It seems to be
> connected with the size of it. I'm not sure if compressing will help
> here, will explore a bit more.
> 
>   C. After major init phase is over, the overhead of loading the class
> from other module seems to be OK, at least in warm mode; it takes some
> 1ms to load one up. It gets much worse in cold mode, where the cost of
> doing real I/O boosts that time up to 30 ms. (I would think it would be
> better if I have an SSD, but anyway).
> 
> Thanks,
> Aleksey.



More information about the jigsaw-dev mailing list