SlideShare a Scribd company logo
Java™ Performance Testing for
Everyone
Shelley Lambert
IBM Runtime Technologies Test Lead
Who Am I?
Various Roles
Developer / Test Lead
Development Manager
Yoga Teacher
tuneupfitness.com/teacher/shelley-lambert
Chief Food Forester
ottawafoodforests.com
nanabushfoodforests.com
The Scope
AdoptOpenJDK
• Projects: Eclipse OMR, Eclipse OpenJ9, AdoptOpenJDK
• Ensuring Free and Verified Java™ for the Community
• 6+ Jenkins servers
• 18+ platforms
• 6+ versions, 4+ implementations
• 7+ test categories -> 100,000’s of tests
• 18x6x4x100000 = ~43 million tests… nightly, around the world!
Where to start with performance?
• The story of Java performance
– No single recipe (Many factors: JVM
implementation, hardware, application design)
– JVMs evolve, performance improves
• JVMs “complex, intricate, subtle”
• Wouldn’t it be great if it were simple?
-XX:goFaster, -XX:useLessResources
The Intersection
• Necessary
– developers need to know if the code they write affects
performance
– currently using diverse set of tools and approaches, home-
made scripts, duplication, lost learning opportunities
• Impossible
– measuring performance often stated as “too hard” to do
Necessary Impossible
Defining the “Impossible”
• What is performance testing?
– Often called ”Experimental science”
– “Testing if a system accomplishes its designated functions
within given constraints regarding processing time and
throughput rate.”*
• Good performance? Speed, resources or a blend
– Modern language runtimes care about many different
metrics
• Throughput, Startup Time, Ramp-up Time, Compile Time
• Footprint
– Average Resident Set Size
– Compilation Memory Consumption
– Peak Resident Set Size
* Witteveen, Albert. Performance testing - a practical guide (Kindle Locations 176-177).
What to measure
Metric name What to
measure?
Constraints Inputs to vary
Throughput # of transactions time
Latency Time for single
transaction
# of transactions Workload (increases)
Capacity # of
simultaneous
transactions
Throughput or latency Parallel load on the
system
Utilization Use of resources workload
Efficiency Throughput/utili
zation
Scalability Throughput or
capacity
Resources (added)
Degradation Latency or
throughput
utilization Workload (increases)
Explicit or implicit ‘inputs’ to normalize: HW, OS, system setup
Basic Steps
• Set a goal – which metric(s) to improve
• Measure – but how? tools?
• Adjust – apply your experiments
• Measure again – how exhaustive?
• Verify goal – did the metrics improve? enough?
AdoptOpenJDK Testing
github.com/AdoptOpenJDK/openjdk-tests
• The wildly different ‘fruit’, how to make them
easily consumable
“Consolidate and Curate”
functional openjdk perfjckexternalsystem
testkitgen
testNG,
cmdlineteste
r
STF junit &
others
javatest
Assorted
benchmarks
jtreg
Performance Benchmarks
(Large-scale and Microbenchmarks at AdoptOpenJDK)
bbenchacme-air libertydt jmhidlespark odm
perf
Assorted benchmarks
… … … …
Large scale
Microbenchmarks
Introducing
github.com/AdoptOpenJDK/openjdk-test-tools
• PerfNext - configure, tune and launch performance
benchmarks.
• Test Results Summary Service (TRSS) - summarize and
visualize different test results including perf results, push
different sets of test results to a DB, search test and
compare results across different platforms, report on
differences between jobs
• Future services – result analytics, test generation, core
analytics, bug prediction
Java Performance Testing for Everyone - Shelley Lambert
Track the progress of
benchmark runs and
verify their output
TRSS – Performance Comparison
TRSS – Performance Comparison
TRSS – Regression Analysis
1 month
All data
7 days
BumbleBench
“Microbenchmarks Simplified”
github.com/AdoptOpenJDK/bumblebench
• Writing a good microbench with an optimizing
JIT running your code is hard
– are you measuring what you think you are
measuring?
• BumbleBench is a Java framework that
provide a hook point to implement the
benchmark payload
• Framework provides the outer timing loop,
scoring infrastructure, etc.
Conclusion
• Perf is hard (not impossible)
– High resource requirements for full-scale testing
– Microbenchmarks difficult to write
– Data is noisy and subject to interpretation
• Building tools to make perf easier
– TRSS / PerfNext / BumbleBench
• AdoptOpenJDK git repos: openjdk-tests, openjdk-test-
tools, bumblebench
• Coming soon -> trss.adoptopenjdk.net
• Open Collaboration leads to greater Innovation
– “Innovation is creativity with a job to do.” – John Emmerling
AdoptOpenJD
K
adoptopenjdk.net AdoptOpenJDK/openjdk-tests @adoptopenjdk
eclipse.org/openj9 eclipse/openj9 @openj9
eclipse.org/omr eclipse.org/omr @eclipseomr
Upcoming Talks:
Performance Testing for Everyone
AdoptOpenJDK: Ensuring Free Java for the Community
Fuzzy Plans and Other Test Integrations
Shaking Sticks and Testing OpenJDK Implementations
Connect & Collaborate!
Website Github Twitter
8thdaytesting.com smlambert @ShelleyMLambert

More Related Content

PPTX
Open source load testing
PPTX
Tuenti Release Workflow v1.1
PPT
Getting Started with Apache Jmeter
PDF
Learning on Deep Learning
PPT
Eclipse UI automation
PPTX
DealingwithVerificationDataOverload
PPTX
Selenium Automation at Incapsula
PDF
Adding Performance Testing to a Software Development Project
Open source load testing
Tuenti Release Workflow v1.1
Getting Started with Apache Jmeter
Learning on Deep Learning
Eclipse UI automation
DealingwithVerificationDataOverload
Selenium Automation at Incapsula
Adding Performance Testing to a Software Development Project

Similar to Java Performance Testing for Everyone - Shelley Lambert (20)

PPT
Automating testing with open source tools (1)
PDF
Performance Testing Java Applications
PDF
JMeter - Performance testing your webapp
PDF
Sledgehammer to Fine Brush for QA
PDF
AQA_You are_Soaking_In_It_DevNexus2020
PPTX
Performance testing using jmeter
PPTX
Quality Coding: What’s New with Visual Studio 2012
PPTX
Quality Coding: What's New with Visual Studio 2012
PPTX
Performance testing in agile
PPTX
Quality Coding with Visual Studio 2012
PDF
Introduction to java (revised)
ODP
AD208 - End to End Quality Processes for Top Notch XPages Apps
PDF
Continuous Integration, Deploy, Test From Beginning To End 2014
PPTX
Using Jenkins and Jmeter to build a scalable Load Testing solution
PDF
How to assess & hire Java developers accurately?
PDF
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
DOC
ApoorvaTiwari
PDF
Performance testing presentation
PPTX
Leveraging HP Performance Center
PDF
Use Jenkins For Continuous Load Testing And Mobile Test Automation
Automating testing with open source tools (1)
Performance Testing Java Applications
JMeter - Performance testing your webapp
Sledgehammer to Fine Brush for QA
AQA_You are_Soaking_In_It_DevNexus2020
Performance testing using jmeter
Quality Coding: What’s New with Visual Studio 2012
Quality Coding: What's New with Visual Studio 2012
Performance testing in agile
Quality Coding with Visual Studio 2012
Introduction to java (revised)
AD208 - End to End Quality Processes for Top Notch XPages Apps
Continuous Integration, Deploy, Test From Beginning To End 2014
Using Jenkins and Jmeter to build a scalable Load Testing solution
How to assess & hire Java developers accurately?
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
ApoorvaTiwari
Performance testing presentation
Leveraging HP Performance Center
Use Jenkins For Continuous Load Testing And Mobile Test Automation
Ad

More from Eclipse Day India (20)

PDF
Eclipse IDE Tips and Tricks - Lakshmi Priya Shanmugam
PDF
Pattern Matching in Java - Srikanth Sankaran
PDF
Machine Learning for Java Developers - Nasser Ebrahim
PPTX
Scaling Eclipse on HiDPI Monitors - Niraj Modi
PPTX
Please Behave Yourself: BDD and automating Eclipse RCP applications using JBe...
PDF
Supporting Java™ 9 in Eclipse - A critical perspective - Stephan Herrmann
PDF
Eclipse Day India 2015 - Rest with Java (jax rs) and jersey
PDF
Eclipse Day India 2015 - Java bytecode analysis and JIT
PPTX
Eclipse Day India 2015 - Java 8 Overview
ODP
Eclipse Day India 2015 - Java 9
PDF
Eclipse Day India 2015 - Keynote - Stephan Herrmann
PDF
Eclipse Day India 2015 - Eclipse RCP testing using Jubula based automation
PDF
Eclipse Day India 2015 - Oomph
PDF
Eclipse Day India 2015 - Keynote (Mike Milinkovich)
PDF
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
PDF
IDS and Bluemix
PPT
SWT - Technical Deep Dive
PPTX
PDE builds or Maven
PPT
Orion - IDE on the cloud
Eclipse IDE Tips and Tricks - Lakshmi Priya Shanmugam
Pattern Matching in Java - Srikanth Sankaran
Machine Learning for Java Developers - Nasser Ebrahim
Scaling Eclipse on HiDPI Monitors - Niraj Modi
Please Behave Yourself: BDD and automating Eclipse RCP applications using JBe...
Supporting Java™ 9 in Eclipse - A critical perspective - Stephan Herrmann
Eclipse Day India 2015 - Rest with Java (jax rs) and jersey
Eclipse Day India 2015 - Java bytecode analysis and JIT
Eclipse Day India 2015 - Java 8 Overview
Eclipse Day India 2015 - Java 9
Eclipse Day India 2015 - Keynote - Stephan Herrmann
Eclipse Day India 2015 - Eclipse RCP testing using Jubula based automation
Eclipse Day India 2015 - Oomph
Eclipse Day India 2015 - Keynote (Mike Milinkovich)
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
IDS and Bluemix
SWT - Technical Deep Dive
PDE builds or Maven
Orion - IDE on the cloud
Ad

Recently uploaded (20)

PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Electronic commerce courselecture one. Pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Approach and Philosophy of On baking technology
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
cuic standard and advanced reporting.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Empathic Computing: Creating Shared Understanding
Electronic commerce courselecture one. Pdf
Big Data Technologies - Introduction.pptx
Approach and Philosophy of On baking technology
MYSQL Presentation for SQL database connectivity
Unlocking AI with Model Context Protocol (MCP)
Advanced methodologies resolving dimensionality complications for autism neur...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
cuic standard and advanced reporting.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Understanding_Digital_Forensics_Presentation.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Digital-Transformation-Roadmap-for-Companies.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
MIND Revenue Release Quarter 2 2025 Press Release
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Agricultural_Statistics_at_a_Glance_2022_0.pdf

Java Performance Testing for Everyone - Shelley Lambert

  • 1. Java™ Performance Testing for Everyone Shelley Lambert IBM Runtime Technologies Test Lead
  • 2. Who Am I? Various Roles Developer / Test Lead Development Manager Yoga Teacher tuneupfitness.com/teacher/shelley-lambert Chief Food Forester ottawafoodforests.com nanabushfoodforests.com
  • 3. The Scope AdoptOpenJDK • Projects: Eclipse OMR, Eclipse OpenJ9, AdoptOpenJDK • Ensuring Free and Verified Java™ for the Community • 6+ Jenkins servers • 18+ platforms • 6+ versions, 4+ implementations • 7+ test categories -> 100,000’s of tests • 18x6x4x100000 = ~43 million tests… nightly, around the world!
  • 4. Where to start with performance? • The story of Java performance – No single recipe (Many factors: JVM implementation, hardware, application design) – JVMs evolve, performance improves • JVMs “complex, intricate, subtle” • Wouldn’t it be great if it were simple? -XX:goFaster, -XX:useLessResources
  • 5. The Intersection • Necessary – developers need to know if the code they write affects performance – currently using diverse set of tools and approaches, home- made scripts, duplication, lost learning opportunities • Impossible – measuring performance often stated as “too hard” to do Necessary Impossible
  • 6. Defining the “Impossible” • What is performance testing? – Often called ”Experimental science” – “Testing if a system accomplishes its designated functions within given constraints regarding processing time and throughput rate.”* • Good performance? Speed, resources or a blend – Modern language runtimes care about many different metrics • Throughput, Startup Time, Ramp-up Time, Compile Time • Footprint – Average Resident Set Size – Compilation Memory Consumption – Peak Resident Set Size * Witteveen, Albert. Performance testing - a practical guide (Kindle Locations 176-177).
  • 7. What to measure Metric name What to measure? Constraints Inputs to vary Throughput # of transactions time Latency Time for single transaction # of transactions Workload (increases) Capacity # of simultaneous transactions Throughput or latency Parallel load on the system Utilization Use of resources workload Efficiency Throughput/utili zation Scalability Throughput or capacity Resources (added) Degradation Latency or throughput utilization Workload (increases) Explicit or implicit ‘inputs’ to normalize: HW, OS, system setup
  • 8. Basic Steps • Set a goal – which metric(s) to improve • Measure – but how? tools? • Adjust – apply your experiments • Measure again – how exhaustive? • Verify goal – did the metrics improve? enough?
  • 9. AdoptOpenJDK Testing github.com/AdoptOpenJDK/openjdk-tests • The wildly different ‘fruit’, how to make them easily consumable “Consolidate and Curate” functional openjdk perfjckexternalsystem testkitgen testNG, cmdlineteste r STF junit & others javatest Assorted benchmarks jtreg
  • 10. Performance Benchmarks (Large-scale and Microbenchmarks at AdoptOpenJDK) bbenchacme-air libertydt jmhidlespark odm perf Assorted benchmarks … … … … Large scale Microbenchmarks
  • 11. Introducing github.com/AdoptOpenJDK/openjdk-test-tools • PerfNext - configure, tune and launch performance benchmarks. • Test Results Summary Service (TRSS) - summarize and visualize different test results including perf results, push different sets of test results to a DB, search test and compare results across different platforms, report on differences between jobs • Future services – result analytics, test generation, core analytics, bug prediction
  • 13. Track the progress of benchmark runs and verify their output
  • 14. TRSS – Performance Comparison
  • 15. TRSS – Performance Comparison
  • 16. TRSS – Regression Analysis 1 month All data 7 days
  • 17. BumbleBench “Microbenchmarks Simplified” github.com/AdoptOpenJDK/bumblebench • Writing a good microbench with an optimizing JIT running your code is hard – are you measuring what you think you are measuring? • BumbleBench is a Java framework that provide a hook point to implement the benchmark payload • Framework provides the outer timing loop, scoring infrastructure, etc.
  • 18. Conclusion • Perf is hard (not impossible) – High resource requirements for full-scale testing – Microbenchmarks difficult to write – Data is noisy and subject to interpretation • Building tools to make perf easier – TRSS / PerfNext / BumbleBench • AdoptOpenJDK git repos: openjdk-tests, openjdk-test- tools, bumblebench • Coming soon -> trss.adoptopenjdk.net • Open Collaboration leads to greater Innovation – “Innovation is creativity with a job to do.” – John Emmerling
  • 19. AdoptOpenJD K adoptopenjdk.net AdoptOpenJDK/openjdk-tests @adoptopenjdk eclipse.org/openj9 eclipse/openj9 @openj9 eclipse.org/omr eclipse.org/omr @eclipseomr Upcoming Talks: Performance Testing for Everyone AdoptOpenJDK: Ensuring Free Java for the Community Fuzzy Plans and Other Test Integrations Shaking Sticks and Testing OpenJDK Implementations Connect & Collaborate! Website Github Twitter 8thdaytesting.com smlambert @ShelleyMLambert

Editor's Notes

  • #2: Performance Testing for Everyone Who is everyone? People like me… people who don’t have time to become performance analysis experts, but want some assurances
  • #5: All the excuses for why something is not possible. History: the old joke in the early days of Java… “how do I write code that is faster?” … use a different language In our modern era, of sophisticated GC and JIT code… it’s a different story, you can still write Java is a funny language, god complex, do everything for everyone… Write once run everywhere and now we will perform magic under the covers (with GC/JIT code) that will take your average code and make it sing. How can we more easily run performance benchmarks against Java SDKs and analyze and compare results? What information is coming out of some common open-source benchmarks and why might it be interesting? How can you incorporate performance tests into your continuous delivery pipeline? This talk addresses all of these questions and more as it surveys the performance testing story at AdoptOpenJDK. In this presentation, the common user story of determining whether a code change caused a performance regression guides us through the delivery pipeline at AdoptOpenJDK, but also introduces how you can leverage the automation from that open-source projects for your own testing requirements.
  • #6: How can we more easily run performance benchmarks against Java SDKs and analyze and compare results? What information is coming out of some common open-source benchmarks and why might it be interesting? How can you incorporate performance tests into your continuous delivery pipeline? This talk addresses all of these questions and more as it surveys the performance testing story at AdoptOpenJDK. In this presentation, the common user story of determining whether a code change caused a performance regression guides us through the delivery pipeline at AdoptOpenJDK, but also introduces how you can leverage the automation from that open-source projects for your own testing requirements.
  • #7: Actual Metrics to Measure? Throughput, latency, capacity, utilization, efficiency, scalability, degradation Performance Testing for Everyone: Who is everyone? People like me… people who don’t have time to become performance analysis experts, but want some assurances
  • #8: Throughput = transactions in given period of time Latency = time to process a single transaction as workload increases Capacity = how much parallelism in a system (related to throughput and latency) Utilization = efficient use of system resources Efficiency = throughput/utilization (cost accounting) Scalability = throughput or capacity as resources are added (target: perfect linear scaling) Degradation = how a throughput or latency are affected (system degrades) as workload increases Luckily, since we have stated we want to start somewhere and keep it simple, we can choose to focus on 2 important metrics (throughput and utilization)
  • #9: Metrics 1 of 2 to start with… Toolkit is equipped with benchmarks
  • #10: Talk about load/stress testing (from system tests) as a form of performance testing If a system accomplishes its designated functions within given constraints… Brief interlude to set the stage…
  • #11: (Pattern is same) Hone in on performance testing (same pattern… the wildly different benchmarks, how to make them easily consumable) Large-scale open source benchmarks DayTrader3 / DayTrader7 (JavaEE stock trading) app server – flat profile, thousands of compiles Apache Spark HiBench (Big Data Analytics) Scala-based framework – more focused profiles Microbenchmarks Essence of past performance bugs API specific tests – array copy / object allocate / etc
  • #20: Thanks for your attention! Let’s stay in touch!