Bug 270815 - [perfs] Core headless startup regression starting N20090305
Summary: [perfs] Core headless startup regression starting N20090305
Status: VERIFIED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Runtime (show other bugs)
Version: 3.5   Edit
Hardware: PC Windows XP
: P2 normal (vote)
Target Milestone: 3.5 M7   Edit
Assignee: platform-runtime-inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: performance, test
Depends on: 271621 272087
Blocks: 270824
  Show dependency tree
 
Reported: 2009-04-01 11:31 EDT by John Arthorne CLA
Modified: 2009-05-06 05:29 EDT (History)
4 users (show)

See Also:


Attachments
Performance trace output on I20090401 (17.44 KB, text/plain)
2009-04-07 15:24 EDT, John Arthorne CLA
no flags Details
Performance trace output on I20090401 (8.44 KB, text/plain)
2009-04-07 16:12 EDT, John Arthorne CLA
no flags Details
Performance trace output on 3.5M5 (7.51 KB, text/plain)
2009-04-07 16:43 EDT, John Arthorne CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description John Arthorne CLA 2009-04-01 11:31:49 EDT
The core headless startup test had a major regression introduced somewhere between I20090224 and N20090305. We need to track down the cause of this.
Comment 1 John Arthorne CLA 2009-04-07 10:00:06 EDT
From more careful analysis of results, the regression actually appeared between N20090205-2000 and I20090210-0950. There was a brief improvement in I20090224 and then it was back again. There were some problems with the I20090224 build, so I think the real regression came earlier. I'm reviewing changes between those two builds to see if I can narrow down the cause.
Comment 2 John Arthorne CLA 2009-04-07 10:19:07 EDT
The only significant change that matches the numbers so far is the introduction of Equinox DS: bug 253926. However I have been measuring DS startup and it only takes about 30ms for me. There may be something peculiar to the test environment that makes it take longer.
	

Comment 3 Thomas Watson CLA 2009-04-07 10:37:31 EDT
DS spawns a background thread to do component resolution.  Even though DS look like it starts fast, perhaps this thread is slowing down the rest of the startup.
Comment 4 John Arthorne CLA 2009-04-07 12:05:03 EDT
I downloaded the test framework, and ran the test both with and without DS in the SDK. It shows an average 47ms slowdown with ds enabled (discarding two runs that were inconsistent). This doesn't account for the roughly 500ms slowdown introduced in 20090210

With DS:

  Elapsed Process:         984ms                
  Elapsed Process:        1.01s                        
  Elapsed Process:         984ms                       
  Elapsed Process:         984ms                       
  Elapsed Process:         984ms                       

  CPU Time:               1.11s                        
  CPU Time:               1.14s                        
  CPU Time:               1.11s                        
  CPU Time:               1.12s                        
  CPU Time:               1.16s   

Without DS:

  Elapsed Process:         937ms                       
  Elapsed Process:         937ms                       
  Elapsed Process:         937ms                       
  Elapsed Process:         921ms                       
  Elapsed Process:         937ms                       

  CPU Time:               1.05s                        
  CPU Time:               1.06s                        
  CPU Time:               1.09s                        
  CPU Time:               1.06s                        
  CPU Time:               1.09s                       

Comment 5 Thomas Watson CLA 2009-04-07 12:34:33 EDT
John, when the test framework can you use a .options file (with the -debug <trace fiel> options) for tracing?  If so it would be interesting to capture the console output from each run with the following trace enabled:

org.eclipse.osgi/profile/startup=true
Comment 6 John Arthorne CLA 2009-04-07 13:12:36 EDT
I can set the trace option, but I haven't yet found a way to capture stdout to see the result. If we moved to using DebugTrace it would be easier to capture the output.
Comment 7 Thomas Watson CLA 2009-04-07 13:30:30 EDT
You can also set the following option to write the profile data out to.  It should append to the file each run.

org.eclipse.osgi/defaultprofile/logfilename=/develop/trace.out
Comment 8 John Arthorne CLA 2009-04-07 15:24:44 EDT
Created attachment 131165 [details]
Performance trace output on I20090401
Comment 9 John Arthorne CLA 2009-04-07 16:12:24 EDT
Created attachment 131174 [details]
Performance trace output on I20090401

Previous was from first run. This one is from a second run.
Comment 10 John Arthorne CLA 2009-04-07 16:43:16 EDT
Created attachment 131177 [details]
Performance trace output on 3.5M5
Comment 11 John Arthorne CLA 2009-04-07 16:51:43 EDT
There are some definite differences here:

simpleconfigurator startup:

M5: 31ms
I20090401: 235ms

Equinox ds:

M5: 0ms (didn't exist)
I20090401: 31ms

But from this 235ms slowdown it ends up being only about 100ms slower, so some of the lost time is made up later. Simpleconfigurator looks like a promising place to start deeper investigation.
Comment 12 John Arthorne CLA 2009-04-08 10:48:59 EDT
We tracked down and solved part of this regression in bug 271621.
Comment 13 John Arthorne CLA 2009-04-22 11:42:04 EDT
The big regression from 3.4 has finally been fixed, and we are back down near the baseline numbers. We still see a regresion of 100-150ms depending on the build. This can be attributed to the general decay of this test because it is sensitive to the number of plugins in the system, the size of the plug-in registry, etc. There is also a small regression due to the introduction of Equinox DS that we accept given the benefits it provides. Profiling on the latest builds, the vast majority of time is taken by class loading, so there is very little opportunity for further improvements here.
Comment 14 Frederic Fusier CLA 2009-05-06 05:29:51 EDT
Verified for M7 with I20090430-2300 results