advances in liberty and java performance

49
Advances in Liberty and Java performance December 10, 2019 Vijay Sundaresan

Upload: others

Post on 05-Oct-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Advances in Liberty and Java performance

Advances in Liberty and Java performance

December 10, 2019

Vijay Sundaresan

Page 2: Advances in Liberty and Java performance

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

Page 3: Advances in Liberty and Java performance

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

Page 4: Advances in Liberty and Java performance

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

Page 5: Advances in Liberty and Java performance

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

Page 6: Advances in Liberty and Java performance

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

Page 7: Advances in Liberty and Java performance

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

Page 8: Advances in Liberty and Java performance

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

Page 9: Advances in Liberty and Java performance

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

Page 10: Advances in Liberty and Java performance

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

Page 11: Advances in Liberty and Java performance

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

Page 12: Advances in Liberty and Java performance

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

Page 13: Advances in Liberty and Java performance

Agenda

13

Cloud optimizations

Page 14: Advances in Liberty and Java performance

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 ==

Page 15: Advances in Liberty and Java performance

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

Page 16: Advances in Liberty and Java performance

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

Page 17: Advances in Liberty and Java performance

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

Page 18: Advances in Liberty and Java performance

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

Page 19: Advances in Liberty and Java performance

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

Page 20: Advances in Liberty and Java performance

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

Page 21: Advances in Liberty and Java performance

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

Page 22: Advances in Liberty and Java performance

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

Page 23: Advances in Liberty and Java performance

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

Page 24: Advances in Liberty and Java performance

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

Page 25: Advances in Liberty and Java performance

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)

Page 26: Advances in Liberty and Java performance

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

Page 27: Advances in Liberty and Java performance

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

Page 28: Advances in Liberty and Java performance

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

Page 29: Advances in Liberty and Java performance

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

Page 30: Advances in Liberty and Java performance

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

Page 31: Advances in Liberty and Java performance

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

Page 32: Advances in Liberty and Java performance

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

Page 33: Advances in Liberty and Java performance

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

Page 34: Advances in Liberty and Java performance

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

Page 35: Advances in Liberty and Java performance

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

Page 36: Advances in Liberty and Java performance

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

Page 37: Advances in Liberty and Java performance

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

Page 38: Advances in Liberty and Java performance

Agenda

38

General optimizations

Page 39: Advances in Liberty and Java performance

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

Page 40: Advances in Liberty and Java performance

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

Page 41: Advances in Liberty and Java performance

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

Page 42: Advances in Liberty and Java performance

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

Page 43: Advances in Liberty and Java performance

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

Page 44: Advances in Liberty and Java performance

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)

Page 45: Advances in Liberty and Java performance

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)

Page 46: Advances in Liberty and Java performance

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

Page 47: Advances in Liberty and Java performance

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

Page 48: Advances in Liberty and Java performance

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

Page 49: Advances in Liberty and Java performance

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