JVMTune – Java Virtual Machine Tuning Service
Ensure that your Java based applications are properly configured and tuned for maximum performance. Usually Java applications are deployed with default or ad-hoc settings without proper testing and not suitable for production usage. Our service, JVMTune (Java Virtual Machine Tuning) ensures that your applications have been properly configured, tuned and operating.
Tools and Methods
Java Virtual Machine is a very important system component for your Java based application. Without understating how does it work you cannot maintain properly your application.
JVMTune uses standard JDK tools, jvmstat – the heap memory monitoring tool, to check and observe the heap usage and the frequency how often major garbage collections are triggered. It is important to monitor all these aspects to make sure the application has enough memory and does not spend time for internal object memory management activities.
To record garbage collection statistics, we use jvmrec, part of Kronometrix Data Recording module.
A test script, containing a number of cases will be run against each JVM in order to simulate load. Java Virtual Machine Tuning will not look into any customer application, record or store private data from the system, processes or perform any sort of profiling investigation which access private customer data. JVM in order to simulate load.
JVMTune does not record, store or process any customer application’s private data, from the system, processes.
How much memory you dedicate to your application is a very important step. Improper Java Virtual Machine Heap memory settings can cause poor performance and affect overall availability of your application.
We will check default heap memory configuration: looking to all memory segments: Young, Old and Permanent generation sizes. Each generation will be tuned based on the various synthetic load tests and we will ensure that the heap footprint is properly set and the application works properly without errors.
For that we will run various test cases and check very detailed the memory usage within Young and Old generations, trying to identify their best configuration sizes.
At the same time we will identify how your application works: has long or short lasting referenced objects. It is very common many applications with long lasting referenced objects will end up in errors.
The Garbage Collector
Garbage Collection is the process of looking at heap memory, identifying which objects are in use and which are not, and deleting the unused objects. Long lasting referenced objects cannot be cleaned by the garbage collector and might present a memory overhead for the application itself.
A garbage collector will be selected in order to minimise the number of collection activities and ensure the application has a good throughput. We will look for the following goals:
- throughput the total time not spent in garbage collection
- pause time the time during the application is paused when the collection takes place
- frequency how often the collection occurs
For applications which require responsiveness will look even deeper in working and selecting the best collectors to offer the performance level required. For example we will look the differences between CMS and G1 collectors and select the best. The new G1 collector found after Java 7 releases is the next evolution of the CMS collector.
Java Virtual Machine Tuning Service Deliverables
A short final report will be delivered, containing all steps performed for each Java application along with the results.
From Java Virtual Machine heap memory sizing, to garbage collector and different payload test cases, we will hand over a report where you can check easily what we have tested, for how long and what results we have found.
This will be a very important report for future similar exercises, keeping track of all applications changes. At the same time if you have never had a baseline record if your application this report will serve as your first baseline performance report for it.
Java Virtual Machine Tuning Service – What’s Next ?
Every time the application changes, is refactored a new JVM tuning cycle must be repeated, in order to ensure the throughput and response time stay the same.
Applications are changing rapidly, supporting new users and offering new features, in today’s electronic economy but many times nobody checks they also function and perform properly for all users or geographies.
One should remember to validate how the application functions looking all layers from the application itself to the Java Virtual Machine and operating system.
System developers, architects are all responsible for how well the application functions and performs in the long run.
- Requirements: Oracle HotSpot JVM, IBM J9
- Operating Systems: Linux, Solaris, Windows
See here the JVMTune service description PDF version