Dec 8, 2008

Top Performance JVM and Cloud Computing

In the last three months we at RockeTier help a Java based SaaS company boost their software system performance and achieve their next success story.
Java? Can it be boosted?
Java is a byte code compiled language. Therefore, it usually drags several performance limitations compared to fully compiled code (like unmanaged C++).
One of first recommendations in this project was JVM migration to JRockit. BEA JRockit a JVM optimized for the Intel platform, enabling Java applications to run with increased reliability and performance on lower cost, standard-based platforms. According to industry benchmarks (here and here), BEA JRockit leads in performance over other published RISC-based benchmark results. BEA mentioned a boost ratio of 50% to 100%, These is definitely the numbers we are familiar of.
How JRockit achieve these results?
Well they are using several smart techniques out there:
  • Optimized Code Generation - They monitor continuously the code, and adapting the JIT compilation according to the dynamic code, rather than using known general statistics. They are using a background bottleneck detector as well, that collects runtime statistics to detect bottlenecks caused by frequently executed methods. These statistics are being used even on run time to deliver on-the-spot improvements
  • Seamless Garbage Collection - They eliminate the pauses and operational disruption that garbage collection often causes. They are doing that in several ways in order to meet different types of applications and environments (more details can be found here).
Why is it relevant to Cloud Computing?
x86 CPUs are the de facto standard in Cloud Computing. Therefore, JVM that better utilize the cloud computer CPU, requires less CPU hours to complete a given task and therefore saves you money every hour. Therefore, using optimized JVM (and software) help you reduce your Op-EX when you choose cloud computing.
And the bottom line?
Surprise, you can download the JRockit here, absolutely free out of charge...
I think there is no doubt in here; it is a call for action.
Start up your engines :-)


dleskov said...

I am wondering what is your take on JVMs with AOT compilers such as GCJ and Excelsior JET.

Yuval said...

Very interesting,
I think that too many companies are unaware of these chosices and other JVM tunings that are possible even without changing a single line of code..

Moshe Kaplan said...

Hi dleskov,

That is a great comment and great topic to discuss.

Ahead-of-Time (AOT) compilers are compilers that implements Ahead of Time Compilation. This refers to the act of compiling an intermediate language, such as Java bytecode and .NET Common Intermediate Language (MSIL) into a system-dependent binary (Wikipedia).

AOT compiler is a great solution when you have total control on the environment where your code is running. Of course these type of compilers can reach top performance since full compilation should be faster than half one. However, take a look at this critical review of this field.

Please notice that when you dive into cloud computing, no one really assures you that today's hardware will be the one that will be used by your provider tomorrow when you boot a new server. Therefore, if you choose JAVA AOT compilers to these environments, perform periodic checks that performance was not degraded.

P.S Please notice that AOT compiler is a great solution to avoid reverse engineering to your code

RockeTier, the performance experts

Moshe Kaplan said...

Hi Yuval,

I totally agree with you,
Therefore, it is our duty to spread the news :-)

RockeTier, the performance experts


Intense Debate Comments

Ratings and Recommendations