Skip to Main Content
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.
Note: The Institute of Electrical and Electronics Engineers, Incorporated is distributing this Article with permission of the International Business Machines Corporation (IBM) who is the exclusive owner. The recipient of this Article may not assign, sublicense, lease, rent or otherwise transfer, reproduce, prepare derivative works, publicly display or perform, or distribute the Article.