Azul Platform Prime (formerly called Zing) has been developed to address the performance-related issues that result from the managed runtime environment provided by the JVM. These fall into three specific areas:
- Application response latency caused by the garbage collector (GC) pausing application threads to perform its work.
- Application throughput, which is dependant on how well the Just-in-Time (JIT) compiler can optimise code generated from bytecodes.
- Reduced initial throughput when an application is started. This is the warm-up time that is a consequence of the use of JIT rather than static (ahead of time) compilation.
The Prime JVM replaces all the OpenJDK garbage collectors (CMS, G1, Parallel, etc.) with the Continuous Concurrent Compacting Collector (C4). C4 is a truly pauseless collector that will exhibit no degradation in GC related latency, even with heaps as big as 12 TB. The old, C2 JIT compiler has been replaced in Prime with the Falcon JIT developed using the LLVM open-source compiler infrastructure project. To address application warm-up time, Prime includes ReadyNow!, Azul technology that can use profiles collected from a stable running application. The profile can reduce much of the work that the JVM has to do when an application is restarted.
Until Prime 19.07, the Zing System Tools (ZST) were required. The ZST module is installed at the operating system level to manage the physical-to-virtual memory mapping of ZVM heaps directly, rather than using the Linux virtual memory subsystem. This provides a number of performance advantages like cache optimization and managing memory in a way that aligns with how JVM heaps are organized. The requirement of having additional privileges to install the ZST module affected the simplicity of Prime deployments. ZST is now optional in many cases, which makes Prime a drop-in replacement for microservices, container and cloud-based environments.
For JVM-based microservices running in containers, deployment becomes identical to using any other Java runtime. The difference will be felt from the effect C4, Falcon and ReadyNow! have on improving service performance, increasing the capacity of existing infrastructure, and reducing both average and peak latency.
For certain workloads and configurations, the ZST module is still useful. Currently, the maximum heap space supported without the ZST is 1TB. In addition, above 256GB, the way C4 works requires slightly more effort so, for best results, it is recommended to keep the heap space below 256GB if not using ZST. This should not be an issue for the majority of users, especially those deploying microservices.
Comparing Java Performance of Prime
The performance of Prime is the very nearly identical with or without the ZST. It is important to understand that the way C4, Falcon and ReadyNow! work does not change based on whether the ZST is being used or not.
As an example, below are the results of running a standard Cassandra benchmark, both with and without the ZST.
Above the 99.9th percentile, Prime with ZST shows a slight performance improvement but, for most of the time, performance is identical.
ReadyNow!, is used to reduce the warm-up time of an application. This is useful for an application, like Cassandra, that is typically deployed in clusters of nodes. A canary node can be configured to generate a profile of the application that has reached a desired steady-state of optimally compiled code. The profile can then be deployed to all nodes in the cluster to replicate the performance level quickly and easily.
Prime improves the performance of many other common workloads. Enhancements both directly from the LLVM project and those developed internally have been included in the Falcon JIT. Using Prime, Kafka benchmarks show 45% higher maximum throughput than with OpenJDK. Similarly, for Apache Solr, Prime shows over 30% greater throughput.
To aid development and production management of Prime-based workloads, Azul has also included Flight Recorder functionality into the Prime runtime. Flight Recorder is a feature developed for the Oracle JDK, which was released as open-source and contributed to the OpenJDK 11 project. Azul has integrated this code into Prime, making it available for Java SE 8, 11 and 17. Zulu Mission Control is also supported as part of every Prime subscription. Prime now integrates this powerful and flexible graphical APM tool that can use either real-time data from a running Prime instance or perform post-run analysis on a pre-recorded log file.
Get Increased Java Performance
Running Prime without the ZST makes testing as simple as changing your PATH and JAVA_HOME environment variables before restarting your application. Why not give Platform Prime a try and find out how much you can reduce your application latency and improve throughput without changing a line of code?