Performance/OOo31 LibrariesOnStartup

From Apache OpenOffice Wiki
< Performance
Revision as of 19:21, 12 February 2009 by ErAck (Talk | contribs)

Jump to: navigation, search

Libraries loaded on OpenOffice.org 3.1 startup (Windows)

The startup performance of OpenOffice.org is not as good as many people expect. This has several reasons which more or less are based on the long development history. Due to discussion with many people it should be clear that we process too much code during the startup process.I think it's the best way to make the startup much faster if we completely understand what libraries are loaded and why they are used.

My first analysis results strengthen our thesis that too much code (libraries) is involved in the startup process. The following numbers have been retrieved from the build DEV300m40 under Windows. The Microsoft VisualStudio Debugger shows exactly when a library is loaded into the address space of a debugged process. Therefore it's valuable tool to retrieve information about the libraries which are loaded during startup.

Tools for Windows for performance analysis

Microsoft provides several tools to analyze performance problems. Especially for Windows Vista there are the Windows Performance Analysis Tools available for download. The Visual C++ 2008 Express suite provides a very good debugger.

Some statistically information about all the libraries we provide in OpenOffice.org.

Data/Folder Program Basis URE Sum
Number 4 293 50 347
Size (Bytes) 2.750.464 161.765.640 6.677.152 171.193.256

I use certain measurement points to see what libraries have been loaded by OpenOffice.org:

Measurement point Total number of libraries loaded (OOo libs) Percentage of all OpenOffice.org libraries. Percentage of all OpenOffice.org libraries (size)
Desktop ctor (Application object created on the stack) 57 (33) 9,50 % 26,14 %
Desktop::Init (First initializations, e.g. UNO service manager) 59 (34) 9,80 % 26,18 %
Desktop::Main () just entered 70 (34) 13,00 % 27,59 %
Desktop::Main (before we enter the main message loop)/StartCenter ready 98 (70) 20,20 % 34,16 %
Empty Writer document 129 (93) 26,80 % 46,37 %

Table with the loading order of libraries of OpenOffice.org under Windows

The following table shows when&what libraries are loaded during the OpenOffice.org 3.1 startup.

Order of Loading Library/Executable Size
001 soffice.bin 7.418.368
002 sal3.dll 1.732.608
003 uwinapi.dll 86.016
004 sofficeapi.dll 326.144
005 comphelp4MSC.dll 948.224
006 cppuhelper3MSC.dll 431.104
007 salhelper3MSC.dll 13.824
008 cppu3.dll 143.360
009 stlport_vc7145.dll 597.504
010 ucbhelper4MSC.dll 356.864
011 vos3MSC.dll 94.208
012 i18nisolang1MSC.dll 24.576
013 sfxmi.dll 3.110.912
014 fwemi.dll 849.408
015 fwimi.dll 299.008
016 utlmi.dll 465.920
017 tlmi.dll 509.952
018 basegfxmi.dll 572.928
019 vclmi.dll 3.074.048
020 sotmi.dll 257.024
021 i18nutilMSC.dll 67.072
022 icuuc40.dll 949.760
023 icudt40.dll 13.912.064
024 svlmi.dll 724.992
025 svtmi.dll 2.884.608
026 tkmi.dll 1.870.336
027 jvmfwk3.dll 89.088
028 libxml2.dll 970.752
029 sbmi.dll 1.310.208
030 xcrmi.dll 529.920
031 saxmi.dll 80.384
032 jmi_g.dll 32.768
033 jvmaccess3MSC.dll 25.600
Desktop ctor 44.759.552
034 msci_uno.dll 52.224
Desktop::Init() just entered the method 44.811.776
035 bootstrap.dll 453.632
036 reg3.dll 99.328
037 store3.dll 78.336
038 unsafe_uno_uno.dll 12.800
039 purpenvhelper3MSC.dll 18.432
040 configmgr2.uno.dll 1.432.064
041 stocservices.uno.dll 92.672
042 sysmgr1.dll 37.888
043 sax.uno.dll 135.680
044 localebe1.uno.dll 30.208
045 behelper.uno.dll 31.232
Desktop::Main() just entered the method 47.234.048
046 splmi.dll 148.992
047 ucb1.dll 197.632
048 fwlmi.dll 106.496
049 ucpfile1.dll 245.248
050 fwkmi.dll 1.879.552
051 dnd.dll 115.200
052 fileacc.dll 52.224
053 package2.dll 248.320
054 fsstorage.uno.dll 94.208
055 i18npool.dll 1.235.456
056 icuin40.dll 1.052.160
057 updchk.uno.dll 166.912
058 libcurl.dll 121.344
059 deploymentmi.uno.dll 266.240
060 deploymentmiscmi.dll 100.864
061 libdb42.dll 541.184
062 helplinkermi.dll 134.144
063 libxslt.dll 166.400
064 updatefeed.uno.dll 77.824
065 unoxmlmi.dll 280.064
066 ucpexpand1.uno.dll 24.576
067 updchkmi.dll 48.640
068 resmi.dll 65.024
069 lngmi.dll 982.016
070 xomi.dll 2.898.432
Desktop::Main() just before entering the message loop 58.483.200
071 oleautobridge.uno.dll 280.576
072 emsermi.dll 148.992
073 uuimi.dll 198.144
074 filterconfig1.dll 188.416
075 swmi.dll 7.332.352
076 svxmi.dll 9.172.992
077 avmediami.dll 56.832
078 gomi.dll 295.936
079 drawinglayermi.dll 802.304
080 canvastoolsmi.dll 498.176
081 aggmi.dll 129.024
082 cppcanvasmi.dll 285.184
083 localedata_euro.dll 642.048
084 localedata_en.dll 104.448
085 xstor.dll 239.616
086 reflection.uno.dll 99.840
087 guesslangmi.dll 36.864
088 libtextcat.dll 14.848
089 introspection.uno.dll 98.816
090 sysdtrans.dll 107.008
091 ftrans1.dll 50.688
092 mcnttype.dll 33.792
093 ldapbe2.uno.dll 83.968
Empty Writer document up and running 79.384.014

Just to get an idea what the first measurement point "Desktop ctor" means. The following code snippet can be found in the desktop project

extern "C" int soffice_main()
{
    tools::extendApplicationEnvironment();
 
    RTL_LOGFILE_PRODUCT_TRACE( "PERFORMANCE - enter Main()" );
 
    desktop::Desktop aDesktop; // FIRST MEASUREMENT POINT
    // This string is used during initialization of the Gtk+ VCL module
    aDesktop.SetAppName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("soffice")) );
    SVMain();
 
    return 0;
}

It's obvious to see that several libraries are loaded/used that nobody would think of. Especially sbmi.dll (Basic), sfx2mi.dll (old framework), sotmi.dll are loaded before any initialization is done, even VCL is not inialized yet. There are several other libraries where one can ask why they are used that early in the startup process. This simple analysis already raised many questions that need to be answered.

Table with the loading order of libraries of svdem.exe under Windows

In contrast to the OpenOffice.org executable the following table provides the libraries used by the svdem.exe which is a minimal VCL based application (built in the VCL project).

Order of Loading Library/Executable Size
001 svdem.exe 15360
002 cppuhelper3MSC.dll 431.104
003 sal3.dll 1.732.608
004 uwinapi.dll 86.016
005 salhelper3MSC.dll 13.824
006 cppu3.dll 143.360
007 stlport_vc7145.dll 597.504
008 tlmi.dll 509.952
009 vos3MSC.dll 94.208
010 basegfxmi.dll 572.928
011 iso18nisolangMSC.dll 24.576
012 comphelp4MSC.dll 948.224
013 ucbhelper4MSC.dll 356.864
014 vclmi.dll 3.074.048
015 sotmi.dll 257.024
016 utlmi.dll 465.920
017 i18nutilMSC.dll 67072
018 icuuc40.dll 949760
019 icudt40.dll 13912064
SAL_IMPLEMENT_MAIN() entered 24.252.416
020 bootstrap.dll 453.632
021 reg3.dll 99.328
022 store3.dll 78.336
023 msci_uno.dll 52.224
024 unsafe_uno_uno.dll 12.800
025 purpenvhelper3MSC.dll 18.432
026 tkmi.dll 1.870.336
Application usable 26.837.504

The following code snippet from svdem.cxx (inside in VCL/workben) shows where the first measurement point is located.

SAL_IMPLEMENT_MAIN()
{
    tools::extendApplicationEnvironment(); // <- First measurement point
 
    Reference< XMultiServiceFactory > xMS;
    xMS = cppu::createRegistryServiceFactory( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "applicat.rdb" ) ), sal_True );
 
    InitVCL( xMS );
    ::Main();
    DeInitVCL();
 
    return 0;
}

Even the svdem.exe needs to load many OpenOffice.org libraries. This result supports people who report that also svdem.exe has a bad cold startup time. There is one library (icudt40.dll) which has a size that makes up about 50% of the sum of all libraries.

Measurement point Total number of libraries loaded (OOo libs) Percentage of all OpenOffice.org libraries. Percentage of all OpenOffice.org libraries (size)
SAL_IMPLEMENT_MAIN() entered 44 (19) 5,47 % 14,16%
svdem.exe up and running 60 (26) 7,95 % 15,68 %

File I/O during OpenOffice.org startup

It was reported that OpenOffice.org has a high amount of file access during startup. This part wants to analyze what file I/O is done by OpenOffice.org. Under Windows one can use the Microsoft tools from www.sysinternals.com who provides Process Monitor (FileMon is replaced by Process Monitor). Process Monitor provides many more information, especially durations for system calls with a very high timer resolution, than FileMon and therefore is a better tools for our purpose.

Costs of library loading

This chapter tries to figure out what costs are involved in library loading under Windows. As described in the previous chapters OpenOffice.org uses a big number of libraries during startup. Currently it's not really known what does this cost, especially in the cold startup scenario where no libraries could be loaded from the cache.

Process Monitor results - OpenOffice.org cold startup

This snippet below has been directly copied from the output of Process Monitor and shows how the sal3.dll library is opened in OpenOffice.org during startup. This OpenOffice.org startup was done after a reboot of the machine where one can expect that no application libraries are found in the system cache. I did this test with a much slower machine to better see the impact of file I/O (The machine before was 2xOpteron Dual Core with 4GB RAM and fast SAS disk drives).

The machine (a notebook) has the following attributes:

  • Intel Pentium M 1.80 GHz
  • 1GB RAM
  • Windows XP SP3
  • Toshiba MK6026GAX 60 GB, 2.5 Zoll - 5400rpm - UDMA100 - 16MB Cache

The cold startup time for OpenOffice.org DEV300M40 on this machine was:

  • ~14 seconds (Splash screen visible)
  • ~34 seconds (Writer up and running)
Time (hh:mm:ss)  Dur. (s)   Executable    PID   TID  Function                   Argument (Path/File/Name)                                Result
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11:16:07,6025666 0.0000134  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\Program Files\OpenOffice.org 3\program\sal3.dll	    NAME NOT FOUND	
11:16:07,6027267 0.0000162  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\WINDOWS\system32\sal3.dll	                            NAME NOT FOUND	
11:16:07,6028767 0.0000087  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\WINDOWS\system\sal3.dll	                            NAME NOT FOUND	
11:16:07,6029854 0.0000128  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\WINDOWS\sal3.dll	                                    NAME NOT FOUND	
11:16:07,6031072 0.0000100  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\Program Files\OpenOffice.org 3\program\sal3.dll	    NAME NOT FOUND	
11:16:07,6436763 0.0000198  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\Program Files\OpenOffice.org 3\Basis\program\sal3.dll    NAME NOT FOUND	
11:16:07,6738153 0.0007130  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   AllocationSize: 1.732.608, EndOfFile: 1.732.608, FileAttributes: A
11:16:07,6746442 0.0000126  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\Program Files\OpenOffice.org 3\program\sal3.dll	    NAME NOT FOUND	
11:16:07,6747895 0.0000153  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\WINDOWS\system32\sal3.dll	                            NAME NOT FOUND	
11:16:07,6749412 0.0000089  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\WINDOWS\system\sal3.dll	                            NAME NOT FOUND	
11:16:07,6750510 0.0000122  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\WINDOWS\sal3.dll	                                    NAME NOT FOUND	
11:16:07,6751677 0.0000101  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\Program Files\OpenOffice.org 3\program\sal3.dll	    NAME NOT FOUND	
11:16:07,6755242 0.0000126  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\Program Files\OpenOffice.org 3\Basis\program\sal3.dll    NAME NOT FOUND	
11:16:07,6756639 0.0000067  soffice.bin	 3904  3908  FASTIO_NETWORK_QUERY_OPEN  C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   AllocationSize: 1.732.608, EndOfFile: 1.732.608, FileAttributes: A
11:16:07,6757971 0.1243334  soffice.bin	 3904  3908  IRP_MJ_CREATE              C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Desired Access: Execute/Traverse, Synchronize, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a, OpenResult: Opened
11:16:07,6758737 0.0212516  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 0, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7227570 0.0003288  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.728.512, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7230998 0.0004252  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.716.224, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7235563 0.0002313  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.724.416, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7240611 0.0002020  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.703.936, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7242740 0.0140059  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.720.320, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7383006 0.0005361  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.708.032, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7579252 0.0158132  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.679.360, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7738479 0.0001095  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.683.456, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7741284 0.0010766  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.712.128, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7752335 0.0005350  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.691.648, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7929455 0.0004247  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.671.168, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,7934040 0.0004101  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.675.264, Length: 4.096, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,8000587 0.0000143  soffice.bin	 3904  3908  IRP_MJ_CREATE	        C:\Program Files\OpenOffice.org 3\program	            SUCCESS	   Desired Access: Read Attributes, Synchronize, Disposition: Open, Options: Directory, Synchronous IO Non-Alert, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
11:16:07,8000814 0.0000120  soffice.bin	 3904  3908  IRP_MJ_DIRECTORY_CONTROL   C:\Program Files\OpenOffice.org 3\program\soffice.bin       SUCCESS	   Filter: soffice.bin, 1: soffice.bin
11:16:07,8001043 0.0000044  soffice.bin	 3904  3908  IRP_MJ_CLEANUP             C:\Program Files\OpenOffice.org 3\program	            SUCCESS	
11:16:07,8006798 0.0000028  soffice.bin	 3904  3908  FASTIO_QUERY_INFORMATION   C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   AllocationSize: 1.732.608, EndOfFile: 1.732.608, NumberOfLinks: 1, DeletePending: False, Directory: False
11:16:07,8008901 0.0000053  soffice.bin	 3904  3908  IRP_MJ_CLEANUP             C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	
11:16:07,8012776 0.0000000  soffice.bin	 3904  3908  Load Image	                C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Image Base: 0x60100000, Image Size: 0x1ae000
11:16:07,8013036 0.0004350  soffice.bin	 3904  3908  IRP_MJ_READ                C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.711.104, Length: 1.536, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,8032435 0.0000534  soffice.bin	 3904  3908  IRP_MJ_CREATE	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll.2.Manifest NAME NOT FOUND Desired Access: Generic Read/Execute, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, AllocationSize: n/a
11:16:07,8035125 0.0006993  soffice.bin	 3904  3908  IRP_MJ_CREATE	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll.2.Config NAME NOT FOUND Desired Access: Generic Read/Execute, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, AllocationSize: n/a
11:16:07,8286051 0.0006755  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 1.679.360, Length: 16.384, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O
11:16:07,8292932 0.0003053  soffice.bin	 3904  3908  IRP_MJ_READ	        C:\Program Files\OpenOffice.org 3\URE\bin\sal3.dll	    SUCCESS	   Offset: 172.032, Length: 16.384, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O

If you look at the output from Process Monitor one can stumble that the time stamp from the next function doesn't match or overlaps the previous one + duration. Some functions are processed asynchronously and Process Monitor always logs the duration of a function when a result is available. The output from Process Monitor shows us that libraries are not read in one portion into the address space of a process. There are three different access phases one can see here and which can also be found when looking at other application libraries.

  • The first page (4096 bytes) of the library is loaded. This is completely clear as the loader needs to look at the PE header of the library.
  • Different parts of the library are loaded which always have the same size (4096 bytes) which also the normal page size of x86 based CPUs.
  • At the end data is read with different sizes (e.g. sal3 with 1.536, 16.384 and 16.384 bytes)

It's interesting to see that the sum of durations for the initial part of sal3 needs ~183ms where total elapsed time is ~226ms. So most of the time was used for file operations. It's obvious that more parts of the libraries are loaded into memory whenever more code/data is needed. Therefore it should be clear that the numbers are more the lower bound for library loading. About 180 ms sounds not very much but if we look at the number of libraries we load at startup this can grow to huge times!

The following table tries to show what time is initially spent for all libraries that are loaded during startup. It will help us to see what impact library loading has on cold startup time. If you look at the times you will clearly see that it's not always related to the library size, there must be other parameters which influence it. May be it depends on the number of exports or statics. This must be clarified to know what can we do to improve here.

See Performance/Startup#ELF_Dynamic_Objects; Sb 15:14, 11 February 2009 (UTC).

Relocations can definitely have an impact but this shouldn't happen for OpenOffice.org as we rebase our libraries. That means that all application libraries are set with an initial load address which doesn't overlap. All relocations inside the library are overwritten to match this load address. If Windows is able to load the library exactly at this load address nothing must be done, otherwise relocations are necessary.

See [MSDN magazin - Optimizing DLL Load Time Performance]
Order of Loading Library/Executable Size Time (ms) to init/load (FileMon)
001 soffice.bin 7.418.368 691
002 sal3.dll 1.732.608 183
003 uwinapi.dll 86.016 72
004 sofficeapi.dll 326.144 168
005 comphelp4MSC.dll 948.224 361
006 cppuhelper3MSC.dll 431.104 364
007 salhelper3MSC.dll 13.824 56
008 cppu3.dll 143.360 139
009 stlport_vc7145.dll 597.504 253
010 ucbhelper4MSC.dll 356.864 153
011 vos3MSC.dll 94.208  ?
012 i18nisolang1MSC.dll 24.576  ?
013 sfxmi.dll 3.110.912  ?
014 fwemi.dll 849.408  ?
015 fwimi.dll 299.008  ?
016 utlmi.dll 465.920  ?
017 tlmi.dll 509.952  ?
018 basegfxmi.dll 572.928  ?
019 vclmi.dll 3.074.048  ?
020 sotmi.dll 257.024  ?
021 i18nutilMSC.dll 67.072  ?
022 icuuc40.dll 949.760  ?
023 icudt40.dll 13.912.064  ?
024 svlmi.dll 724.992  ?
025 svtmi.dll 2.884.608  ?
026 tkmi.dll 1.870.336  ?
027 jvmfwk3.dll 89.088  ?
028 libxml2.dll 970.752  ?
029 sbmi.dll 1.310.208  ?
030 xcrmi.dll 529.920  ?
031 saxmi.dll 80.384  ?
032 jmi_g.dll 32.768  ?
033 jvmaccess3MSC.dll 25.600  ?
Desktop ctor 44.759.552 > 2440ms
034 msci_uno.dll 52.224
Desktop::Init() just entered the method 44.811.776
035 bootstrap.dll 453.632
036 reg3.dll 99.328
037 store3.dll 78.336
038 unsafe_uno_uno.dll 12.800
039 purpenvhelper3MSC.dll 18.432
040 configmgr2.uno.dll 1.432.064
041 stocservices.uno.dll 92.672
042 sysmgr1.dll 37.888
043 sax.uno.dll 135.680
044 localebe1.uno.dll 30.208
045 behelper.uno.dll 31.232
Desktop::Main() just entered the method 47.234.048
046 splmi.dll 148.992
047 ucb1.dll 197.632
048 fwlmi.dll 106.496
049 ucpfile1.dll 245.248
050 fwkmi.dll 1.879.552
051 dnd.dll 115.200
052 fileacc.dll 52.224
053 package2.dll 248.320
054 fsstorage.uno.dll 94.208
055 i18npool.dll 1.235.456
056 icuin40.dll 1.052.160
057 updchk.uno.dll 166.912
058 libcurl.dll 121.344
059 deploymentmi.uno.dll 266.240
060 deploymentmiscmi.dll 100.864
061 libdb42.dll 541.184
062 helplinkermi.dll 134.144
063 libxslt.dll 166.400
064 updatefeed.uno.dll 77.824
065 unoxmlmi.dll 280.064
066 ucpexpand1.uno.dll 24.576
067 updchkmi.dll 48.640
068 resmi.dll 65.024
069 lngmi.dll 982.016
070 xomi.dll 2.898.432
Desktop::Main() just before entering the message loop 58.483.200
071 oleautobridge.uno.dll 280.576
072 emsermi.dll 148.992
073 uuimi.dll 198.144
074 filterconfig1.dll 188.416
075 swmi.dll 7.332.352
076 svxmi.dll 9.172.992
077 avmediami.dll 56.832
078 gomi.dll 295.936
079 drawinglayermi.dll 802.304
080 canvastoolsmi.dll 498.176
081 aggmi.dll 129.024
082 cppcanvasmi.dll 285.184
083 localedata_euro.dll 642.048
084 localedata_en.dll 104.448
085 xstor.dll 239.616
086 reflection.uno.dll 99.840
087 guesslangmi.dll 36.864
088 libtextcat.dll 14.848
089 introspection.uno.dll 98.816
090 sysdtrans.dll 107.008
091 ftrans1.dll 50.688
092 mcnttype.dll 33.792
093 ldapbe2.uno.dll 83.968
Empty Writer document up and running 79.384.014

FileMon results - OpenOffice.org warm startup

The warm start scenario shows us that there are no read operations in the log. Windows is able to map the code/data of the library to the process without any READ operation. The time consumed for this operation is not measurable with the timer resolution of 15ms.

Time
hh:mm:ss:ms     Executable:PID          Function          File                                                                          Result  Options
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
16:30:53.015	soffice.exe:2224	OPEN	          C:\home\cd\INSTALL\DEV300M40\OPENOFFICE.ORG 3\URE\BIN\SAL3.DLL	        REPARSE	Options: Open  Access: Read-Attributes	
16:30:53.015	soffice.exe:2224	OPEN	          C:\home\cd\install\dev300m40\OpenOffice.org 3\program\	                REPARSE	Options: Open Directory  Access: 00100080	
16:30:53.015	soffice.exe:2224	OPEN	          D:\\INSTALL\DEV300M40\OPENOFFICE.ORG 3\PROGRAM	                        SUCCESS	Options: Open Directory  Access: 00100080	
16:30:53.015	soffice.exe:2224	DIRECTORY	  D:\\INSTALL\DEV300M40\OPENOFFICE.ORG 3\PROGRAM	                        SUCCESS	FileDirectoryInformation: soffice.exe	
16:30:53.015	soffice.exe:2224	QUERY INFORMATION D:\\INSTALL\DEV300M40\OPENOFFICE.ORG 3\URE\BIN\SAL3.DLL	                SUCCESS	Attributes: A	
16:30:53.015	soffice.exe:2224	OPEN	          C:\home\cd\install\dev300m40\OpenOffice.org 3\URE\bin\sal3.dll	        REPARSE	Options: Open  Access: 00100021	
16:30:53.015	soffice.exe:2224	OPEN	          C:\home\cd\install\dev300m40\OpenOffice.org 3\program\	                REPARSE	Options: Open Directory  Access: 00100080	
16:30:53.015	soffice.exe:2224	OPEN	          D:\\INSTALL\DEV300M40\OPENOFFICE.ORG 3\PROGRAM	                        SUCCESS	Options: Open Directory  Access: 00100080	
16:30:53.015	soffice.exe:2224	DIRECTORY	  D:\\INSTALL\DEV300M40\OPENOFFICE.ORG 3\PROGRAM	                        SUCCESS	FileDirectoryInformation: soffice.exe	
16:30:53.015	soffice.exe:2224	OPEN	          D:\\INSTALL\DEV300M40\OPENOFFICE.ORG 3\URE\BIN\SAL3.DLL	                SUCCESS	Options: Open  Access: 00100021	
16:30:53.015	soffice.exe:2224	CLOSE	          D:\\INSTALL\DEV300M40\OPENOFFICE.ORG 3\URE\BIN\SAL3.DLL	                SUCCESS		
16:30:53.015	soffice.exe:2224	OPEN	          C:\home\cd\install\dev300m40\OpenOffice.org 3\URE\bin\sal3.dll.2.Config	REPARSE	Options: Open  Access: 001200A9

Costs of data file access

Personal tools