-
Enhancement
-
Resolution: Fixed
-
P2
-
6
-
b03
-
generic
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2200223 | 7 | Alex Menkov | P2 | Closed | Fixed | b118 |
On systems where D3D pipeline is used its initialization may take significant fraction of startup time.
(on warm start it is up to 30% till applet.init() is called on my PC).
Refworkload tests shows it takes 180-200ms on my PC (see comments).
We knew that D3D had startup overhead when d3d support was added to JDK. There were efforts to reduce cost of d3d initialization and further reduction is likely to be complicated task. We should have another look though.
On other hand it does not seem that d3d initialization is CPU consuming. It seems to be mostly bound by necessity to communicate with OS and drivers.
So, perhaps it is possible to reduce total startup time by initializing D3D concurrently to other activities.
Some possible ideas (have not been prototyped/verified yet):
a) change plugin to create embedded frame in parallel to processing cache data, initiating network downloads, etc.
b) change d3d, to initialize minimum at first request and continue further init in the background. It must be finished before first draw to the screen
c) change java launcher and awt, to start initializing d3d concurrently to VM initialization. Attach d3d initialization thread to VM later and use it as AWT's toolkit thread.
In later case we may only launch this warm up thread under some circumstances (e.g. if it was explicitly requested). This is something to decide later on.
(on warm start it is up to 30% till applet.init() is called on my PC).
Refworkload tests shows it takes 180-200ms on my PC (see comments).
We knew that D3D had startup overhead when d3d support was added to JDK. There were efforts to reduce cost of d3d initialization and further reduction is likely to be complicated task. We should have another look though.
On other hand it does not seem that d3d initialization is CPU consuming. It seems to be mostly bound by necessity to communicate with OS and drivers.
So, perhaps it is possible to reduce total startup time by initializing D3D concurrently to other activities.
Some possible ideas (have not been prototyped/verified yet):
a) change plugin to create embedded frame in parallel to processing cache data, initiating network downloads, etc.
b) change d3d, to initialize minimum at first request and continue further init in the background. It must be finished before first draw to the screen
c) change java launcher and awt, to start initializing d3d concurrently to VM initialization. Attach d3d initialization thread to VM later and use it as AWT's toolkit thread.
In later case we may only launch this warm up thread under some circumstances (e.g. if it was explicitly requested). This is something to decide later on.
- backported by
-
JDK-2200223 Reduce impact of D3D initializion on startup time
-
- Closed
-
- relates to
-
JDK-6946559 AWTToolKit thread crashes in JNU_GetEnv
-
- Resolved
-
-
JDK-6888203 plugin doesn't add awt.warmup property when launches client VM
-
- Closed
-
-
JDK-6999872 java.awt.Window instantiation leads to JVM CRASH on Windows, JDK7b118+ fastdebug
-
- Closed
-
-
JDK-6987967 D3D preloading thread should initialize COM
-
- Closed
-
-
JDK-6797730 Umbrella: Applet startup performance improvements
-
- Closed
-
-
JDK-6891435 Improve D3D preloading
-
- Closed
-
(2 relates to)