Bug 215464 - Regression in org.eclipse.core perf test: StartupTest.testApplicationStartup (aka 'Core Headless Startup')
Summary: Regression in org.eclipse.core perf test: StartupTest.testApplicationStartup ...
Status: RESOLVED WORKSFORME
Alias: None
Product: Equinox
Classification: Eclipse Project
Component: Framework (show other bugs)
Version: 3.4   Edit
Hardware: PC All
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: equinox.framework-inbox CLA
QA Contact:
URL:
Whiteboard: stalebug
Keywords: performance, test
Depends on: 202464 215491
Blocks:
  Show dependency tree
 
Reported: 2008-01-16 06:19 EST by Frederic Fusier CLA
Modified: 2019-04-29 09:56 EDT (History)
8 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Frederic Fusier CLA 2008-01-16 06:19:46 EST
Scenario: org.eclipse.core.tests.runtime.perf.StartupTest.testApplicationStartup shows now a significant regression on all boxes. Last results for I20080115-0800 build are:

RHEL 4.0 Sun 1.4.2_10 (3 GHz 2.5 GB): -5.9%
Win XP Sun 1.4.2_10 (3 GHz 2 GB):     -5.5%
RHEL 3.0 Sun 1.4.2_10 (3 GHz 2 GB):   -7.7%
Win XP Sun 1.4.2_10 (2 GHz 512 MB):   -4.9%
RHEL 3.0 Sun 1.4.2_10 (2 GHz 512 MB): -133.4% (not reliable)
Comment 1 Thomas Watson CLA 2008-01-16 09:54:18 EST
Around Nov 28, 2007 source bundles were changed to have one per bundle.  This almost doubled the number of bundles in the SDK.  The performance results do indicate a consistently higher startup time since around Nov 28th.

Past performance analysis has indicated that each bundle installed in the system increases startup time by 1/2 - 1 ms.  This corresponds the slower startup time for all the test machines except the machine with RHEL 3.0 Sun 1.4.2_10 (2 GHz 512 MB).  Here the CPU time is somewhat consistent but the overall Eclipse elapsed time is very sporadic.  Perhaps the disk is very fragmented which is causing inconsistent IO?

I thought there was another bug open to have either p2 or old update not install the source bundles.
Comment 2 Thomas Watson CLA 2008-01-16 09:57:14 EST
bug 202464 is open against p2 to not install source bundles.
Comment 3 Thomas Watson CLA 2008-01-16 10:07:40 EST
I opened bug 215491 against update to address handling source bundles.
Comment 4 Thomas Watson CLA 2008-01-17 10:25:56 EST
I released a degradation comment for the core headless startup test (StartupTest.java) which points to this bug to explain the degradation.
Comment 5 Jeff McAffer CLA 2008-01-17 21:24:54 EST
fwiw this test is bogus because it depends on the number of bundles in the configuration and that varies over time.  A real test would have a fixed and known data set.
Comment 6 Thomas Watson CLA 2008-01-18 09:47:30 EST
The same is true for the UIStartupTest test.  It is not as pronounced there because we are running a bunch of other code in the test which offset the 50-100 ms penalty from the extra source bundles.
Comment 7 Jeff McAffer CLA 2008-04-11 14:16:29 EDT
We should have a test that measures the time to startup the Eclipse IDE.  That is one of the things that end users care about.  However, the core startup tests are not in that area.  Here we really just care about bundle overheads etc.  

Having said that, we should still address this issue for 3.4 

Comment 8 Pascal Rapicault CLA 2008-04-14 11:01:18 EDT
Frederic, could you please detail more on how the measurement is done?
Is the test framework dropped into the plugins or dropins folder?
Comment 9 Thomas Watson CLA 2008-04-14 12:00:41 EDT
- With the latest p2 we should no longer be installing the source bundles which doubled the number of bundles in our test.  Theoretically this should bring the numbers of the startup tests back down to reasonable levels.  The test results still show a big slowdown

- Bug 224177 was causing update.configurator to attempt to reconcile the installed bundles each startup.  This maybe causing a big slowdown since it will always detect that the source bundles need to be installed after p2 determined they should be uninstlled.

Comment 10 Frederic Fusier CLA 2008-04-14 13:56:51 EDT
(In reply to comment #8)
> Frederic, could you please detail more on how the measurement is done?
> Is the test framework dropped into the plugins or dropins folder?
> 
I have no idea where the test framework is dropped to before running performance tests. Kim, may you give some clue here? Thanks
Comment 11 Kim Moir CLA 2008-04-14 14:31:07 EDT
Regarding comment #10, the test framework and the test plugins are put in the dropins folder before running the perf tests.
Comment 12 Pascal Rapicault CLA 2008-04-14 16:20:44 EDT
The problem with installing the test fwk by putting it in the dropins is that it causes a lot of work to be done on startup (some metadata generation, followed by the reconciliation).
This work is not typical of what a user would see when the installation is fresh out of the zip. Indeed this test is measuring the performance of the dropins behavior, which we know is in regression since 3.3 because of the new way of handling reconciliation.
There has been some improvements but given the new architecture I don't think we will be as performant as we use to be.

Now what I would be really interested in seeing is the difference in the *real* startup time of an unmodified (or at least with nothing dropped) 3.3 and unmodified 3.4, where normally we should see some improvements in 3.4 since less work as to happen.
Comment 13 DJ Houghton CLA 2008-04-14 17:07:16 EDT
I could be wrong but I thought that when we measured the time for startup, it was the second startup so we could avoid the time to read all the plugin.xml files to build the registry, etc? I believe that a measurement of the second time startup with p2 is really what we want.
Comment 14 Thomas Watson CLA 2008-04-15 09:06:48 EDT
DJ, you are correct.  We should be running from a cached configuration to run the performance tests.  We need to confirm that a form of bug 224177 is not cropping up in the performance tests.  Perhaps they do not use the same setup as the other session tests do?
Comment 15 Frederic Fusier CLA 2009-01-13 09:18:17 EST
3.5 perf test results also shows a regression and the comment applied  for 3.4 version on this test is still activated:
"Performance decrease caused by the increase in the number of bundles. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=215464 for details."

Is the comment still valid for the observed 3.5 regression?

FYI, here are the numbers for 3.5 performance tests results:
Win XP Sun 1.5.0_10 (2 x 3.00GHz - 3GB RAM)		
	I20081118-1720	-5.0%
	I20081119-1600	-5.3%
	N20081120-2000	-5.0%
	I20081125-0840	-5.0%
	N20081127-2000	-5.0%
	N20081129-2000	-4.8%
	I20081202-1812	-23.0%
	N20081204-2000	-7.5%
	N20081206-2000	-23.7%
	I20081209-0100	-4.3%
	I20081210-0100	-3.9%
	I20081211-0100	-4.3%
	I20081211-1105	-6.3%
M4	I20081211-1908	-4.8%
	N20081213-2000	-4.8%
	I20081216-0800	-3.6%
	N20081218-2000	-3.9%
	N20081220-2000	-5.5%
	N20090101-2000	-5.2%
	N20090103-2000	-5.5%
	I20090106-0800	-4.6%
	N20090108-2000	-5.5%
	N20090110-2000	-5.1%
		
SLED 10 Sun 1.5.0_10 (2 x 3.00GHz - 3GB RAM)		
	I20081118-1720	-4.5%
	I20081119-1600	-4.7%
	N20081120-2000	-5.0%
	I20081125-0840	-4.6%
	N20081127-2000	-4.3%
	N20081129-2000	-4.3%
	I20081202-1812	-4.9%
	N20081204-2000	-4.7%
	N20081206-2000	-5.1%
	I20081208-0921	-4.8%
	I20081209-0100	-4.9%
	I20081210-0100	-5.2%
	I20081211-0100	-6.3%
	I20081211-1105	-5.4%
M4	I20081211-1908	-5.4%
	N20081213-2000	-5.7%
	I20081216-0800	-5.2%
	N20081218-2000	3.1%
	N20081220-2000	-17.4%
	N20081225-2000	-6.5%
	N20081227-2000	-7.0%
	N20090101-2000	-6.6%
	N20090103-2000	-6.6%
	I20090106-0800	-6.0%
	N20090108-2000	-6.4%
	N20090110-2000	-6.6%
		
RHEL 5.0 Sun 6.0_04 (2 x 3.00GHz - 3GB RAM)		
	I20081118-1720	-6.4%
	I20081119-1600	-5.6%
	N20081120-2000	-7.6%
	I20081125-0840	-5.5%
	N20081127-2000	-5.8%
	N20081129-2000	-6.7%
	I20081202-1812	-6.3%
	N20081204-2000	-5.7%
	N20081206-2000	-5.1%
	I20081208-0921	-6.4%
	I20081209-0100	-5.9%
	I20081210-0100	-6.1%
	I20081211-0100	-7.7%
	I20081211-1105	-14.8%
M4	I20081211-1908	-6.3%
	N20081213-2000	-6.2%
	I20081216-0800	-5.9%
	N20081218-2000	-6.0%
	N20081220-2000	-7.1%
	N20081225-2000	-6.2%
	N20081227-2000	-4.2%
	N20090101-2000	-2.7%
	N20090103-2000	-6.8%
	I20090106-0800	-8.4%
	N20090108-2000	-23.1%
	N20090110-2000	-5.0%
Comment 16 Thomas Watson CLA 2009-01-13 11:36:49 EST
I think so.  We increased the number of bundles in both releases:

3.3->3.4 - increased by 19 bundles
3.4->3.5 - increased by 13 bundles

So I would expect some slowdown to occur in this testcase when comparing 3.5 with 3.4.
Comment 17 Dani Megert CLA 2009-04-01 06:57:56 EDT
Tom, I think the new regression should be closer investigated because it is much bigger from 3.4 to 3.5 than it was from 3.3 to 3.4 and according to your investigation we added less bundles this time.

Core startup 3.3 to 3.4: 3.1 - 7.5%, 44 - 104 ms slower
Core startup 3.4 to 3.5: 33.6 - 50.1%, 371 - 590 ms slower

In an old comment I see:
>Past performance analysis has indicated that each bundle installed in the
>system increases startup time by 1/2 - 1 ms
This seems no longer be the case i.e. adding bundles seem to be more expensive. Do we have numbers whether this cost is O(n) or more, or less? This would also be interesting for products sitting on top of us.
Comment 18 John Arthorne CLA 2009-04-01 11:33:20 EDT
I agree with Dani that there is a recent regression that is different from the general degradation over time from increased number of bundles, etc. I have entered bug 270815 for this.
Comment 19 John Arthorne CLA 2009-04-01 13:20:56 EDT
(set target milestone and priority on wrong bug)
Comment 20 Thomas Watson CLA 2009-04-01 18:01:57 EDT
(In reply to comment #17)
> In an old comment I see:
> >Past performance analysis has indicated that each bundle installed in the
> >system increases startup time by 1/2 - 1 ms
> This seems no longer be the case i.e. adding bundles seem to be more expensive.
> Do we have numbers whether this cost is O(n) or more, or less? This would also
> be interesting for products sitting on top of us.
> 

It should be O(n).  I did some testing with installing many bundles and the numbers are identical when launching from a cached state for both 3.4.2 and 3.5 M6:

On my WinXP laptop I have the following numbers:
bundles            init time
----------------------------
    10              430 ms
  5000             1000 ms
 10000             1600 ms

This is only measuring the overhead of the framework to reify the installed bundles from a persistent cached state.  No additional code is actually run in any of the installed bundles in this measurement.

The numbers above suggest that there is an overhead of ~400 ms just to get an empty framework.  If we subtract that from the numbers then we have the following:

bundles            init time
---------------------------------------
    10              430 - 400 = 30ms
  5000             1000 - 400 = 600ms
 10000             1600 - 400 = 1200ms

The rate of growth in relation to the number of bundles is linear and is around 0.12 ms on my laptop.  I am convinced the slowdown is not because of changes in the framework since these numbers are identical between 3.4 and 3.5 M6.
Comment 21 Eclipse Genie CLA 2019-04-29 02:23:25 EDT
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.
Comment 22 Thomas Watson CLA 2019-04-29 09:56:50 EDT
At this point I am closing as worksforme.  The framework has greatly changed from when the discussion happened in this bug.  Any future investigation in startup performance will need to be measured against the latest.