minutes of ESC call ...

Bjoern Michaelsen bjoern.michaelsen at canonical.com
Thu May 28 13:40:40 PDT 2015


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


More information about the LibreOffice mailing list