Azeem Jiva
Junior Member  
Java VM Engineer, Sun Microsystems
|
 |
«
Posted
2005-11-11 16:10:13 » |
|
The client compiler has been updated in Mustang B59, give it a whirl! New things include:
- Linear Scan Allocator - SSE/SS2 support - SSA form
|
|
|
|
|
c_lilian
Senior Member    Projects: 1
Java games will probably rock someday...
|
 |
«
Reply #1 - Posted
2005-11-11 17:32:59 » |
|
Hey ! my old bubbleracer real time raytraced game is now truly real time ! client vm 1.5 => 17-19 fps client vm 1.6 => 48-50 fps !!! this is what I call a nice performance boost  Now what's coming next Azeem ? Lilian [edit] 1.5 server vm => 35-40 fps !!
|
|
|
|
ChrisRijk
Senior Newbie 
Optimise or Die
|
 |
«
Reply #2 - Posted
2005-11-11 17:51:40 » |
|
As a side note, this RFE was pointed out on JavaLobby: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6180872As part of the tiered compilation work for Mustang, the HotSpot client compiler needs to be enhanced to update the methodDataOop profiling counters used by the server compiler to generate higher-quality code. This was also part of b59 of Mustang. So, some parts of tiered compilation are already in? Any chance you can comment further on this, Azeem...?
|
|
|
|
|
Games published by our own members! Check 'em out!
|
|
kappa
|
 |
«
Reply #3 - Posted
2005-11-11 22:04:32 » |
|
OMG, it has SIMD support, i been waiting for that for years, java is really starting to kick ass, thats another advantage we now have over native compiled languages 
|
|
|
|
|
Azeem Jiva
Junior Member  
Java VM Engineer, Sun Microsystems
|
 |
«
Reply #4 - Posted
2005-11-11 22:25:06 » |
|
OMG, it has SIMD support, i been waiting for that for years, java is really starting to kick ass, thats another advantage we now have over native compiled languages  It has SSE instruction support, but no SIMD support
|
|
|
|
|
GKW
|
 |
«
Reply #5 - Posted
2005-11-11 23:19:13 » |
|
When autovectorization is checked into the jre then you may rejoice.
|
|
|
|
|
kappa
|
 |
«
Reply #6 - Posted
2005-11-11 23:50:55 » |
|
It has SSE instruction support, but no SIMD support
can we expect SIMD in java 1.6?
|
|
|
|
|
oNyx
|
 |
«
Reply #7 - Posted
2005-11-12 00:30:55 » |
|
Awesome work 
|
|
|
|
erikd
|
 |
«
Reply #8 - Posted
2005-11-12 02:05:41 » |
|
Some numbers from JEmu2, all with sound enabled, throttling & vsync disabled
Solomon's Key -------------------- emulated hardware specs: 2x Z80@4MHz, 3xAY8910 3-channel sound, 3 graphics layers, dynamic palette (4bits per pixel) 1.6 server ~160 fps 1.6 client ~115 fps 1.4 server ~110 fps 1.4 client ~108 fps
Ms Pacman ---------------- emulated hardware specs: 1x Z80@3MHz, 1xNamco 3-channel sound, 2 graphics layers, static palette (2bits per pixel) 1.6 server ~225 fps 1.6 client ~205 fps 1.4 server ~215 fps 1.4 client ~195 fps
Check Mate ---------------- emulated hardware specs: 1x I8080@2MHz, no sound, 1 graphics layer, black & white (1 bit per pixel) 1.6 server ~253 fps 1.6 client ~193 fps 1.4 server ~234 fps 1.4 client ~194 fps MAME 0.37(debug) ~230 fps MAME 0.37 (no debug) ~700 fps
I didn't test 16bit games yet (The game Snow Bros. seemed to benefit much more from 1.6 client in a previous snapshot). Previously I noted that this game ran about as fast as MAME when using 1.6 client, but I forgot to turn off the debugger in MAME, doh! If you compare with MAME, you can see java has got a long way to go until it reaches C speed for this kind of thing... The CPU emulators in JEmu2 are highly optimized as well as the rendering stuff. Sometimes even more so than in MAME, but I guess java was not made for things like this...
Nevertheless, good to see these performance gains in 1.6!
|
|
|
|
erikd
|
 |
«
Reply #9 - Posted
2005-11-12 02:37:57 » |
|
One more JEmu2 vs. MAME comparison (getting a little off-topic now, sorry):
Street Fighter 2 --------------------- Running on an MC68000 @ 12Mhz, sound disabled (so the Z80 and sound hardware are not emulated both in MAME and JEmu2). java 1.6 server : ~104 fps java 1.6 client : ~97 fps java 1.4 client : ~86 fps MAME : ~153 fps
Note that the SF2 hw doesn't really run at 12Mhz, but the version of MAME I used had it wrong and set the clock to 12Mhz instead of 8Mhz. In the online version, SF2 runs at 8Mhz (the correct speed) and runs on my machine at about 135fps on the server VM. For the sake of this test I temporarily set it to 12Mhz as well. Another note should be that the version I used for MAME uses an asm MC68000 core which is much faster than its portable C core. Last but not least, the video emulation in JEmu2 of this hardware driver is not based on MAME and I suspect that it's not very optimized for speed; all graphics are decoded and rendered in real time without any caching or anything at all. Given all that, java performs pretty well here!
|
|
|
|
Games published by our own members! Check 'em out!
|
|
tom
|
 |
«
Reply #10 - Posted
2005-11-12 03:18:26 » |
|
Finally some improvements of the client vm.
My Quake III viewer runs around 7-8% faster with the 1.6 jre. About as fast as the 1.4 server vm. Good work!
|
|
|
|
EgonOlsen
|
 |
«
Reply #11 - Posted
2005-11-12 19:23:53 » |
|
Tried the b60-build. Paradroidz gained around 18% more performance when using the client VM compared to 1.5 (that's on an Athlon64 3000+). Great work so far!
|
|
|
|
NVaidya
Junior Member  
Java games rock!
|
 |
«
Reply #12 - Posted
2005-11-12 22:47:32 » |
|
With 1.6.0-rc-build60, I'm seeing a 25% speed-up for a heavy duty number crunching module in a visualization application - particle tracking in a heterogeneous mesh. Kudos to the VM Team ! Did some SciMark2.0a benchmarking on my own with the following system: AMD 64 Venice 3000+ @ stock 1.8GHz and oc-ed 2.8GHz 2 x 512 PDP Patriot XBLK PC3200 @ stock DDR400 and oc-ed DDR560 WinXP SP2 The benches were run without the "large" flag and for a minimum period of 10 sec. A longer time, or, -Xcomp flag didn't make any significant difference. The 1.6.0 server bench was ran without the -Xcomp flag (more on that later): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| CPU @ 1.8GHz, RAM @ 2-3-2-5, 1T, DDR400 <- 1.5.0_04 -> <- 1.6.0-rc-b60 -> SciMark 2.0a client server client server Composite Score 221 369 315 391 FFT (1024) 107 289 276 364 SOR (100x100) 424 591 433 585 Monte Carlo 39 79 66 110 Sparse matmult (N=1000, nz=5000) 200 236 361 210 LU (100x100) 333 650 442 687
CPU @ 2.8GHz, RAM @ 2.5-3-3-8, 1T, DDR560 <- 1.5.0_04 -> SciMark 2.0a client server Composite Score 344 575 FFT (1024) 166 451 SOR (100x100) 660 919 Monte Carlo 62 123 Sparse matmult (N=1000, nz=5000) 315 368 LU (100x100) 520 1011 |
Nice speed-ups with 1.6.0 ! The sparse matrix multiplication kernel with the server option turns out timings that seem awry. Don't know what the reason is - 2D arrays ?? With the system overclocked, both client and server exhibit identical speedups that match the CPU speedup. Azeem ! Is the SSE2 support for AMD64 fully complete in the compiler ? IIRC, not long ago, you said something to the effect that it wasn't (in the server compiler). And on using the -Xcomp option in conjunction with the -server option in 1.6.0, there is a gross degradation in performance as below: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| > java -server -Xcomp -Xms256m -Xmx256m jnt/scimark2/commandline 20
SciMark 2.0a
Composite Score: 299.8784709508011 FFT (1024): 227.93827199159992 SOR (100x100): 586.2128746430392 Monte Carlo : 90.42036412631579 Sparse matmult (N=1000, nz=5000): 167.26901426400147 LU (100x100): 427.5518297290492
java.vendor: Sun Microsystems Inc. java.version: 1.6.0-rc os.arch: x86 os.name: Windows XP os.version: 5.1 |
|
Gravity Sucks !
|
|
|
EgonOlsen
|
 |
«
Reply #13 - Posted
2005-11-14 12:16:40 » |
|
Uninstalled b60 again. It's giving me unknown host Exceptions with Webstart where definitely are none and it has some problems with the applets from this site: http://www.tokima.com
|
|
|
|
Azeem Jiva
Junior Member  
Java VM Engineer, Sun Microsystems
|
 |
«
Reply #14 - Posted
2005-11-14 15:53:51 » |
|
Azeem ! Is the SSE2 support for AMD64 fully complete in the compiler ? IIRC, not long ago, you said something to the effect that it wasn't (in the server compiler).
SSE2 support for AMD64 is fully supported under AMD64. There's no SIMD/Auto vectorization support yet
|
|
|
|
|
GKW
|
 |
«
Reply #15 - Posted
2005-11-14 20:47:58 » |
|
Does that mean you guys are looking at autovectorization for a future release?
|
|
|
|
|
NVaidya
Junior Member  
Java games rock!
|
 |
«
Reply #16 - Posted
2005-11-15 00:17:51 » |
|
Should there be a performance enhancement with 1.6.0-rc-b60 over 1.5.0_04 for, in particular, int mult and div ? Seems quite insignificant. FWIW, the benchmarks with C version of SciMark2 (equivalent to the Java version *I suppose* and haven't checked) with VC++6.0/SP6  with the following makefile flags (AMD64 system as described earlier with CPU @ 1.8GHz): CC = cl -Za -W3 CFLAGS = -nologo -O2x /G6 $(CC) $(CFLAGS) scimark2.obj $(OBJS) are below  : 1 2 3 4 5 6 7 8 9 10 11 12 13
| > scimark2.exe 10
** ** ** SciMark2 Numeric Benchmark, see http:** for details. (Results can be submitted to pozo@nist.gov) ** ** ** Using 10.00 seconds min time per kenel. Composite Score: 177.35 FFT Mflops: 108.91 (N=1024) SOR Mflops: 387.21 (100 x 100) MonteCarlo: Mflops: 40.66 Sparse matmult Mflops: 168.28 (N=1000, nz=5000) LU Mflops: 181.67 (M=100, N=100) |
Any ideas what will be a good compiler/flags to give a fair trial to the C version ?
|
Gravity Sucks !
|
|
|
Ken Russell
|
 |
«
Reply #17 - Posted
2005-11-15 01:20:30 » |
|
Uninstalled b60 again. It's giving me unknown host Exceptions with Webstart where definitely are none and it has some problems with the applets from this site: http://www.tokima.comCould you please post the stack trace for one of these UnknownHostExceptions? I recently tracked down a problem with a change in Java Web Start in a relatively early Mustang build which was causing problems like this and would like to know if the problem you're seeing is related. FYI, please see bugs 6228306, 6346071 and related bugs. There is currently no bug filed against Java Web Start because of the regressions caused by 6228306 though I'm still pushing the deployment team to back out that fix.
|
|
|
|
|
Matzon
|
 |
«
Reply #18 - Posted
2005-11-15 07:29:14 » |
|
Could you please post the stack trace for one of these UnknownHostExceptions? This is the one I get in latest mustang 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| java.net.UnknownHostException: javagamesfactory.org at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.<init>(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source) at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source) at com.sun.deploy.net.BasicHttpRequest.doGetRequest(Unknown Source) at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source) at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) at com.sun.javaws.LaunchDownload.getUpdatedLaunchDesc(Unknown Source) at com.sun.javaws.Launcher.downloadJNLPFile(Unknown Source) at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source) at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) at com.sun.javaws.Launcher.launch(Unknown Source) at com.sun.javaws.Main.launchApp(Unknown Source) at com.sun.javaws.Main.continueInSecureThread(Unknown Source) at com.sun.javaws.Main$1.run(Unknown Source) at java.lang.Thread.run(Unknown Source) java.net.UnknownHostException: javagamesfactory.org at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.<init>(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source) at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source) at com.sun.deploy.net.BasicHttpRequest.doGetRequest(Unknown Source) at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source) at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) at com.sun.javaws.LaunchDownload.getUpdatedLaunchDesc(Unknown Source) at com.sun.javaws.Launcher.downloadJNLPFile(Unknown Source) at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source) at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) at com.sun.javaws.Launcher.launch(Unknown Source) at com.sun.javaws.Main.launchApp(Unknown Source) at com.sun.javaws.Main.continueInSecureThread(Unknown Source) at com.sun.javaws.Main$1.run(Unknown Source) at java.lang.Thread.run(Unknown Source) |
|
|
|
|
EgonOlsen
|
 |
«
Reply #19 - Posted
2005-11-15 07:42:22 » |
|
This is the one I get in latest mustang
That's what i'm getting too.
|
|
|
|
c_lilian
Senior Member    Projects: 1
Java games will probably rock someday...
|
 |
«
Reply #20 - Posted
2005-11-15 08:53:14 » |
|
I had these too, until I updated my DNS settings and pointed directly at the ones of my ISP (instead of my gateway)
I'm still unable to reach my intranet server unless using its IP address.
Lilian
|
|
|
|
Ken Russell
|
 |
«
Reply #21 - Posted
2005-11-18 20:29:16 » |
|
I've been in discussions with the deployment team about DNS problems and one of the members of Sun's Java SE networking team found the root cause of some of these applet-related DNS problems. They are unrelated to Java and are caused by installing MSN Messenger 7.5. When installing [MSN Messenger 7.5] [it] changes [a] registry entry: HKLM\System\CurrentControlSet\Services\TCPIP\Parameters\DatabasePath from REG_EXPAND_SZ to REG_SZ which causes it to fail to expand %SystemRoot%, therefore breaking the path. Changing the key back to REG_EXPAND_SZ solves the problem on the machine, but to do so you have to delete the entry and re-create it!
If anybody is experiencing DNS-related issues with Java, please look into this workaround and see if it's what you're experiencing. We'll escalate this issue with Microsoft.
|
|
|
|
|
Matzon
|
 |
«
Reply #22 - Posted
2005-11-19 01:23:29 » |
|
I dont use messenger, and I confirmed that my values (currentcontrolset 001 & 003) were both expand. So something else is the for me... I am available for testing 
|
|
|
|
EgonOlsen
|
 |
«
Reply #23 - Posted
2005-11-19 12:33:31 » |
|
No MSN messenger here either...
|
|
|
|
Chris Hegarty
Junior Newbie
|
 |
«
Reply #24 - Posted
2005-11-23 12:57:50 » |
|
Is it possible that this UnknownHostException is related to a setup issue? Has anything on the system been changed since the last mustang version worked? What was the last version that worked successfully?
Can we get some more information about the setup on your machine: - is ipv6 enabled? - Do you need a proxy to access the internet? - is your machine setup to use DNS for name resolution?
Would it be possible to run the following code passing it the hostname that is unresolvable:
/** * Use system configured name services * run: java Lookup <hostname> * Use JNDI-DNS name service provider * run: java -Dsun.net.spi.nameservice.provider.1=dns,sun Lookup <hostname> */
"import java.net.*;
public class Lookup { public static void main(String[] args) throws UnknownHostException { if (args.length == 1) { InetAddress addr = InetAddress.getByName(args[0]); System.out.println(addr); } } }"
What is the outcome of these 2 runs?
|
|
|
|
|
Matzon
|
 |
«
Reply #25 - Posted
2005-12-12 18:30:26 » |
|
Has anything on the system been changed since the last mustang version worked? I have 1.4, 1.5 and 1.6 installed. Only 1.6 exhibit this behaviour What was the last version that worked successfully? 1.5 Can we get some more information about the setup on your machine: - is ipv6 enabled? - Do you need a proxy to access the internet? - is your machine setup to use DNS for name resolution? - no, default xp, sp2 - no - yes, dhcp, isp dns What is the outcome of these 2 runs?
1 2 3 4 5 6 7 8 9 10 11 12 13
| java -cp bin; Lookup javagamesfactory.org javagamesfactory.org/213.88.244.247 java -Dsun.net.spi.nameservice.provider.1=dns,sun -cp bin; Lookup javagamesfactory.org Exception in thread "main" java.net.UnknownHostException: DNS name not found [response code 3] at sun.net.spi.nameservice.dns.DNSNameService.resolve(DNSNameService.java:162) at sun.net.spi.nameservice.dns.DNSNameService.lookupAllHostAddr(DNSNameService.java:315) at java.net.InetAddress.getAddressFromNameService(Unknown Source) at java.net.InetAddress.getAllByName0(Unknown Source) at java.net.InetAddress.getAllByName0(Unknown Source) at java.net.InetAddress.getAllByName(Unknown Source) at java.net.InetAddress.getByName(Unknown Source) at Lookup.main(Lookup.java:14) |
|
|
|
|
Matzon
|
 |
«
Reply #26 - Posted
2005-12-12 18:36:25 » |
|
I reran the test using 1.5 (apparently I have removed 1.4) and got the same result: 1 2 3 4 5 6 7 8 9 10 11
| c:\Java\jdk1.5.0\bin\java.exe -cp bin; Lookup javagamesfactory.org javagamesfactory.org/213.88.244.247
c:\Java\jdk1.5.0\bin\java.exe -Dsun.net.spi.nameservice.provider.1=dns,sun -cp bin; Look up javagamesfactory.org Exception in thread "main" java.net.UnknownHostException: javagamesfactory.org: DNS name not found [response code 3] at java.net.InetAddress.getAllByName0(InetAddress.java:1128) at java.net.InetAddress.getAllByName0(InetAddress.java:1098) at java.net.InetAddress.getAllByName(InetAddress.java:1061) at java.net.InetAddress.getByName(InetAddress.java:958) at Lookup.main(Lookup.java:14) |
so perhaps 1.6 defaults to the dns,sun SPI ?
|
|
|
|
c_lilian
Senior Member    Projects: 1
Java games will probably rock someday...
|
 |
«
Reply #27 - Posted
2005-12-13 08:46:20 » |
|
http://forums.java.net/jive/thread.jspa?messageID=32852&tstart=0#32852"No, the stack allocation of non-escaping objects is planned for the release after Mustang. Depending on the performance benefit it gives and the size and complexity of the changes required, it could be eventually backported to a future Mustang update release, but there are no current plans to do so." 
|
|
|
|
princec
|
 |
«
Reply #28 - Posted
2005-12-13 12:46:32 » |
|
Aww, rats. Still, it is at best a minor performance enhancement, I suspect. Cas 
|
|
|
|
Chris Hegarty
Junior Newbie
|
 |
«
Reply #29 - Posted
2005-12-14 17:34:10 » |
|
With regard to the UnknownHostException being thrown for javagamesfactory.org.
Thanks to the help from matzon you can workaround this issue temporarily, until resolved by Sun, by removing the ../jre/lib/ext/dnsns.jar jarfile from your mustang install.
This is not a great workaround, but until I come up with something better at least it will allow you to test the performance of C1 which is what thie thread is about.
|
|
|
|
|
|