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]