Cloud Foundry: Design and Architecture
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Fabian Lange on Nov 21, 2011
On October 18th, Oracle released Java 7 Update 1, bringing Java 7 much needed stability and fixing a performance optimization issue in which the HotSpot compiler could occasionally lead to incorrect results or could even SIGSEV crashes, as we previously reported. The same issue is fixed in JDK 6 with Update 29 where it occurred only when -XX:+AggressiveOpts or -XX:+OptimizeStringConcat were used, which is not recommended for production servers.
In its Java HotSpot Virtual Machine Performance Enhancements document, Oracle describes other performance related features. The rather short document contains only one new improvement: -XX:+TieredCompilation.
Tiered compilation adds an additional step to the previous mixed mode behaviour of the compiler. Server class JVMs prior to Java 7 initially run code in interpreted mode to collect statistics. Code was then only compiled and optimized when it was hot, like having a high execution count, which gave the HotSpot VM its name. The interpreted mode however is much slower than running compiled code. -XX:+TieredCompilation allows the JVM to gather statistics for optimization whilst already running compiled code.
The relevance of this improvement is probably not very high, as startup behaviour is still not as important as in desktop/applet based applications. Although this change might reduce warmup time in highly dynamics systems, where nodes come up in quick succession.
All the other improvements listed on the page for JVM 7 were already available in Java 6:
Compressed Oops save memory for 64 bit addresses. Instead of taking the 64 bit address from the operating system, the JVM will use a shorter address to reference the objects relative to the heap start. Most programs will significantly benefit from this feature due to reduced memory usage of object references.
Escape Analysis finds out if a newly allocated object will "escape" the current method scope. If it does not, then the object might be allocated on the method stack, and even synchronisation might be removed (lock elision). There is a comprehensive article by Heinz Kabutz on the effect of this optimization.
Non Uniform Memory Access Garbage Collection is an interesting improvement, but has been available for a long time. In modern memory architecture some areas are faster to read and write than others. Especially on multicore systems, there is memory which is reserved for the individual CPUs. Readers who are so inclined can learn more about these memory areas in an excellent article by Ulrich Drepper. The JVM will try to allocate objects in the memory used by the core where the allocating thread is executing. The performance improvement is claimed to be very high (especially on Solaris machines), but the -XX:+UseNUMA option never became default.
As most of the improvements were made available (and even default) in Java 6 Updates, there is still no compelling reason to update to Java 7 because of performance.
Introducing SQLFire: a memory-optimized, high performance SQL database
Early Access! Download JBoss Developer Studio 5.0 now, with packages for Mac, Windows or Linux!
VMware vFabric SQLFire - Test drive the data management system with memory speed, horizontal scalability and a familiar SQL interface
Hi,
That is a simplistic analysis because the stability and performance of the various features are improved continuously in HotSpot. For example, Compressed Oops didn't perform particularly well in Java 6 Update 14 when compared to its performance in more recent releases. And Java 7 is not a static entity either. Java 7 update 2 (which should be out soon) will include a newer version of HotSpot with more improvements.
Best,
Ismael
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
Andrew Watson talks about the work of the OMG, where CORBA is alive and well (hint: in your car), UML and UML Profiles vs. custom Modeling languages, DDS and other middleware, and much more.
Sohil Shah discusses creating iPhone and Android enterprise mobile applications based on cloud services using the open source platform OpenMobster.
Paul Sanford presents the transformations supported by data throughout its life cycle, and how that can be better done with Splunk, an engine for monitoring and analyzing machine-generated data.
A common “best practice” for unit tests is to only write a one assertion in each test. I intend to question this advice by showing that multiple assertions per test are both necessary and beneficial.
John Rauser presents the architectural and technological evolution of Amazon retail websites starting with 1994 and ending with adopting Amazon Web Services.
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
1 comment
Watch Thread Reply