I'd like to focus a bit on one of the many unique features in the new IBM z14: "Pause-Less Garbage Collection." The IBM z14 is the first and only server in the world with this interesting, useful capability that works to maintain consistent, high Java performance. There's nothing else like it. If you're at all serious about Java (and/or Java-dependent programs) and its performance, then you need to get this new machine.
As background, Java run-time environments experience something called "garbage collection." This blog article explains how garbage collection works on every other server: http://www.cubrid.org/blog/understanding-java-garbage-collection As the article explains, when garbage collection occurs (as it must, periodically, for any active Java run-time), it's literally a "Stop the World" event. The entire run-time instance pauses all real work, the garbage collection threads run to clean up, and then the real work threads resume. As Java heap sizes grow ever larger with increasing program sizes and information processing, "Stop the World" takes progressively longer. If you look at a Java performance monitor on any other server running under some amount of load, you should see a periodic "wiggle," with garbage collection causing the wiggle. And that wiggle is a problem if you're trying to deliver consistent performance, avoid timeouts, and otherwise have smooth running, reliable Java servers. For example, if your mobile user needs a query response within X milliseconds, consistently, every time, other Java servers are likely going to have problems satisfying that particular service level requirement. This performance problem can also affect certain performance sensitive batch and mixed batch/online workloads. Clustering is only a partial solution since it doesn't really help the request that's "stuck" with a JVM that's garbage collecting. And it's not only about Java code per se. Many programs that you don't automatically associate with Java are, in fact, dependent on Java. And how about high frequency trading, on Wall Street and on other major exchanges? If that high frequency trading code has any path through a Java run-time, that "Stop the World" garbage collection can cost a lot of money in lost trading advantage. As that blog article points out, developers and IT operators work very hard (heroically, even) to try to manage around this problem as best they can. IBM has provided excellent advice for many years, and the run-times are very good indeed. But there was no perfect solution, especially as heap sizes grow. Until now, with the IBM z14 and IBM Java Runtime Environments for z/OS and for Linux on Z. With this combination you now have "Pause-Less Garbage Collection." The wonderful IBM engineers and developers who designed and implemented this exclusive feature take great pains to point out that there is still a pause just before garbage collection threads do their work, i.e. there are still some instructions that execute at that precise moment. However, it's a very tiny, predictable, fixed pause -- much, much less of a pause. Moreover, that teeny tiny pause does not increase in length as heap size increases, so it's future proof. The net result is that those wobbles in your Java performance graphs either disappear or at least become very, very hard to see -- and they remain very, very hard to see as your Java environments grow. And that means you really can meet or exceed the most demanding "within X milliseconds, every time" service levels. This stuff is completely new and unique. Pause-Less Garbage Collection uses special new instructions in the IBM z14 processors that are available on CPs and speciality engines (zIIPs and IFLs). These instructions, called the "z14 Guarded Storage Facility," help support a locking mechanism that underpins all this magic. I'm sure you'll get to read more about these instructions in an upcoming edition of the Principles of Operation. And, as soon as you get an IBM z14, your (and your vendors') Java and Java-dependent code will enjoy Pause-Less Garbage Collection, automatically. All you have to do is make sure that you have IBM's Java 1.8 at the appropriate published minimum service level, or higher. (I don't have those precise service release level details available at this moment, but my understanding is that you can get going from Day 1.) If you run under z/VM then you'll also need z/VM Version 6.4 with the PTF for APAR VM65987 to support Pause-Less Garbage Collection, planned to be available on December 15, 2017. More to come.... -------------------------------------------------------------------------------------------------------- Timothy Sipples IT Architect Executive, Industry Solutions, IBM z Systems, AP/GCG/MEA E-Mail: sipp...@sg.ibm.com ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN