Showing posts with label jvm. Show all posts
Showing posts with label jvm. Show all posts

Monday, September 11, 2017

Tuning Java Virtual Machine JVM on Linux

Tuning Java Virtual Machine JVM on Linux


During its existence Java evolved from a �run anywhere� client-side programming language to an ideal platform for enterprise server-side applications. Java applications, which are often operating system independent, rely on the Java Virtual Machine (JVM) to take advantage of underlying hardware. JVM is a part of the Java Runtime Environment (JRE) required for the running Java programs. How well JVM handles thread management, memory allocation and garbage collection determines Java application performance. There are Java enterprise applications that need to serve information to a number of clients and in due course they might access large data sets, such as massive financial information databases. The goal is to serve those clients with the lowest possible latency.

The term latency refers to time that passes between request being made by a client to a time when the answer is sent back. By tuning JVM it is possible to achieve better performance of applications or web services and, in turn, achieve lower latencies.

Existing optimization solutions are focused only on JVM, and most of them are quite complicated to setup and use. Some examples of such programs are Groningen and Velocitop Catapult. Groningen is open source project originally written by Google, while Velocitop Catapult doesnt have sources available and also trial download is unavailable due to a broken link. Both programs run automated experiments and search for the most optimal JVM settings. None of those two tools is developed any more. Groningen is still in development while the development of Velocitop Catapult has stopped.

The purpose of this project is to build a solution that is simple to use and which can optimize the Linux operating system for the purpose of running JVM, as well as JVM itself. Due to the fact that there are many different implementations of the JVM, focus of this project will be on OpenJDK, free and open source implementation of the Java platform. A list of some other implementations can be found here.

The first step of this project will be to test and document existing solutions, and to study available parameters of the JVM that impact performance of running applications. A list of parameters will be put together containing all relevant parameters with their description including impact on the performance of the virtual machine. During this phase of the project additional studying of Linux process and resource management will also be necessary. All findings beneficial to the project will be documented. In the next stage, it will be necessary to define clear requirements and architecture of the final solution of this project. The final stages will be implementation and testing the implementation to examine its efficacy.


download file now

Read more »