Speaker Details

Dave Neary
Ampere Computing

Dave Neary is a prominent figure in the open source community and specializes in Developer Relations. With a career spanning over two decades, Dave has contributed significantly to various open source projects and communities, including GNOME and OpenStack. He is known for his expertise in fostering developer communities, advocating for open source principles, and bridging the gap between developers and technology companies. Currently, Dave serves as the Director of Developer Relations at Ampere Computing, where he plays a key role in shaping developer engagement strategies and promoting collaborative development practices. His dedication to open source and community building has made him a respected and influential voice in the tech industry.

Java application performance can be something of a dark art. In addition to performance improvements that you get "for free" by updating to a more recent JVM, there are endless knobs and switches that you can use to tune application performance, based on your application's bottlenecks and critical performance indicators.

In this presentation, I will review a number of axes of application performance, with a filter of optimizing workload performance on Arm64 processors. That starts with performance improvements in the JVM: out-of-the-box performance on Arm64 improved by 30% between Java 11 and Java 21. I will share some of the improvements integrated by Oracle that led to these improvements, which will give some insight into performance-related architectural differences.

Beyond JVM improvements, there are also numerous JVM configuration options that can have a dramatic effect on application performance, including JVM ergonomics around garbage collection and heap size that are often sub-optimal for a long-running cloud workload that expects to have access to almost all the resources of a VM, configuration options around memory page size that can differ across different compute architectures, and efficient usage of JVM threads to optimize consumption of hardware resources.

One layer beneath that, it is possible to tune operating system configuration to allow the JVM to make more effective use of system resources by matching JVM page size to kernel memory page size, optimizing various system parameters related to system threads, I/O, or networking to reduce the time that that the operating system is the bottleneck for your application.

To show the impact of some of these settings, I will use some performance analysis and debugging tools to show how you can figure out good (perhaps not optimal) values for sizing VMs, and configuring the operating system and JVM, to allow you to get the most oout of your application, while running on fast, cheap, and power-efficient Arm64 CPU cores.

More

Searching for speaker images...