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

Reply via email to