advances in liberty and java performance
TRANSCRIPT
Advances in Liberty and Java performance
December 10, 2019
Vijay Sundaresan
Please note
IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice and at IBM’s sole discretion.
Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision.
The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract.
The development, release, and timing of any future features or functionality described for our products remains at our sole discretion.
Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the user’s job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here.
© 2019 IBM Corporation
Java Performance : The need for a broad-based approach
3
– Enterprise Java use cases vary widely
• Architecture : Web/app servers, microservices, serverless, reactive etc.
• Deployment size varies from 1 to 1000s of server instances
• Deployments can be running either on-premise or in the cloud
• Java technology can be JavaEE, MicroProfile, SpringBoot, Quarkus etc.
• Platforms : X86, Power, System Z, ARM
Many metrics must be balanced for Java Performance
4
• Wide variety of use cases means many metrics must be balanced
• Different goals → different design decisions
• No single “right” answer
• Must keep a balance →make sensible trade-offs
• Key performance metrics tracked
• start-up time • ramp-up time• memory footprint• response time• CPU/Throughput
Other factors to balance are different workloads, platforms
start-up time
footprint
ramp-upresponse time
CPU
IBM differentiation : Investments at all levels of Java stack
5
– IBM and Red Hat have strong representation in Open Java communities
• OpenJDK project : Rad Hat manages JDK8/JDK11 LTS releases, several committers
• AdoptOpenJDK.net project : IBM and Red Hat are both platinum sponsors
• Eclipse OpenJ9 project : IBM has project leads, committers, SE spec committees
• Open Liberty project : IBM has project leads, committers, EE spec committees
– IBM Systems and Red Hat provide foundational layers
• Red Hat Linux : Industry leading Linux OS solution used by enterprises
• OpenShift Container Platform (OCP) : Industry leading container solution
• POWER Systems : Large install base for WAS on AIX/Linux on Power
• System Z : Large and mission critical WAS deployments on z/OS and LoZ
Influence over full Java stack unlocks unique opportunities
6
Application server
Container orchestration
Java Virtual Machine
Operating Systems
Hardware
Open Liberty
OpenJ9
OpenShift
RHEL/AIX/zOS
X86/POWER/Z
Optimize at different layers of the stack as well as across layers
Customers benefit from IBM focus on full-stack Java performance
7
Optimizations were done in the app server, JVM, operating system and hardware layers
Give customers ongoing value (ROI) for choosing IBM’s Java stack / platforms
14.9x aggregate hardware/software improvements WAS 6.1/IBM Java5 /z9 → WAS 9.0.0.4/IBM Java 8 SR5/z14
IBM is committed to current and future
customer needs
• Meet customers where they are today– Deliver value targeting
traditional deployment models
– On-premise, monolithic, bare-metal
• Assist customers on where they want to go tomorrow– Deliver value targeting
emerging deployment models
– Containers, microservices, serverless, polyglot
8
9© 2019 IBM Corporation
Cloud Pak for Applications | 3 customer needs with 1 offering
Run existing apps | Continue to run your apps, where they are.
Modernize existing apps |When apps need to move, IBM has the most experience, tools, and experts to move them
Building new apps |New apps are automatically ready for hybrid-cloud deployment, using the best of open source, fully supported
Flexibly rebalance entitlement over time: from what you need today, to what you need tomorrow
10
A faster, more secure way to move your core business applications to any cloudthrough enterprise-ready containerized software solutions
Cloud Paks – Middleware anywhere
Complete yet simpleApplication, data and AI services,fully modular and easy to consume
IBM certifiedFull software stack support, and ongoing security, compliance and version compatibility
Run anywhereOn-premises, on private and public clouds,and in pre-integrated systems
IBM containerized softwarePackaged with Open Source components,
pre-integrated with the common operational services,and secure by design
Container platformand operational services
Logging, monitoring, security,identity access management
IBM Cloud / July 2019 / © 2019 IBM Corporation
IBM Cloud Private SystemsEdge
Perpetual and Term licensing options available, w/ unrestricted OpenShift
ICP full product included as transition path to OpenShift
Cloud Pak for Applications: what you need today, what you need tomorrow
No Charge, supported when used with Cloud Pak for Applications
MODERNIZE APPSWhen apps need to move, IBM has the right experience, tools, and experts to move them.
IBM Cloud Private
IBM Modernization & Developer Tools
Transformation Advisor
WebSphere Migration Toolkit
Enterprise Dev tools extensions for local IDE’s
Included with all components
WebSphere ND
WebSphere Base
Liberty Core
WebSphere Application Server
Continue to run your apps, where they are.Run Existing Appsand
Build New AppsNew apps are automatically ready for hybrid-cloud deployment, using the best of open source, fully supported.
Digital App Builder
Mobile ServicesIBM Mobile Foundation
Red Hat OpenShift
Red Hat Runtimes
11
IBM Integrated Application Runtimes
AppsodyIntegrated DevOps
Kabanero
Codewind
Agenda
12
– In this talk, I will focus on recent performance improvements in
• Open Liberty application server
• OpenJ9 JVM
– I will cover both cloud focused and general optimizations
Agenda
13
Cloud optimizations
Java Performance in the Cloud
14
Recognize resource
limits imposed
by environment
Judiciously use
computing
resources
Fast
start-up
Small
deployment
size
Keep each container small and scale out new containers instances quickly
Computing resources ==
Small deployment size
• Security – less attack surface area
• Reduced push time• Matters for developers
• Reduced pull time• Add new node for scaling out
15
Docker images: https://hub.docker.com/r/adoptopenjdk/openjdk8-openj9/tags
• Pick a different/smaller OS base image
• Use jre instead of sdk
• Use jlink with Java11 and above
Advantages Three Recipes for smaller image size
Docker Image Sizes
Latest(ubuntu)
ubi-minimal
alpine jre alpine-jre
amd64 149 MB 152 MB 117 MB 81 MB 52 MB
Small deployment size == Small container image
Container awareness
16
• Better stability:– JVM can properly size data structures (e.g. Java
heap) ➔ avoid OOM killer
• Better performance:– JVM can properly size number of GC/JIT threads
–Application can properly size its thread pools
Advantages
OpenJ9 is container aware (Java8 and above)
Host: 16GB
Container limit: 1G
JVM sets heap size:
4 GBSide effects:➢OOM
➢ JVM process gets killedOOM
Host: 64 vCPUs
JVM thinks can
use 64P
Container limit: 1P Side effects:
➢ Too many GC/JIT threads
➢ Too many app threads
Bad scenarios
The importance of being container aware
Container awareness - usability
• Automatically increase default -Xmx(max heap) value when running in container
• Better solution than setting -Xmx and –Xms when same app is deployed with different memory limits:
“-XX:MaxRAMPercentage=…” “-XX:InitialRAMPercentage=…”
17
Heap = 1.6G
Container Mem = 2G
Heap = 2.4G
Container Mem = 3G
Heap = 3.2G
Container Mem = 4G
-XX:MaxRAMPercentage=80
• -XX:+UseContainerSupport option enabled by default in Java8 and above
MemLimit Java8/11 Java8 Java11
<= 1G MemLimit/2 RAM/2 RAM/2
1G – 2G MemLimit – 512M 512M 512M
>= 2G MemLimit * 3/4 512M RAM/4
Xmx outside containers
Xmx inside containers
Container awareness : usability
Open Liberty autonomically tunes for the number of CPUs
18
0
1000
2000
3000
4000
5000
6000
7000
8000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101
OnlineBankingApponICP(2workernodes)
17.0.0.4vs18.0.0.1- 1GHeap6instances
Throughput
18.0.0.1 17.0.0.4
• Do not manually tune Liberty thread pool, autonomics are best bet for peak performance• Adapted to work well for high latency tasks that are more likely in the cloud• Liberty 18.0.0.1 up to 4X better throughput running workloads in the cloud
OpenJ9 JVM judiciously uses computing resources
19
• Computing resources ==
• Cloud it’s about sharing; do not be greedy in using all resources• OpenJ9 is conservative with heap growth
• OpenJ9 frees memory used transiently during JIT compilation
0
100
200
300
400
500
600
700
800
1GB 2GB 4GB
Res
iden
t se
t si
ze (
MB
)
Container limit
Steady state memory footprint in AcmeAir
OpenJ9 Hotspot
For large containers OpenJ9 uses less than half the memory
Open Liberty and OpenJ9 : a very memory efficient combination
20
19.0.0.1 Liberty Server Memory Footprint is much smaller than other Lightweight App Servers
100% 100% 94%
312% 312% 318%
0%
50%
100%
150%
200%
250%
300%
350%
Pe
rce
nt
of
19
.0.0
.1(l
ow
er
is b
ett
er)
End Footprint (RSS) Comparison of lightweight Servers - ee8 app - daytrader8
(lower is better)
100% 100% 91%
339%377%
334%
0%
50%
100%
150%
200%
250%
300%
350%
400%
Pe
rce
nt
of
19
.0.0
.1(l
ow
er
is b
ett
er)
End Footprint (RSS) Comparison of lightweight Servers - ee7 app - daytrader7
( lower is better)
100% 100% 88%
551% 517%
665%
299%
0%
100%
200%
300%
400%
500%
600%
700%
Pe
rce
nt
of
19
.0.0
.1(l
ow
er
is b
ett
er)
End Footprint (RSS) Comparison of lightweight Servers - Jenkins app
(lower is better)
100% 100% 91%
276%
492% 503% 493%
0%
100%
200%
300%
400%
500%
600%
WebSphereLiberty 19.0.0.1
Open Liberty19.0.0.1
WebSphereLiberty 18.0.0.1
Tomcat 9.0.13 WildFly15.0.0.Final
JBoss EAP 7.2 Glassfish 5
Pe
rce
nta
ge o
f 1
9.0
.0.1
(l
ow
er
is b
ett
er)
End Footprint (RSS) Comparison on Power 8 -tradelite7 app
(lower is better)
System Configuration:----SUT: LinTel – SLES 11.4, Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz, 4 physical cores, 64GB RAM. Oracle JDK 8 u201 is used for non-IBM app servers & IBM JDK 8 SR5 FP30 is used for WebSphere Liberty 19.0.0.1, and IBM JDK 8 SR5 FP10 for 18.0.0.1
Free resources when applications are idling
-XX:+IdleTuningGcOnIdle(default setting in container)
21Benchmark: https://github.com/blueperf/acmeairMore details: https://developer.ibm.com/javasdk/2017/09/25/still-paying-unused-memory-java-app-idle
anthesisgroup.com: “Some 30 percent of VMs are zombies”https://anthesisgroup.com/wp-content/uploads/2017/03/Comatsoe-Servers-Redux-2017.pdf
1. Detect idle state
2. Trigger GC
3. Compact Java heap
4. Send OS reclamation hint
OpenJ9 frees resources when applications are idling
Start-up time == time needed for your server application to become operational
Ramp-up time == time needed for your server application to reach peak throughput
• Important for:• Developer work flow
• Scaling out operations
• Scale to zero
• Outages (planned or not)
Startup time and rampup time are more important on the cloud
OpenLiberty+OpenJ9 : the road to one second startup time
23
Halved startup time due to app server and JVM changes done consistently throughout 2019 OpenLiberty and OpenJ9 changes improve startup time to be almost at one second now
0
0.5
1
1.5
2
2.5
December March April July August September
2019 Progression of Open Liberty + OpenJ9 PingPerf startup time (in seconds)
OpenJ9 : Improved Cached feature metadata when no change to server.xml Changed bundle activation to start in parallel
Better AOT code RAS processing Optimized loading of CXF JSON/JSONB provider RAS annotation processing at build time
JMX MBeanServer init Cached annotation information for built-in JAX-RS Providers Cached plugin xml and OSGi metadata
OpenJ9 : GC hints in shared classes cache Reduced class loading during startup
Reduced logging overhead
OpenJ9 : More AOT code in shared classes cache
OpenJ9 : Optimize class verification overhead
Open Liberty startup time comparison (all using OpenJ9 JVM)
24
0
1
2
3
4
5
6
7
8
OpenLiberty 19.0.0.8 TomEE 8.0.0-M3-microprofile Tomcat 9.0.22 + OpenWebBeans2.0.11(CDI) + CXF 3.3.2 (jaxrs)
Wildfly 17.0.1 javaee JBoss 7.2 Glassfish web 5 Payara web 5.192
PingPerf Startup time with OpenJ9+Shared Classes Cache (in seconds)
• Open Liberty startup time is significantly shorter than other application servers
Fast startup time == Scale on demand
25
• Open Liberty startup time is significantly shorter than other application servers
0
1
2
3
4
5
6
7
8
9
10
OpenLiberty 19.0.0.8 TomEE 8.0.0-M3-microprofile Tomcat 9.0.22 + OpenWebBeans2.0.11(CDI) + CXF 3.3.2 (jaxrs)
Wildfly 17.0.1 javaee JBoss 7.2 Glassfish web 5 Payara web 5.192
PingPerf application Startup time with HotSpot (in seconds)
Open Liberty startup time comparison (all using HotSpot JVM)
Open Liberty + OpenJ9 startup time improvements
26
0%
5%
10%
15%
20%
25%
30%
35%
40%
45%
50%
No Apps No Features Web Profile7 Web Profile8 Java EE7 Java EE8 DayTrader7 DayTrader8
OpenLiberty+OpenJ9 19.0.0.9 vs 18.0.0.4Startup Time Improvement Percentage
• Open Liberty+OpenJ9 changes in 2019 improved startup time across the board
OpenJ9 Shared classes cache is the key to fast startup time
27
• Shared classes cache (SCC) = Memory mapped file used to cache :• ROMClasses (pre-processed .class file contents, i.e. “read only” class data)• AOT (ahead-of-time) compiled code
• Transparent usage (no specific training run needed)• Cold run: SCC populated with classes/AOT-methods used by application
• Class loader must be SCC aware (extend URLClassLoader or use Helper API)
• Warm run: application loads ROMClasses from SCC and starts up fast• Avoids file access; desired content likely present in RAM• Avoids some processing of classes
• SCC is persistent: survives machine reboot
• Multiple JVMs can concurrently attach to the same SCC → footprint (RSS) savings due to ROMClass sharing in physical memory
Shared Class Cache usability in containers
• Problem: Cache goes away when container is destroyed
• Solutions:• Use volumes; cumbersome with dynamic provisioning
• Package SCC inside OpenJ9 and OpenLiberty Docker images• Potential issues:
• Bloat due to “copy-on-write” mechanism when adding to the cache
• Oversizing needed to allow addition to cache from a higher Docker layer
IBM Runtime Technologies28
OpenJ9 Shared classes cache : usability in containers
Shared Class Cache usability in containers
• Problem: Cache goes away when container is destroyed
• Solutions:• Use volumes; cumbersome with dynamic provisioning
• Package SCC inside OpenJ9 and Open Liberty Docker images• Potential issues:
• Bloat due to “copy-on-write” mechanism when adding to the cache
• Oversizing needed to allow addition to cache from a higher Docker layer
IBM Runtime Technologies29
JVM SCCOpenJ9 image
OpenJ9 Shared classes cache : usability in containers
Shared Class Cache usability in containers
• Problem: Cache goes away when container is destroyed
• Solutions:• Use volumes; cumbersome with dynamic provisioning
• Package SCC inside OpenJ9 and OpenLiberty Docker images• Potential issues:
• Bloat due to “copy-on-write” mechanism when adding to the cache
• Oversizing needed to allow addition to cache from a higher Docker layer
IBM Runtime Technologies30
JVM SCC
JVM SCC Liberty
OpenJ9 image
Liberty image
OpenJ9 Shared classes cache : usability in containers
Shared Class Cache usability in containers
• Problem: Cache goes away when container is destroyed
• Solutions:• Use volumes; cumbersome with dynamic provisioning
• Package SCC inside OpenJ9 and OpenLiberty Docker images• Potential issues:
• Bloat due to “copy-on-write” mechanism when adding to the cache
• Oversizing needed to allow addition to cache from a higher Docker layer
IBM Runtime Technologies31
JVM SCC
JVM SCC SCCLiberty
OpenJ9 image
Liberty imageCOW
OpenJ9 Shared classes cache : usability in containers
Shared Class Cache usability in containers
• Problem: Cache goes away when container is destroyed
• Solutions:• Use volumes; cumbersome with dynamic provisioning
• Package SCC inside OpenJ9 and OpenLiberty Docker images• Potential issues:
• Bloat due to “copy-on-write” mechanism when adding to the cache
• Oversizing needed to allow addition to cache from a higher Docker layer
IBM Runtime Technologies32
JVM SCC
JVM SCC
SCC
SCCLiberty
JVM Liberty SCC User App
OpenJ9 image
Liberty image
App image
OpenJ9 Shared classes cache : usability in containers
Shared Class Cache usability in containers
• Problem: Cache goes away when container is destroyed
• Solutions:• Use volumes; cumbersome with dynamic provisioning
• Package SCC inside OpenJ9 and OpenLiberty Docker images• Potential issues:
• Bloat due to “copy-on-write” mechanism when adding to the cache
• Oversizing needed to allow addition to cache from a higher Docker layer
IBM Runtime Technologies33
JVM SCC
JVM SCC
SCC
SCCLiberty
JVM Liberty SCC User App SCC
OpenJ9 image
Liberty image
App image
COW
OpenJ9 Shared classes cache : usability in containers
Multi-layered shared class cache
• Similar to Docker layers
• Each Docker layer can add to SCC packaged at that layer independently of lower layers
• Each SCC layer can be trimmed-to-fit because upper layers won’t add to it
• Significant reduction in disk footprint of Docker images that package a SCC
• Faster pushing/pulling of Docker images to/from a Docker registry
IBM Runtime Technologies34
84
817
6
84
1821
8
84
26
25
10
0
50
100
150
200
250
On Disk Over Net On Disk Over Net
Single-Layer SCC Multi-Layer SCC
Imag
e si
ze (
MiB
)
Single- vs Multi-Layer SCC
App Layer SCC
Liberty Layer SCC
Java Layer SCC
Multi-layered shared classes cache
JIT server : Offload compilations to remote server
35
JIT
JVM
JITServer
JIT
JVM
JIT
JVM Orchestratorload balancing, affinity,
scaling, reliability
JITServer
• Treat JIT compilation like any other Cloud service
Transient JIT resource usage is eliminated at
client side
• Reduced native-OOM/crash likelihood
• Easier provisioning task
• Better QoS
• Higher application density
36
JIT server : Offload compilations to remote server
JITServer Performance – Daytrader 7 throughput
Throughput benefits grow in constrained environments
0
200
400
600
800
1000
1200
1400
0 100 200 300 400 500 600
Thro
ugh
pu
t (p
ages
/sec
)
Time (sec)
--cpus=1, -m=300m
JITServer OpenJ9
0
200
400
600
800
1000
1200
1400
0 100 200 300 400 500 600
Thro
ugh
pu
t (p
ages
/sec
)
Time (sec)
--cpus=1, -m=256m
JITServer OpenJ9
0
200
400
600
800
1000
1200
1400
0 100 200 300 400 500 600
Thro
ugh
pu
t (p
ages
/sec
)
Time (sec)
--cpus=1, -m=200m
JITServer OpenJ9
Smaller memory limit
JIT server performance : Open Liberty Daytrader7 throughput
Agenda
38
General optimizations
SPECjEnterprise® 2018 Web Profile benchmark
SPECjEnterprise® 2018 Web Profile benchmark
The SPECjEnterprise® 2018 Web Profile benchmark is a new SPEC benchmark that measures full-system performance of Java EE 7 Web Profile application servers and their supporting infrastructure such as JVM, Database, CPU, disk and servers.
The workload consists of an end-to-end web based automotive insurance brokerage application processing web requests.
39
IBM WebSphere Liberty publications on SPECjEnterprise® 2018 Web Profile
As per SPEC published data as of 05/10/2019 : https://www.spec.org/jEnterprise2018web/results/jEnterprise2018web.html. Results are from
www.spec.org as of 05/10/2019. IBM results are 26,672 SPECjEnterprise® 2018 WebjOPS, 28,860 SPECjEnterprise® 2018 WebjOPS, 34,515SPECjEnterprise® 2018 WebjOPS published on 09/27/2018, 10/11/2018 and 05/10/2019 respectively. SPEC and SPECjEnterprise are
registered trademarks of the Standard Performance Evaluation Corporation.
0
200
400
600
800
1000
1200
1400
1600
Liberty 18.0.0.3 w/ IBM Java8 SR5 FP21on Intel Skylake (Sep 2018)
Liberty 18.0.0.3 w/ IBM Java8 SR5 FP21on Intel Skylake (Oct 2018)
Liberty 19.0.0.3 w/ IBM Java8 SR5 FP30on Power9 (May 2019)
Benchmark performance (SPECjEnterprise® 2018 WebjOPS per-core) with WebSphere Liberty and IBM SDK
558 601
1438
IBM WebSphere Liberty publications on SPECjEnterprise® 2018 Web Profile
POWER9: #1 SPECjEnterprise® 2018 Web Profile result1 in the industryPower S924 with 24 cores outperforms a 48-core Intel Xeon SP system
1. Comparison based on published results at www.spec.org as of 9 May 2019. SPEC® and SPECjEnterprise® are registered trademarks of the Standard Performance Evaluation Corporation.
For more information about the SPECjEnterprise® 2018 Web Profile benchmark, see https://www.spec.org/jEnterprise2018web/
2. Cisco UCS 240 M5 result: https://spec.org/jEnterprise2018web/results/res2018q4/jEnterprise2018web-20180926-00003.html
3. IBM Power S924 result: https://spec.org/jEnterprise2018web/results/res2019q2/jEnterprise2018web-20190424-00005.html
4. Based on application server cores – Cisco UCS C240 M5: 28,860 WebjOPS and 48 cores; IBM Power S924: 34,515 WebjOPS and 24 cores
Cisco
UCS C240 M52
IBM
Power S9243
Application
Server
Cisco UCS C240 M5
2xIntel Xeon Platinum 8168
(2.7GHz, 24-core)
Total: 48-cores, 256GB
IBM Power S924
2xPOWER9 (2.9GHz, 12-core)
Total: 24-core, 256GB
Database Server
Cisco UCS C240 M5
2xIntel Xeon Platinum 8168
(2.7GHz, 24-core)
Total: 48-cores, 1TB
IBM Power S924
2xPOWER9 (3.3GHz, 8-core)
Total: 16-core, 256GB
WebjOPS 28,860 34,515
WebjOPS / core4 601 1438
• POWER9 delivers #1 performance result on Enterprise
Java Benchmark using WebSphere Liberty
– 19% performance advantage at the system
level versus previous best publish
With 1/2 the Application Server cores
With 1/3 the Database Server cores
– 2.4X better per core performance4
• SPECjEnterprise® 2018 Web Profile1
– Consists of an end-to-end web based
automotive insurance brokerage application
processing web requests
– Benchmark measures full-system performance
of Java EE 7 Web Profile application servers
and associated database servers
Highlights of IBM WebSphere Liberty SPEC benchmark publication
First ever published SPEC result for WebSphere Liberty
Demonstrates world class WebSphere Liberty run time throughput performance in addition to fast startup time and low memory footprint
WebSphere Liberty provides a high performing secure application server to protect customer data
This benchmark result was achieved by using a game changing new JCE provider from IBM called IBMJCEPlus which provides blazing fast security performance
Latest version of WebSphere Liberty with Java EE 8 features enabled
WebSphere Liberty was the first application server certified as Java EE 8 compatible
Java EE 8 feature implementations (even with existing Java EE 7 applications) have been tuned well for performance
WebSphere Liberty built for modern applications
The SPECjEnterprise® 2018 Web Profile benchmark is based on a microservices architecture
JAX-RS and CDI show excellent performance in Websphere Liberty
42
EE7 Throughput (Tradelite7) with SSL enabled
• TLSv1.2 with https.cipherSuites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256• IBM JDK 8 SR5 FP10 introduced IBMJCEPlus provider
• Significant improvement in SSL overhead with IBMJCEPlus provider (only 5-10% over no SSL)• Add IBMJCEPlus as the preferred provider in security properties file to start using with IBM JDK
•SUT: LinTel – SLES 11.4, Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz, 4 physical cores, 64GB RAM.
•IBM JDK 8 SR5 FP30 is used for WebSphere Liberty
100%
89%
51%
0%
20%
40%
60%
80%
100%
120%
Per
cen
tage
of
19
.0.0
.1R
eq/s
ec
WebSphere Liberty SSL overhead comparison on Intel(higher is better)
4343
44
System Configuration:
•SUT: LinTel – SLES 11.4, Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz, 4 physical cores, 64GB RAM.
•Oracle JDK 8 u191 is used for non-IBM app servers & IBM JDK 8 SR5 FP30 is used for WebSphere Liberty 19.0.0.1 and IBM JDK SR5 FP17 for 18.0.0.2
EE8 Throughput (Daytrader8)
• WAS 19.0.0.1 Liberty Server EE8 throughput is at least 39% better than other Lightweight App Servers
100% 100%96%
61% 59%
24%
0%
20%
40%
60%
80%
100%
120%
WebSphere Liberty 19.0.0.1 Open Liberty 19.0.0.1 WebSphere Liberty 18.0.0.2 Wildfly 15 Jboss EAP 7.2 Glassfish 5.0.1
Pe
rce
nta
ge o
f 1
9.0
.0.1
Re
q/s
ec
WebSphere Liberty ee8-Daytrader8 comparison(higher is better)
45
System Configuration:
•SUT: LinTel – SLES 11.4, Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz, 4 physical cores, 64GB RAM.
•Oracle JDK 8 u191 is used for non-IBM app servers & IBM JDK 8 SR5 FP30 is used for WebSphere Liberty 19.0.0.1 and IBM JDK SR5 FP17 for 18.0.0.1. IBM JDK 8
SR5 FP25 for WAS Traditional 9.0.0.10
• WAS 19.0.0.1 Liberty Server EE7 throughput is at least 36% better than other Lightweight App Servers
EE7 Throughput (Daytrader7)
100% 100% 98% 96%
64% 65%
54%
0%
20%
40%
60%
80%
100%
120%
WebSphere Liberty19.0.0.1
Open Liberty 19.0.0.1 WebSphere Liberty18.0.0.1
WAS Traditional9.0.0.10
Wildfly 15 JBoss EAP 7.2 Glassfish 5
Pe
rce
nta
ge o
f 1
9.0
.0.1
Re
q/s
ec
WebSphere Liberty ee7-Daytrader7 comparison(higher is better)
IBM z15 – Purpose Built for Mission Critical Java Applications
Transparent acceleration of Java’s Zip APIs with on-chip Integrated Accelerator for z Enterprise Data Compression
• Up to 17x total compression throughput capacity of a IBM z14
• Up to 15x faster in-memory compression over zEDC Express Adapter on IBM z14
• Over 100x faster compression over compared x86 server
Unparalleled performance of Java EE workloads on WebSphere / Liberty
• Up to 23% better throughput over z14
• Up to 2.6x better throughput over compared x86 server
Exploitation of 30+ new z15 instructions to accelerate TimSort, String, Data Access (DAA) and cryptographic APIs
* Performance results shown were obtained in controlled environments. Results may vary. See approved claims for
details and disclaimers.
• 5.2 GHz 12-core Processor Chip
• Up to 190configurable cores
• 920 MB L4 cache
Average +20% throughput improvement with IBM SDK for Java 8 SR6 on IBM z15
Improved Pause-less Garbage Collection (GC) for response-time sensitive applications over default GC on z14
• Up to 3x better throughput for constrained Service Level Agreements
• Up to 24x better average GC pause-times
Automated JVM adaptation for changing system resource and capacity, optimized for System Recovery Boost (zOS) and application containers
• Up to 30% better JVM startup and application ramp up
• Auto-scaling of Garbage Collection and JIT compilation threads
• Optimized memory footprint management during idle states
Java on IBM z15 / September, 2019 / © 2019 IBM Corporation 46
47
Application Serving – Liberty DayTrader 3 - Linux on Z
IBM Liberty 18.0.0.4 with DayTrader 3
IBM SDK for Java 8.0.6.0 on IBM z15 vs IBM SDK for Java 8.0.5.31 on IBM z14
(Controlled measurement environment, results may vary)
IBM z15 + Java 8 SR6 up to 23% better throughput / core over IBM z14 + Java 8 SR5
Java on IBM z15 / September, 2019 / © 2019 IBM Corporation
48
Application Serving – Liberty DayTrader 3 - SSL (Clear Key) – z/OS
IBM Liberty 18.0.0.4 with DayTrader 3 using:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
IBM SDK for Java 8.0.6.0 on IBM z15 vs IBM SDK for Java 8.0.5.31 on IBM z14
(Controlled measurement environment, results may vary)
IBM z15 + Java 8 SR6 up to 15% better throughput / core over IBM z14 + Java 8 SR5.
Java on IBM z15 / September, 2019 / © 2019 IBM Corporation
Summary : Open Liberty and OpenJ9 performance
49
• Java performance is improving continuously• Try to stay up to date with Open Liberty and OpenJ9 releases
• Both products release several times a year
• Broad focus on Java performance• Many improvements across different metrics
• Many improvements across different deployment scenarios and platforms