IBM J. Res. Dev

Observations on tuning a Java enterprise application for performance and scalability

View publication


Enterprise software shows increasing levels of concurrency and complexity and decreasing think times between user interactions. Such trends are evident in both emerging workloads, such as social networking, and traditional applications, such as banking, for which both query counts and complexity are increasing. Similarly, in today's multicore-processor era, processor core counts double every processor generation. However, not all hardware capacity (e.g., cache, disk, and network capacity) is growing at this core rate. As a result, processor dies will have more cores sharing resources. Personnel associated with our project Multicore Applications Restructured for Scaling started with a well-tuned baseline version of a large multitier commercial workload and worked to efficiently identify a small set of software changes that, together, would lead to improved scaling and performance. This paper reports the required tooling and analysis, software changes, and improvements (factor performance gains). Perhaps most surprising, we found that a small set of code changes allowed major performance gains within a single Java® virtual machine, which has implications for the way in which we develop and deploy software. © 2010 IBM.