[Libreoffice] Linux plumbers 2011: large application startup slidedeck

Michael Meeks michael.meeks at novell.com
Mon Sep 19 03:36:41 PDT 2011


Hi there,

On Wed, 2011-09-14 at 10:48 +0100, Caolán McNamara wrote:
> > > Taras Glek's slidedeck about firefox, etc. startup performance
> > > http://people.mozilla.com/~tglek/lpc2011/

	So - Taras and I talk reasonably regularly on some of these topics so I
don't think we're too far behind the plan here ;-)

> > > Some goodies. On the relatively low-hanging fruit side of things...
> > > b) fadvise(WILLNEED) before dlopen ?

	our SUSE / libc does this and it has a real win, so we don't do that,
and as Stephan says the pagein is still run: and then not re-run at
second start (which was really dumb) - so we should have improved there.

> > Covered by our pagein hackery, so given the apparent reluctance to add 
> > advise to ld.so, we will have to keep it around for now...

	the real problem is that we have really -a-lot- of libraries to load.
Simply linking them all into one big library not only helps us do good
LTO to save size, but should really speed up I/O by having a single
large contiguous library on disk: with more in it's 'cold' 'hot' etc.
sections. This is what Matus was working towards as GSOC - and when we
have desktop + scripting gbuildized - hopefully we can get svx and sfx2
into tail_build and make that one-big-library a reality.

> Though the pagein list was created once, and isn't really reviewed
> regularly ?

	I poke it now & then, but you're right - it'd be nicer if we had fewer
libraries and they didn't change name now and then ;-) well worth
reviewing to check that it matches what we load on startup.

> as an aside, what's the current preferred/best way for startup
> measurement ?

	Catching the very early linking / init is hard - as Taras says we
prolly want to steal some Mozilla code to do that (which can measure
from the fork if not execve. I tended to do the:

export RTL_LOGFILE=/tmp/startup.nopid; rm -f $RTL_LOGFILE; ./soffice
-writer

	and cat the startup.nopid. Of course using:

export OOO_EXIT_POST_STARTUP=1
export OOO_DISABLE_RECOVERY=1

	Would probably allow us to do this headless - using the svp backend on
a server somewhere in a little loop :-) Then again svp has performance
issues all of its own - and much of our problem is not warm start but
cold start time which is ~impossible to measure deterministically
(sadly).

	ATB,

		Michael.

-- 
 michael.meeks at novell.com  <><, Pseudo Engineer, itinerant idiot



More information about the LibreOffice mailing list