Tuesday Oct 09, 2007

UltraSPARC T2 and WebSphere Application Server

As Sun continue to provide breakthrough multi-core technology and systems based on that you are going to have your hands on this new cool server very soon. As you already may know that its predecessor(Sun Fire T2000) has established itself as the best J2EE App Server Platform (In fact it dominates the other area too but I will leave that to my colleagues to comments on). The details from SPEC web-site are here for your reference:
BEA WebLogic Server SPECjAppServer2004 result on Sun Fire T2000
IBM WebSphere Application Server SPECjAppServer2004 result on Sun Fire T2000
Oracle Application Server SPECjAppServer2004 result on Sun Fire T2000
Sun Java Application Server SPECjAppServer2004 result on Sun Fire T2000

Now you are going to see the next generation server named Sun SPARC Enterprise T5120/T5220 and this is going to continue to lead this segment and other as well. Don't forget to check this blog.

So coming to the point I got my hands on one of these system and did some performance study of WebSphere Application Server V 6.1 and I found these systems to be very impressive. The results of our tests shows that it can give you double the performance of T2000. Due to limitation of 4GB of address space for 32-bit process and the App Server's own scalability, I think none of the App Server will be able to scale and fully utilize this system. So I used multiple instance to maximize the system usages. As the software remains the same the tuning and tuning recommendations are not going to change.

Here is what I have done with my WebSphere Application Server to get best out of this system:

Thread Pools:
ORB: 39/39
Web Container: 47/47
Default: 20/20

EJB Cache: 60000 (previously recommended setting on my blog would be ok too).

JVM Settings:
Heap : 2300-2600
-server -XX:NewSize/-XX:MaxNewSize 1/3rd of Heap
-Xss128k -XX:LargePageSizeInBytes=256m -XX:+AggressiveOpts
-XX:+UnlockDiagnosticVMOptions -XX:-EliminateZeroing -XX:+UseParallelGC
-XX:ParallelGCThreads=16 -XX:+UseParallelOldGC

Connection Pool:
Min/Max Connection: 160/160
Statement Cache: 120

Then the usual stuff we do with TCP Connection settings, disabling the performance monitoring framework, setting the keep-alive etc.

Here are few of the setting I put in my /etc/system and which helped a lot for network performance and interrupts distribution:
set ip:ip_soft_rings_cnt = 8
set ddi_msix_alloc_limit = 8

Some of the issues I came across and you should also keep an eye on that:
Use intrstat(1M) and mpstat(1M) to find out how the interrupts processing going on. intrstat will give you the interrupts processing for different devices and which core is handling that and then you can look at the mpstat(btw this is very long so redirect to some files to take a look at it later) which will tell you if it is a bottleneck.
DB Connection – They always originates from whatever is returned by gethostbyname(3NSL) API and thus it may become bottleneck. So I used containers so the result of these API call are different i.e that will hostname(1) of your zone.
Full GC – Keep an eye on full GC and set the New Generation appropriately.

Note: If you are looking for more information on UltraSPARC T2 don't forget to check http://blogs.sun.com/.

Disclosure Statement:
SPEC, SPECjAppServer2004 are reg tm of Standard Performance Evaluation Corporation. Links are from www.spec.org.

About

dkumar

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
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
   
       
Today