Gil.Tene
-
Enabling Java in Latency Sensitive Environments
Track: Java at the Cutting EdgeLocation:Grand Ballroom AAbstract:
The low latency Java landscape is changing. Fast. In the past, applying Java to latency and jitter sensitive applications involved sacrifices, tradeoffs, compromises, and contortions that significantly diminished both the productivity and leverage benefits usually associated with the Java platform. But that was the past. In this talk, Gil Tene (CTO, Azul Systems) explores the present. A recently available present, where new capabilities in the very platforms used to execute low latency applications eliminate many of those prior tradeoffs and compromises. Where modern Java applications can achieve consistently low latency while at the same time using the full spectrum of the Java platform's capabilities. Gil will examine the core issues that have historically kept Java environments from performing well in low latency environments, and explain how the removal of key platform obstacles is now driving a rapid change in both the development and the operational practices for low latency Java. After explaining how and why Java applications can finally expect not only speed, but highly contained maximum platform latencies to be "out of the box" behaviors, Gil will contrast and compare some of the practices and restrictions forced on low latency developers in the past with the techniques they can now use freely to achieve new levels of speed, consistency, productivity, and innovation.
-
Java vs. C/C++ Performance Panel
Track: Java at the Cutting EdgeLocation:Grand Ballroom AAbstract:
This is a question that almost everyone doing a major project asks: should I use C++, or Java, or C#? Maybe it is more abstract than that, such as, should I use native code, like C++, or a managed runtime, like Java? Mostly, this is a matter of taste. Or is it? When it comes to ultimate performance, most applications are native, C++/C, with even having some hand crafted assembler mixed in.
But can Java, or any managed runtime in general, do nearly as good? Or maybe it could do better than native code. What could applications do to leverage the most out of these languages? With C++11, has the game changed? With Java 7 or 8, has the game changed? Or has the game really changed with the acceptance of Erlang? These and more, fellow developers, will be questions asked on this panel. It is native code vs. managed runtime in the game of performance! -
How NOT To Measure Latency
Location:Marina RoomAbstract:
Time is money. Understanding application responsiveness and latency is critical not only for delivering good application behavior but also for maintaining profitability and containing risk. But good characterization of bad data is useless. When measurements of response time present false or misleading latency information, even the best analysis can lead to wrong operational decisions and poor application experience.
This talk discusses common pitfalls encountered in measuring and characterizing latency, while using concrete real-world examples. It demonstrates and discusses some false assumptions and measurement techniques that often lead to dramatically incorrect reporting and covers ways to do a sanity check and correct such situations.
-
Understanding GC and Application Responsiveness Characterization in Java environments
Location:Bayview BDuration:Half DayAbstract:Managing, monitoring, and improving application responsiveness is a common need for many software professionals. Whether you develop Java applications or manage them, understanding application responsiveness and the major mechanisms that affect it is key to achieving successful applications and happy users. In this workshop, Gil Tene (CTO, Azul Systems) will dive deeply into two common areas of concern for application responsiveness in Java environments: Garbage Collection & Application Response Time Characterization. The workshop will cover these two areas in depth. We will start with a detailed discussion of Garbage Collection mechanisms: Garbage Collection is an integral part of application behavior on Java platforms, and is often dominantly responsible for application responsiveness behavior. As such, it is critically important for Java developers and application managers to understand the basic workings of garbage collectors so that they can better gauge both as application architecture choices and the actions they can take in selecting and tuning collector mechanisms. Gil will review and classify the various garbage collectors and collection techniques available in JVMs today, and provide an overview of common garbage collection techniques including generational, parallel, stop-the-world, incremental, concurrent and mostly-concurrent algorithms. We will define terms and metrics common to all collectors, and classify each major JVM collector's mechanisms and characteristics and discuss the tradeoffs involved in balancing requirements for responsiveness, throughput, space, and available memory across varying scale levels. We will include an interactive discussion of how these tradeoffs play off in the real world, and discuss ways to minimize or completely eliminate application responsiveness impacts from Garbage Collection. We will continue with a detailed discussion of Application Responsiveness Characterization: Understanding application responsiveness and latency is critical for delivering good application behavior. Gil will start with a discussion of the common needs and motivations for understanding the behavior of application response time and latency, and ways to successfully capture these descriptions and relate them to business needs. However, good characterization of bad data is useless. If measurements of response time present false or misleading latency information, even the best analysis can lead to wrong operational decisions and poor application experience. Gil will demonstrate and discusses some common pitfalls, false assumptions and problematic measurement techniques that lead to dramatically incorrect reporting results, and will explain how these false measurements naturally occur using the most common measurement methods and tools in use today. We will discuss the coordinated data omission problem, and ways to work around it, and will introduce and demonstrate how simple and recently open sourced tools can be used to improve and gain higher confidence in both latency measurement and reporting.