Generational Garbage Collection for IBM Tivoli Service Management Software Products
drenigma 100000J5RU Comment (1) Visits (2721)
OLTP is the computing activity of serving requests originated by interactive users waiting for an answer in a acceptable time; whereas, batch processing refers to programs running in the background trying to finish the given amount of work in the designated window of time. The key performance metric for OLTP system is the response time experienced by the end user, while for batch systems, the reference metric is the throughput - the number of tasks completed in the unit of time. See H. H. Liu: Software Performance and Scalability: A Quantitative Approach – J. Wiley & Sons, for a more detailed discussion.
One of the benefits that the Java platform has introduced is the fact that it manages the memory for you, through the usage of the Garbage Collection (GC) algorithm. Unfortunately, a not well tuned GC can result in sub-optimal performance and scalability. The initial step of the GC tuning is choosing the GC policy according to the characteristics of the workload. Today's JVMs support multiple GC algorithms that you can control thought the command line options. The IBM JVM support 4 different policies through the -Xgcpolicy: option:
Ideally optavgpause should be the best choice for pure OLTP systems, while optthruput is better suited for batch processing (take a look to Java technology, IBM style: Garbage collection policies, Part 1 and Part 2 articles on
TPAe based systems are actually a mix of the two workload profiles and their behavior is characterized by the presence of a lot of transient objects. Based on these considerations, Tivoli performance decided to test the gencon policy that is able to provide a good trade-off between short pause times and good overall throughput. Results achieved in all the experiments that we did were very encouraging. As you can see in the following graph about one of the scenarios we run, the response time improved and became more stable, as is shown by a reduced standard deviation:
The gencon policy was also beneficial for the CPU utilization. Also from this point of view we observed a lower and more stable demand, as you can see clearly in the following graphs (default policy and gencon):
We decide to include the gencon policy in the performance best practices for IBM Tivoli Service Management Software Products. as a consequence of the good results obtained in all experiments that we run.