You might have already heard about UltraSPARC T1 Systems (Sun Fire T1000 and Sun Fire T2000) from Sun Microsystems, which consumes low power, eco-friendly and has chip level multi threading capabilities built in it. There is a lot of literature out there on Niagara Systems. I have been doing some scalability studies of web services (JAX-RPC 1.1) on UltraSPARC T1 Systems and thought of sharing some tuning and scalability information with you.

UltraSPARC T1 Systems have 8 cores and 4 hardware threads (called strands) per core, which means that it has 32 strands. These systems are really good for server-side applications like web servers, application servers etc where throughput is the main focus. The Solaris and Java Applications sees each strand as a CPU. For example, we can start with psrinfo command on UltraSPARC T1 System which looks something like this:

#psrinfo
0 on-line ...
1 on-line ...
2 on-line ...
3 on-line ...
4 on-line ...
...
30 on-line ...
31 on-line ...


It shows that 0-31 strands are online and Solaris thinks there are 32 CPUs avaliable for its processing. You can play around with some Solaris commands like mpstat, vmstat, prstat to get a feel of the system state for this new architecture.

Essentially, any web service processing involves these three stages namely: SOAP Message parsing, Object-XML mapping (Serialization) and XML-Object mapping (Deserialization). Typically, web services involves more string processing and serves huge concurrent requests. UltraSPARC T1 Systems perfectly suits for these requirements because these systems are built for throughput computing. These systems are also very good for any server-side application, where you need more software threads (with less floating point computations). Java SE 5.0 update 6 and Sun Application Server 8.2 takes advantage of these CMT Systems. For more information about Java SE performance refer to Brian Doherty's and David Dagastine's blog and regarding Sun Application Server performance refer to Scott Oak's blog.

We used a web services benchmark called WSTest for scalability studies, which is quite useful for writing your own micro-benchmarks for web services. And the testcase we used is an industry standard UBL invoice document with different sizes like 100KB and 1MB.
We have applied the following tunings on Java SE 5.0 update 6 to achieve maximum throughput and linear scalability. These values might vary depending upon the benchmark.

-server -Xms1024m -Xmx1024m -XX:+AggressiveHeap -XX:LargePageSizeInBytes=256m -XX:ParallelGCThreads=number of cores -XX:+UseBiasedLocking


Our benchmark results indicate that UltraSPARC T1 Systems are extremely powerful and very good deployment platform for web services. The following graphs show the linear scalability of JAX-RPC 1.1 on a 8-Core UltraSPARC T1 System. The red line indicates the ideal scalability and the blue line indicates the measured scalability.

100 KB Document

1 MB Document


For any XML and Web Services performance related questions, come and join us at Java Performance Community. And if you are looking for more information about UltraSPARC T1 Systems refer the following links:

1. White Paper - Introduction to Throughput Computing
2. UltraSPARC T1 processor
3. Eco-Responsiblity

Comments:

Not to be pendantic - ok - well maybe I am - but I think you've got your Serialization and Deserialization terms backward. XML is the serialized form of an object so XML -> Object is deserialization. The reverse is serialization. RP

Posted by Ron Pomeroy on February 09, 2006 at 10:17 AM PST #

Thanks for the correction.

Posted by Bharath on February 22, 2006 at 06:13 PM PST #

Post a Comment:
  • HTML Syntax: NOT allowed

This blog copyright 2009 by bharath