Date: prev next · Thread: first prev next last
2015 Archives by date, by thread · List index


Hi,

On Thu, May 28, 2015 at 06:01:33PM +0000, Noel Grandin wrote:
Wasn't someone going to look at speeding that up? Make check is not
currently making very good use of multiple cores and it has a long tail
where only one or two cores are busy.

I cant fully confirm that -- at least not combined with Michaels 15 minutes
number.  Good ol' big Bertha with two Opteron 6272s has 32 cores, but mediocre
single-threaded performance compared with some of todays offerings. Still[1]:

-j
real     5m 9.091s
user    25m12.250s
sys      2m53.420s

-j32
real     5m30.133s
user    29m46.310s
sys      3m10.660s

-j8
real     6m35.434s
user    19m36.700s
sys      2m 6.390s

-j1
real    34m11.814s
user    17m51.990s
sys      1m52.470s

(all above along with moderate desktop use alongside: Firefox, mplayer audio
streaming etc. -- so not too scientific.)

And with this I see a lot of processes running parallel till the end. This
suggests to me that the stuff is quite parallelized -- however none of the
testing threads seem to be CPU-bound rather the Java-stuff seems to be IO bound
(for IPC?) with the slowest test unit taking ~5 minutes. Thus even 32 jobs or
more dont seem to keep more than one core busy.

At least for people with a meager duo-core laptop or somesuch, this suggests
you should try:

 time make check PARALLELISM=9999 # aka forkbomb me please

And if that doesnt explode your RAM, it should help you quite a bit and you
should end up with 5 minutes for 'make check' -- quite independant of your
hardware, as much of that seems IO-bound idling. If we want to cut down on that
5 minutes, we would need to touch the JunitTest internals.

Best,

Bjoern


[1] As a sidenote: I noted that linking with debug symbols takes at least 4
times as long as without debug symbols. Given that linking happens at the end
of the build with a narrow dependency tree left (as libraries are daisy-chained
dependency-wise for linking), you are really penalized for building with
symbols when you dont need those, as it can easily dry out paralellism. So dont
do that: Rather than building with symbols everywhere and then skipping on
tests, better build without symbols unless you are debugging, but _run the
tests_.

[2] On my ancient notebook with a i7-2720QM (a modern 4th gen i7-4770HQ is at
least 50% faster at the same speed) I find the following with disabling
Junittest_toolkit_unoapi as it was failing on that checkout.

time make check PARALLELISM=9999:
reall    5m15.351s
user    15m52.808s
sys      1m10.073s

time make check (thus -j8):
real      6m2.806s
user    14m32.157s
sys       1m1.861s

time make check PARALLELISM=1:
real    41m 7.984s
user    27m33.174s
sys      1m13.949s

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.