Den 26.04.2010 04:02, skrev Igor Fedorenko:
I am sorry if this has been answered already, but do you have any info
that shows performance comparison single vs milti threaded build? If you
happen to have any profiler snapshots that show where time is spent
during single and multi threaded builds, I am interested to see these too.

PS: we got first // build question on tycho-users list last week ;-)

Interesting question; and the answer is not /always/ as clear cut as one would think.
Regarding overall performance I added another linear build for comparison.
This is not a particuarly good showcase project, but such is life:

Linear: http://rosenvold.dyndns.org:8085/browse/PARALLEL-CH (~36-37 seconds) Parallel: http://rosenvold.dyndns.org:8085/browse/PARALLEL-CH1 (~34-35 seconds)
http://rosenvold.dyndns.org:8085/browse/PARALLEL-CH1W (~29-30 seconds)

Remember it's a build cluster with one C2D and one i7-980X, so the
tall columns are the C2D. There's a third node being added any day now (i7 920).
Please remember that this build cluster is heavily loaded, also with
non-public jobs - so per build variantions can be significant.

Unfortunately bamboo's average build time calculation does not produce
reliable results in a cluster with very different nodes, so this is just my estimate:

The topology of your build is the most important factor governing parallel
 performance. Weave mode is less sensitive to this. Both parallel modes
are sensitive to indidivudal mojo executions being slow, and it effects the overall build. If your build process ends up creating a 500mb EAR file, it'll tend to marginalize effects of a few modules running in parallel here & there. Weave mode does a real good job with projects that have tasks evenly distributed across modules (as opposed to all the real work happening in just a few specific mojo executions in one or two modules). Surefire in test-phase is not phase-locked to the upstream test phases in weave mode (Haven't done this for it-phase yet). Parallel is not always faster than linear, weave
is always fastest.

Focus up to now has been on achieving stability and functionality, and for the next month or so making all mojos work reliably will be my top priority. Regarding performance
I have not really investigated too much yet, but I will ;)

I have a short list of things I want to investigate:
- According to "strace", File.exists() is being called twice for all access to any
   file in the local repository (affects all modes)
- I am almost sure there's one or more synchronization points somewhere within surefire
   that is reducing surefire performance needlessly.

Only the first issue is within core, and my gut feeling is that not much more performance will be tweaked out of the core unless one manages to re-think at a higher level an even smarter way of executing mojos and respecting dependencies. Someone please prove me wrong, but I think the remaining performance will have to be found in the
plugins/libraries - and it will be found.

I have run serveral profiler tests, but I'm mostly studying threading effects currently. Most of the stuff I've seen is "as expected", and only a small percentage of execution happens within core (and a fair size of that is related to xml parsing, surprise...)





















---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to