SlideShare a Scribd company logo
1 of 29
Download to read offline
Understanding Application
Hiccups
and what you can do about them
An introduction to the Open Source jHiccup tool
Gil Tene, CTO & co-Founder, Azul Systems
©2011 Azul Systems, Inc.
About me: Gil Tene
co-founder, CTO
@Azul Systems
Have been working on
“think different” GC
approaches since 2002
Created Pauseless & C4
core GC algorithms
(Tene, Wolf)

A Long history building
Virtual & Physical
Machines, Operating
Systems, Enterprise
apps, etc...
©2011 Azul Systems, Inc.	

	

	

	

	

* working on real-world trash compaction issues, circa 2004
About Azul
Vega

We make scalable Virtual
Machines
Have built “whatever it takes
to get job done” since 2002
3 generations of custom SMP
Multi-core HW (Vega)
Now Pure software for
commodity x86 (Zing)

C4

“Industry firsts” in Garbage
collection, elastic memory,
Java virtualization, memory
scale
©2011 Azul Systems, Inc.
A classic look at response
time behavior
Key Assumption: Response time is a function of load
Average?
Max?
Median?
90%?
99.9%

source: IBM CICS server docuementation, “understanding response times”
©2011 Azul Systems, Inc.
Common fallacies
Computers run application code continuously
CPUs stop processing application code for all sorts of reasons
e.g: Interrupts. Scheduling of other work, swapping, etc.
Modern system architectures add more: Power management,
Virtualization (cross-image context switching, physical VM motion),
Garbage Collection, etc.

Response time can be measured as work units/time.
Response time exhibits a normal distribution
Leading to attempts to represent with average + std. deviation

©2011 Azul Systems, Inc.
Interpreting Results

Response time over time

From this graph it is possible to identify peaks in the response time over a period of time. Helps to
identify issues when server is continuously loaded for long duration of time.

Response Time Graph (per Transaction)
Response Time versus Elapsed Time report indicates the average response time of the transactions
over the elapsed time of the load test as shown.

When we measure behavior over time, we often see:
“Hiccups”

source: ZOHO QEngine White Paper: performance testing report analysis
©2011 Azul Systems, Inc.
Application Hiccups
Where do they come from?
Usually a factor of outside of the individual transaction work
E.g: Queueing, accumulated work, platform inconsistency

Do they matter?
That depends. What are your end-user’s expectations?
Hiccups often dominate response time behavior

How can/should we measure them?
Average? Max? 99.9%? Mean with Std. deviation?

Hiccup magnitude is often not a function of load
©2011 Azul Systems, Inc.
What happened here?
Hiccups&by&Time&Interval&

“Hiccups”

Max"per"Interval"

99%"

99.90%"

99.99%"

Max"

Hiccup&Dura*on&(msec)&

9000"
8000"
7000"
6000"
5000"
4000"
3000"
2000"
1000"
0"
0"

20"

40"

60"

80"

100"

120"

140"

160"

180"

&Elapsed&Time&(sec)&
Source: Gil running an idle program and suspending it five times in the middle
©2011 Azul Systems, Inc.
Pitfall: Calulating %’iles “naïvely”
Common Example:
build/buy simple load tester to measure throughput
issue requests one by one at a certain rate
measure and log response time for each request
results log used to produce histograms, percentiles, etc.

So what’s wrong with that?
works well only when all responses fit within in rate interval
technique includes “automatic backoff” and coordination
But requirements interested in random, uncoordinated requests

Bad how bad can this get, really?
©2011 Azul Systems, Inc.
Example of naïve %’ile
System easily handles
100 requests/sec
Responds to each
in 1msec

System Stalled
for 100 Sec

How would you characterize this system?
10,000 @ 1msec

Naïve results:

1 @ 100 second

1 msec

Elapsed Time

Naïve characterization: 99.99% below 1 sec !!!
Proper measurement
System easily handles
100 requests/sec

System Stalled
for 100 Sec

Responds to each
in 1msec

10,000 results
@ 1 msec each

10,000 results
Varying linearly
from 100 sec
to 10 msec

Elapsed Time

Proper characterization: 50% below 1 second
jHiccup
A tool for capturing and displaying platform hiccups
Records any observed non-continuity of the underlying platform
plots results in simple, consistent format

Simple, non-intrusive
As simple as adding the word “jHiccup” to your java launch line
% jHiccup java myflags myApp
Adds a background thread that samples time @ 1000/sec

Open Source
released to the public domain, creative commons CC0
©2011 Azul Systems, Inc.
what jHiccup measures
jHiccup measures the platform, not the application
Experiences whatever delays application threads would see
Highlights inconsistency in platform execution of “nothing”
No attempt to identify cause (e.g. scheduling, GC, swapping, etc.)

An application cannot behave better than it’s platform
If the platform stalls, the application stalled as well.
jHiccup provides a lower bound for “best application behavior”

Useful control measurements
Comparing jHiccup results for an idle application running on the
same platform, at the same time, narrows down behavior to
process-specific artifacts (-c option)
©2011 Azul Systems, Inc.
The anatomy of Hiccup Charts

©2011 Azul Systems, Inc.
Telco App Example
Max Time per

Hiccups&by&Time&Interval&

interval

Max"per"Interval"

99%"

99.90%"

99.99%"

Max"

Hiccup&Dura*on&(msec)&

140"
120"
100"
80"
60"
40"
20"
0"
0"

500"

1000"

1500"

2000"

2500"

&Elapsed&Time&(sec)&

Optional SLA

Hiccups&by&Percen*le&Distribu*on&

plotting

Hiccup

Hiccup&Dura*on&(msec)&

140"
120"

duration at

100"

percentile

80"
60"

levels

40"
20"
0"

0%"

90%"

99%"

&
99.9%"

&
Percen*le&

Hiccups"by"Percen?le"

©2011 Azul Systems, Inc.	

	

	

	

	

	

99.99%"

SLA"

99.999%"

99.9999%"
Hiccups&by&Time&Interval&
Max"per"Interval"

Hiccup&Dura*on&(msec)&

1200"

99%"

99.90%"

99.99%"

Max"

1000"
800"
600"
400"
200"
0"
0"

200"

400"

600"

800"

1000"

1200"

1400"

&Elapsed&Time&(sec)&

Hiccups&by&Percen*le&Distribu*on&
Hiccup&Dura*on&(msec)&

1200"
1000"

600"
400"
200"
0"

©2011 Azul Systems, Inc.	

	

Max=967.68&

800"

	

0%"

90%"

	

99%"

	

	

&
99.9%"

&
Percen*le&

99.99%"

99.999%"
How jHiccup works
Background thread, measures time to do “nothing”
Sleeps for 1 milliseconds, allocates 1 object, records time gap
Collects detailed “floating point” histogram of observed times
Constant, small memory footprint, virtually no cpu load
No effect on application threads

Outputs two files
A time-based log with 1 line per interval (default 5 sec interval).
A percentile distribution log of accumulated histogram data

Spreadsheet imports files and plots data
A standard, simple chart format
©2011 Azul Systems, Inc.
Some fun with jHiccup
Examples

©2011 Azul Systems, Inc.
Idle App on Quiet System

Idle App on Busy System

Hiccups&by&Time&Interval&
Max"per"Interval"

99%"

99.90%"

Hiccups&by&Time&Interval&

99.99%"

Max"

Max"per"Interval"

20"
15"
10"
5"
0"

Max"

50"
40"
30"
20"
10"

100"

200"

300"

400"

500"

600"

700"

800"

900"

0"

100"

200"

&Elapsed&Time&(sec)&

300"

400"

500"

600"

700"

800"

900"

&Elapsed&Time&(sec)&

Hiccups&by&Percen*le&Distribu*on&

Hiccups&by&Percen*le&Distribu*on&

25"

60"

Max=22.336&

20"

Hiccup&Dura*on&(msec)&

Hiccup&Dura*on&(msec)&

99.99%"

0"
0"

15"
10"
5"
0"

99.90%"

60"

Hiccup&Dura*on&(msec)&

Hiccup&Dura*on&(msec)&

25"

99%"

0%"

90%"

99%"

&
99.9%"

&
Percen*le&

99.99%"

99.999%"

50"

Max=49.728&
40"
30"
20"
10"
0"

0%"

90%"

99%"

&
99.9%"

&
Percen*le&

99.99%"

99.999%"
Idle App on Quiet System

Idle App on Dedicated System

Hiccups&by&Time&Interval&
Max"per"Interval"

99%"

99.90%"

Hiccups&by&Time&Interval&

99.99%"

Max"

Max"per"Interval"

20"
15"
10"
5"
0"

99.99%"

Max"

0.4"
0.35"
0.3"
0.25"
0.2"
0.15"
0.1"
0.05"
0"

0"

100"

200"

300"

400"

500"

600"

700"

800"

900"

0"

100"

200"

&Elapsed&Time&(sec)&

300"

400"

500"

600"

700"

800"

900"

&Elapsed&Time&(sec)&

Hiccups&by&Percen*le&Distribu*on&

Hiccups&by&Percen*le&Distribu*on&

25"

0.45"

Max=22.336&

20"

Hiccup&Dura*on&(msec)&

Hiccup&Dura*on&(msec)&

99.90%"

0.45"

Hiccup&Dura*on&(msec)&

Hiccup&Dura*on&(msec)&

25"

99%"

15"
10"
5"

0.4"

Max=0.411&

0.35"
0.3"
0.25"
0.2"
0.15"
0.1"
0.05"

0"

0%"

90%"

99%"

&
99.9%"

&
Percen*le&

99.99%"

99.999%"

0"

0%"

90%"

99%"

&
99.9%"

&
Percen*le&

99.99%"

99.999%"
A 1GB Java Cache under load
Hiccups&by&Time&Interval&
Max"per"Interval"

99%"

99.90%"

99.99%"

Max"

Hiccup&Dura*on&(msec)&

4000"
3500"
3000"
2500"
2000"
1500"
1000"
500"
0"
0"

500"

1000"

1500"

2000"

&Elapsed&Time&(sec)&

Hiccups&by&Percen*le&Distribu*on&

Hiccup&Dura*on&(msec)&

4000"
3500"

Max=3448.832&

3000"
2500"
2000"
1500"
1000"
500"
0"

0%"

90%"

99%"

&
99.9%"

&
Percen*le&

99.99%"

99.999%"

99.9999%"
Telco App
Hiccups&by&Time&Interval&
Max"per"Interval"

99%"

99.90%"

99.99%"

Max"

Hiccup&Dura*on&(msec)&

1800"
1600"
1400"
1200"
1000"
800"
600"
400"
200"
0"
0"

200"

400"

600"

800"

1000"

1200"

1400"

1600"

1800"

&Elapsed&Time&(sec)&

Hiccups&by&Percen*le&Distribu*on&

Hiccup&Dura*on&(msec)&

1800"
1600"

Max=1665.024&

1400"
1200"
1000"
800"
600"
400"
200"
0"

0%"

90%"

99%"

&
99.9%"

&
Percen*le&

99.99%"

99.999%"
Fun with jHiccup
Obviously, we can use it for
comparison purposes

©2011 Azul Systems, Inc.
Zing 5, 1GB in an 8GB heap

Oracle HotSpot CMS, 1GB in an 8GB heap

Hiccups&by&Time&Interval&
Max"per"Interval"

99%"

99.90%"

Hiccups&by&Time&Interval&

99.99%"

Max"

Max"per"Interval"

20"
15"
10"
5"
0"

Max"

12000"
10000"
8000"
6000"
4000"
2000"

500"

1000"

1500"

2000"

2500"

3000"

3500"

0"

500"

1000"

&Elapsed&Time&(sec)&

1500"

2000"

2500"

3000"

3500"

&Elapsed&Time&(sec)&

Hiccups&by&Percen*le&Distribu*on&

Hiccups&by&Percen*le&Distribu*on&
14000"

20"

Hiccup&Dura*on&(msec)&

25"

Hiccup&Dura*on&(msec)&

99.99%"

0"
0"

Max=20.384&

15"
10"
5"
0"

99.90%"

14000"

Hiccup&Dura*on&(msec)&

Hiccup&Dura*on&(msec)&

25"

99%"

0%"

90%"

99%"

&
99.9%"
99.99%"
&
Percen*le&

99.999%"

99.9999%"

Max=13156.352&

12000"
10000"
8000"
6000"
4000"
2000"
0"

0%"

90%"

99%"

&99.9%"
&
Percen*le&

99.99%"

99.999%"
Zing 5, 1GB in an 8GB heap

Oracle HotSpot CMS, 1GB in an 8GB heap

Hiccups&by&Time&Interval&
Max"per"Interval"

99%"

99.90%"

Hiccups&by&Time&Interval&

99.99%"

Max"

Max"per"Interval"

12000"

99.99%"

Max"

12000"

10000"
8000"
6000"
4000"
2000"
0"

10000"
8000"
6000"
4000"
2000"
0"

0"

500"

1000"

1500"

2000"

2500"

3000"

3500"

0"

500"

1000"

&Elapsed&Time&(sec)&

1500"

2000"

2500"

3000"

3500"

&Elapsed&Time&(sec)&

Hiccups&by&Percen*le&Distribu*on&

Hiccups&by&Percen*le&Distribu*on&
14000"

12000"

12000"

Hiccup&Dura*on&(msec)&

14000"

Hiccup&Dura*on&(msec)&

99.90%"

14000"

Hiccup&Dura*on&(msec)&

Hiccup&Dura*on&(msec)&

14000"

99%"

10000"
8000"
6000"
4000"
2000"
0"

0%"

90%"
Max=20.384&

99%"

&
99.9%"
99.99%"
&
Percen*le&

99.999%"

99.9999%"

Max=13156.352&

10000"
8000"
6000"
4000"
2000"
0"

0%"

90%"

99%"

&99.9%"
&
Percen*le&

99.99%"

99.999%"
Oracle HotSpot CMS, 4GB in a 18GB heap

Oracle HotSpot CMS, 1GB in an 8GB heap

Hiccups&by&Time&Interval&
Max"per"Interval"

99%"

99.90%"

Hiccups&by&Time&Interval&

99.99%"

Max"

Max"per"Interval"

40000"

99.99%"

Max"

12000"

35000"
30000"
25000"
20000"
15000"
10000"
5000"
0"

10000"
8000"
6000"
4000"
2000"
0"

0"

500"

1000"

1500"

2000"

2500"

3000"

3500"

0"

500"

1000"

&Elapsed&Time&(sec)&

2000"

2500"

3000"

3500"

Hiccups&by&Percen*le&Distribu*on&

45000"

14000"

40000"

Hiccup&Dura*on&(msec)&

Max=40173.568&

35000"
30000"
25000"
20000"
15000"
10000"
5000"
0"

1500"

&Elapsed&Time&(sec)&

Hiccups&by&Percen*le&Distribu*on&

Hiccup&Dura*on&(msec)&

99.90%"

14000"

Hiccup&Dura*on&(msec)&

Hiccup&Dura*on&(msec)&

45000"

99%"

0%"

90%"

& 99.9%"
99%"
&
Percen*le&

99.99%"

99.999%"

Max=13156.352&

12000"
10000"
8000"
6000"
4000"
2000"
0"

0%"

90%"

99%"

&99.9%"
&
Percen*le&

99.99%"

99.999%"
Q&A
http:/
/www.azulsystems.com
http:/
/www.azulsystems.com/dev_resources/jhiccup

©2011 Azul Systems, Inc.

More Related Content

Similar to Understanding Application Hiccups - and What You Can Do About Them

From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018Christophe Rochefolle
 
Fine line between performance and security
Fine line between performance and securityFine line between performance and security
Fine line between performance and securityAlmudena Vivanco
 
Multithreading 101
Multithreading 101Multithreading 101
Multithreading 101Tim Penhey
 
Understanding Hardware Transactional Memory
Understanding Hardware Transactional MemoryUnderstanding Hardware Transactional Memory
Understanding Hardware Transactional MemoryC4Media
 
JVM Mechanics: A Peek Under the Hood
JVM Mechanics: A Peek Under the HoodJVM Mechanics: A Peek Under the Hood
JVM Mechanics: A Peek Under the HoodAzul Systems Inc.
 
Week 4 Assignment - Software Development PlanScenario-Your team has be.docx
Week 4 Assignment - Software Development PlanScenario-Your team has be.docxWeek 4 Assignment - Software Development PlanScenario-Your team has be.docx
Week 4 Assignment - Software Development PlanScenario-Your team has be.docxestefana2345678
 
The Java Evolution Mismatch by Gil Tene, CTO at Azul Systems
The Java Evolution Mismatch by Gil Tene, CTO at Azul SystemsThe Java Evolution Mismatch by Gil Tene, CTO at Azul Systems
The Java Evolution Mismatch by Gil Tene, CTO at Azul SystemszuluJDK
 
DevOps in Practice: When does "Practice" Become "Doing"?
DevOps in Practice: When does "Practice" Become "Doing"?DevOps in Practice: When does "Practice" Become "Doing"?
DevOps in Practice: When does "Practice" Become "Doing"?Michael Elder
 
Embracing Failure - AzureDay Rome
Embracing Failure - AzureDay RomeEmbracing Failure - AzureDay Rome
Embracing Failure - AzureDay RomeAlberto Acerbis
 
Chaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionChaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionKeet Sugathadasa
 
Stress Testing at Twitter: a tale of New Year Eves
Stress Testing at Twitter: a tale of New Year EvesStress Testing at Twitter: a tale of New Year Eves
Stress Testing at Twitter: a tale of New Year EvesHerval Freire
 
Fostering Long-Term Test Automation Success
Fostering Long-Term Test Automation SuccessFostering Long-Term Test Automation Success
Fostering Long-Term Test Automation SuccessJosiah Renaudin
 
Infrastructure automation-in-the-cloud-130613045624-phpapp02
Infrastructure automation-in-the-cloud-130613045624-phpapp02Infrastructure automation-in-the-cloud-130613045624-phpapp02
Infrastructure automation-in-the-cloud-130613045624-phpapp02Karim Labidi
 
SRE (service reliability engineer) on big DevOps platform running on the clou...
SRE (service reliability engineer) on big DevOps platform running on the clou...SRE (service reliability engineer) on big DevOps platform running on the clou...
SRE (service reliability engineer) on big DevOps platform running on the clou...DevClub_lv
 
Enabling Java in Latency Sensitive Environments
Enabling Java in Latency Sensitive EnvironmentsEnabling Java in Latency Sensitive Environments
Enabling Java in Latency Sensitive EnvironmentsC4Media
 
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияПирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияSQALab
 
Test Pyramid vs Roi
Test Pyramid vs Roi Test Pyramid vs Roi
Test Pyramid vs Roi COMAQA.BY
 
Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)
Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)
Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)Brian Brazil
 
The Java Evolution Mismatch - Why You Need a Better JVM
The Java Evolution Mismatch - Why You Need a Better JVMThe Java Evolution Mismatch - Why You Need a Better JVM
The Java Evolution Mismatch - Why You Need a Better JVMAzul Systems Inc.
 

Similar to Understanding Application Hiccups - and What You Can Do About Them (20)

From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
Fine line between performance and security
Fine line between performance and securityFine line between performance and security
Fine line between performance and security
 
Multithreading 101
Multithreading 101Multithreading 101
Multithreading 101
 
Understanding Hardware Transactional Memory
Understanding Hardware Transactional MemoryUnderstanding Hardware Transactional Memory
Understanding Hardware Transactional Memory
 
JVM Mechanics: A Peek Under the Hood
JVM Mechanics: A Peek Under the HoodJVM Mechanics: A Peek Under the Hood
JVM Mechanics: A Peek Under the Hood
 
Week 4 Assignment - Software Development PlanScenario-Your team has be.docx
Week 4 Assignment - Software Development PlanScenario-Your team has be.docxWeek 4 Assignment - Software Development PlanScenario-Your team has be.docx
Week 4 Assignment - Software Development PlanScenario-Your team has be.docx
 
The Java Evolution Mismatch by Gil Tene, CTO at Azul Systems
The Java Evolution Mismatch by Gil Tene, CTO at Azul SystemsThe Java Evolution Mismatch by Gil Tene, CTO at Azul Systems
The Java Evolution Mismatch by Gil Tene, CTO at Azul Systems
 
DevOps in Practice: When does "Practice" Become "Doing"?
DevOps in Practice: When does "Practice" Become "Doing"?DevOps in Practice: When does "Practice" Become "Doing"?
DevOps in Practice: When does "Practice" Become "Doing"?
 
Ch01lect1 et
Ch01lect1 etCh01lect1 et
Ch01lect1 et
 
Embracing Failure - AzureDay Rome
Embracing Failure - AzureDay RomeEmbracing Failure - AzureDay Rome
Embracing Failure - AzureDay Rome
 
Chaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionChaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in Production
 
Stress Testing at Twitter: a tale of New Year Eves
Stress Testing at Twitter: a tale of New Year EvesStress Testing at Twitter: a tale of New Year Eves
Stress Testing at Twitter: a tale of New Year Eves
 
Fostering Long-Term Test Automation Success
Fostering Long-Term Test Automation SuccessFostering Long-Term Test Automation Success
Fostering Long-Term Test Automation Success
 
Infrastructure automation-in-the-cloud-130613045624-phpapp02
Infrastructure automation-in-the-cloud-130613045624-phpapp02Infrastructure automation-in-the-cloud-130613045624-phpapp02
Infrastructure automation-in-the-cloud-130613045624-phpapp02
 
SRE (service reliability engineer) on big DevOps platform running on the clou...
SRE (service reliability engineer) on big DevOps platform running on the clou...SRE (service reliability engineer) on big DevOps platform running on the clou...
SRE (service reliability engineer) on big DevOps platform running on the clou...
 
Enabling Java in Latency Sensitive Environments
Enabling Java in Latency Sensitive EnvironmentsEnabling Java in Latency Sensitive Environments
Enabling Java in Latency Sensitive Environments
 
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияПирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
 
Test Pyramid vs Roi
Test Pyramid vs Roi Test Pyramid vs Roi
Test Pyramid vs Roi
 
Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)
Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)
Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)
 
The Java Evolution Mismatch - Why You Need a Better JVM
The Java Evolution Mismatch - Why You Need a Better JVMThe Java Evolution Mismatch - Why You Need a Better JVM
The Java Evolution Mismatch - Why You Need a Better JVM
 

More from Azul Systems Inc.

Advancements ingc andc4overview_linkedin_oct2017
Advancements ingc andc4overview_linkedin_oct2017Advancements ingc andc4overview_linkedin_oct2017
Advancements ingc andc4overview_linkedin_oct2017Azul Systems Inc.
 
Understanding GC, JavaOne 2017
Understanding GC, JavaOne 2017Understanding GC, JavaOne 2017
Understanding GC, JavaOne 2017Azul Systems Inc.
 
Zulu Embedded Java Introduction
Zulu Embedded Java IntroductionZulu Embedded Java Introduction
Zulu Embedded Java IntroductionAzul Systems Inc.
 
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?What's New in the JVM in Java 8?
What's New in the JVM in Java 8?Azul Systems Inc.
 
ObjectLayout: Closing the (last?) inherent C vs. Java speed gap
ObjectLayout: Closing the (last?) inherent C vs. Java speed gapObjectLayout: Closing the (last?) inherent C vs. Java speed gap
ObjectLayout: Closing the (last?) inherent C vs. Java speed gapAzul Systems Inc.
 
Priming Java for Speed at Market Open
Priming Java for Speed at Market OpenPriming Java for Speed at Market Open
Priming Java for Speed at Market OpenAzul Systems Inc.
 
Azul Systems open source guide
Azul Systems open source guideAzul Systems open source guide
Azul Systems open source guideAzul Systems Inc.
 
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!Azul Systems Inc.
 
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and ToolsIntelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and ToolsAzul Systems Inc.
 
Understanding Java Garbage Collection
Understanding Java Garbage CollectionUnderstanding Java Garbage Collection
Understanding Java Garbage CollectionAzul Systems Inc.
 
The evolution of OpenJDK: From Java's beginnings to 2014
The evolution of OpenJDK: From Java's beginnings to 2014The evolution of OpenJDK: From Java's beginnings to 2014
The evolution of OpenJDK: From Java's beginnings to 2014Azul Systems Inc.
 
Push Technology's latest data distribution benchmark with Solarflare and Zing
Push Technology's latest data distribution benchmark with Solarflare and ZingPush Technology's latest data distribution benchmark with Solarflare and Zing
Push Technology's latest data distribution benchmark with Solarflare and ZingAzul Systems Inc.
 
Webinar: Zing Vision: Answering your toughest production Java performance que...
Webinar: Zing Vision: Answering your toughest production Java performance que...Webinar: Zing Vision: Answering your toughest production Java performance que...
Webinar: Zing Vision: Answering your toughest production Java performance que...Azul Systems Inc.
 
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)Azul Systems Inc.
 
Towards a Scalable Non-Blocking Coding Style
Towards a Scalable Non-Blocking Coding StyleTowards a Scalable Non-Blocking Coding Style
Towards a Scalable Non-Blocking Coding StyleAzul Systems Inc.
 
Experiences with Debugging Data Races
Experiences with Debugging Data RacesExperiences with Debugging Data Races
Experiences with Debugging Data RacesAzul Systems Inc.
 
Lock-Free, Wait-Free Hash Table
Lock-Free, Wait-Free Hash TableLock-Free, Wait-Free Hash Table
Lock-Free, Wait-Free Hash TableAzul Systems Inc.
 
How NOT to Write a Microbenchmark
How NOT to Write a MicrobenchmarkHow NOT to Write a Microbenchmark
How NOT to Write a MicrobenchmarkAzul Systems Inc.
 

More from Azul Systems Inc. (20)

Advancements ingc andc4overview_linkedin_oct2017
Advancements ingc andc4overview_linkedin_oct2017Advancements ingc andc4overview_linkedin_oct2017
Advancements ingc andc4overview_linkedin_oct2017
 
Understanding GC, JavaOne 2017
Understanding GC, JavaOne 2017Understanding GC, JavaOne 2017
Understanding GC, JavaOne 2017
 
Zulu Embedded Java Introduction
Zulu Embedded Java IntroductionZulu Embedded Java Introduction
Zulu Embedded Java Introduction
 
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?What's New in the JVM in Java 8?
What's New in the JVM in Java 8?
 
ObjectLayout: Closing the (last?) inherent C vs. Java speed gap
ObjectLayout: Closing the (last?) inherent C vs. Java speed gapObjectLayout: Closing the (last?) inherent C vs. Java speed gap
ObjectLayout: Closing the (last?) inherent C vs. Java speed gap
 
Priming Java for Speed at Market Open
Priming Java for Speed at Market OpenPriming Java for Speed at Market Open
Priming Java for Speed at Market Open
 
Azul Systems open source guide
Azul Systems open source guideAzul Systems open source guide
Azul Systems open source guide
 
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
 
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and ToolsIntelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
 
Understanding Java Garbage Collection
Understanding Java Garbage CollectionUnderstanding Java Garbage Collection
Understanding Java Garbage Collection
 
The evolution of OpenJDK: From Java's beginnings to 2014
The evolution of OpenJDK: From Java's beginnings to 2014The evolution of OpenJDK: From Java's beginnings to 2014
The evolution of OpenJDK: From Java's beginnings to 2014
 
Push Technology's latest data distribution benchmark with Solarflare and Zing
Push Technology's latest data distribution benchmark with Solarflare and ZingPush Technology's latest data distribution benchmark with Solarflare and Zing
Push Technology's latest data distribution benchmark with Solarflare and Zing
 
Webinar: Zing Vision: Answering your toughest production Java performance que...
Webinar: Zing Vision: Answering your toughest production Java performance que...Webinar: Zing Vision: Answering your toughest production Java performance que...
Webinar: Zing Vision: Answering your toughest production Java performance que...
 
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
 
Java vs. C/C++
Java vs. C/C++Java vs. C/C++
Java vs. C/C++
 
What's Inside a JVM?
What's Inside a JVM?What's Inside a JVM?
What's Inside a JVM?
 
Towards a Scalable Non-Blocking Coding Style
Towards a Scalable Non-Blocking Coding StyleTowards a Scalable Non-Blocking Coding Style
Towards a Scalable Non-Blocking Coding Style
 
Experiences with Debugging Data Races
Experiences with Debugging Data RacesExperiences with Debugging Data Races
Experiences with Debugging Data Races
 
Lock-Free, Wait-Free Hash Table
Lock-Free, Wait-Free Hash TableLock-Free, Wait-Free Hash Table
Lock-Free, Wait-Free Hash Table
 
How NOT to Write a Microbenchmark
How NOT to Write a MicrobenchmarkHow NOT to Write a Microbenchmark
How NOT to Write a Microbenchmark
 

Recently uploaded

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Understanding Application Hiccups - and What You Can Do About Them

  • 1. Understanding Application Hiccups and what you can do about them An introduction to the Open Source jHiccup tool Gil Tene, CTO & co-Founder, Azul Systems ©2011 Azul Systems, Inc.
  • 2. About me: Gil Tene co-founder, CTO @Azul Systems Have been working on “think different” GC approaches since 2002 Created Pauseless & C4 core GC algorithms (Tene, Wolf) A Long history building Virtual & Physical Machines, Operating Systems, Enterprise apps, etc... ©2011 Azul Systems, Inc. * working on real-world trash compaction issues, circa 2004
  • 3. About Azul Vega We make scalable Virtual Machines Have built “whatever it takes to get job done” since 2002 3 generations of custom SMP Multi-core HW (Vega) Now Pure software for commodity x86 (Zing) C4 “Industry firsts” in Garbage collection, elastic memory, Java virtualization, memory scale ©2011 Azul Systems, Inc.
  • 4. A classic look at response time behavior Key Assumption: Response time is a function of load Average? Max? Median? 90%? 99.9% source: IBM CICS server docuementation, “understanding response times” ©2011 Azul Systems, Inc.
  • 5. Common fallacies Computers run application code continuously CPUs stop processing application code for all sorts of reasons e.g: Interrupts. Scheduling of other work, swapping, etc. Modern system architectures add more: Power management, Virtualization (cross-image context switching, physical VM motion), Garbage Collection, etc. Response time can be measured as work units/time. Response time exhibits a normal distribution Leading to attempts to represent with average + std. deviation ©2011 Azul Systems, Inc.
  • 6. Interpreting Results Response time over time From this graph it is possible to identify peaks in the response time over a period of time. Helps to identify issues when server is continuously loaded for long duration of time. Response Time Graph (per Transaction) Response Time versus Elapsed Time report indicates the average response time of the transactions over the elapsed time of the load test as shown. When we measure behavior over time, we often see: “Hiccups” source: ZOHO QEngine White Paper: performance testing report analysis ©2011 Azul Systems, Inc.
  • 7. Application Hiccups Where do they come from? Usually a factor of outside of the individual transaction work E.g: Queueing, accumulated work, platform inconsistency Do they matter? That depends. What are your end-user’s expectations? Hiccups often dominate response time behavior How can/should we measure them? Average? Max? 99.9%? Mean with Std. deviation? Hiccup magnitude is often not a function of load ©2011 Azul Systems, Inc.
  • 9. Pitfall: Calulating %’iles “naïvely” Common Example: build/buy simple load tester to measure throughput issue requests one by one at a certain rate measure and log response time for each request results log used to produce histograms, percentiles, etc. So what’s wrong with that? works well only when all responses fit within in rate interval technique includes “automatic backoff” and coordination But requirements interested in random, uncoordinated requests Bad how bad can this get, really? ©2011 Azul Systems, Inc.
  • 10. Example of naïve %’ile System easily handles 100 requests/sec Responds to each in 1msec System Stalled for 100 Sec How would you characterize this system? 10,000 @ 1msec Naïve results: 1 @ 100 second 1 msec Elapsed Time Naïve characterization: 99.99% below 1 sec !!!
  • 11. Proper measurement System easily handles 100 requests/sec System Stalled for 100 Sec Responds to each in 1msec 10,000 results @ 1 msec each 10,000 results Varying linearly from 100 sec to 10 msec Elapsed Time Proper characterization: 50% below 1 second
  • 12. jHiccup A tool for capturing and displaying platform hiccups Records any observed non-continuity of the underlying platform plots results in simple, consistent format Simple, non-intrusive As simple as adding the word “jHiccup” to your java launch line % jHiccup java myflags myApp Adds a background thread that samples time @ 1000/sec Open Source released to the public domain, creative commons CC0 ©2011 Azul Systems, Inc.
  • 13. what jHiccup measures jHiccup measures the platform, not the application Experiences whatever delays application threads would see Highlights inconsistency in platform execution of “nothing” No attempt to identify cause (e.g. scheduling, GC, swapping, etc.) An application cannot behave better than it’s platform If the platform stalls, the application stalled as well. jHiccup provides a lower bound for “best application behavior” Useful control measurements Comparing jHiccup results for an idle application running on the same platform, at the same time, narrows down behavior to process-specific artifacts (-c option) ©2011 Azul Systems, Inc.
  • 14. The anatomy of Hiccup Charts ©2011 Azul Systems, Inc.
  • 15. Telco App Example Max Time per Hiccups&by&Time&Interval& interval Max"per"Interval" 99%" 99.90%" 99.99%" Max" Hiccup&Dura*on&(msec)& 140" 120" 100" 80" 60" 40" 20" 0" 0" 500" 1000" 1500" 2000" 2500" &Elapsed&Time&(sec)& Optional SLA Hiccups&by&Percen*le&Distribu*on& plotting Hiccup Hiccup&Dura*on&(msec)& 140" 120" duration at 100" percentile 80" 60" levels 40" 20" 0" 0%" 90%" 99%" & 99.9%" & Percen*le& Hiccups"by"Percen?le" ©2011 Azul Systems, Inc. 99.99%" SLA" 99.999%" 99.9999%"
  • 17. How jHiccup works Background thread, measures time to do “nothing” Sleeps for 1 milliseconds, allocates 1 object, records time gap Collects detailed “floating point” histogram of observed times Constant, small memory footprint, virtually no cpu load No effect on application threads Outputs two files A time-based log with 1 line per interval (default 5 sec interval). A percentile distribution log of accumulated histogram data Spreadsheet imports files and plots data A standard, simple chart format ©2011 Azul Systems, Inc.
  • 18. Some fun with jHiccup
  • 20. Idle App on Quiet System Idle App on Busy System Hiccups&by&Time&Interval& Max"per"Interval" 99%" 99.90%" Hiccups&by&Time&Interval& 99.99%" Max" Max"per"Interval" 20" 15" 10" 5" 0" Max" 50" 40" 30" 20" 10" 100" 200" 300" 400" 500" 600" 700" 800" 900" 0" 100" 200" &Elapsed&Time&(sec)& 300" 400" 500" 600" 700" 800" 900" &Elapsed&Time&(sec)& Hiccups&by&Percen*le&Distribu*on& Hiccups&by&Percen*le&Distribu*on& 25" 60" Max=22.336& 20" Hiccup&Dura*on&(msec)& Hiccup&Dura*on&(msec)& 99.99%" 0" 0" 15" 10" 5" 0" 99.90%" 60" Hiccup&Dura*on&(msec)& Hiccup&Dura*on&(msec)& 25" 99%" 0%" 90%" 99%" & 99.9%" & Percen*le& 99.99%" 99.999%" 50" Max=49.728& 40" 30" 20" 10" 0" 0%" 90%" 99%" & 99.9%" & Percen*le& 99.99%" 99.999%"
  • 21. Idle App on Quiet System Idle App on Dedicated System Hiccups&by&Time&Interval& Max"per"Interval" 99%" 99.90%" Hiccups&by&Time&Interval& 99.99%" Max" Max"per"Interval" 20" 15" 10" 5" 0" 99.99%" Max" 0.4" 0.35" 0.3" 0.25" 0.2" 0.15" 0.1" 0.05" 0" 0" 100" 200" 300" 400" 500" 600" 700" 800" 900" 0" 100" 200" &Elapsed&Time&(sec)& 300" 400" 500" 600" 700" 800" 900" &Elapsed&Time&(sec)& Hiccups&by&Percen*le&Distribu*on& Hiccups&by&Percen*le&Distribu*on& 25" 0.45" Max=22.336& 20" Hiccup&Dura*on&(msec)& Hiccup&Dura*on&(msec)& 99.90%" 0.45" Hiccup&Dura*on&(msec)& Hiccup&Dura*on&(msec)& 25" 99%" 15" 10" 5" 0.4" Max=0.411& 0.35" 0.3" 0.25" 0.2" 0.15" 0.1" 0.05" 0" 0%" 90%" 99%" & 99.9%" & Percen*le& 99.99%" 99.999%" 0" 0%" 90%" 99%" & 99.9%" & Percen*le& 99.99%" 99.999%"
  • 22. A 1GB Java Cache under load Hiccups&by&Time&Interval& Max"per"Interval" 99%" 99.90%" 99.99%" Max" Hiccup&Dura*on&(msec)& 4000" 3500" 3000" 2500" 2000" 1500" 1000" 500" 0" 0" 500" 1000" 1500" 2000" &Elapsed&Time&(sec)& Hiccups&by&Percen*le&Distribu*on& Hiccup&Dura*on&(msec)& 4000" 3500" Max=3448.832& 3000" 2500" 2000" 1500" 1000" 500" 0" 0%" 90%" 99%" & 99.9%" & Percen*le& 99.99%" 99.999%" 99.9999%"
  • 25. Obviously, we can use it for comparison purposes ©2011 Azul Systems, Inc.
  • 26. Zing 5, 1GB in an 8GB heap Oracle HotSpot CMS, 1GB in an 8GB heap Hiccups&by&Time&Interval& Max"per"Interval" 99%" 99.90%" Hiccups&by&Time&Interval& 99.99%" Max" Max"per"Interval" 20" 15" 10" 5" 0" Max" 12000" 10000" 8000" 6000" 4000" 2000" 500" 1000" 1500" 2000" 2500" 3000" 3500" 0" 500" 1000" &Elapsed&Time&(sec)& 1500" 2000" 2500" 3000" 3500" &Elapsed&Time&(sec)& Hiccups&by&Percen*le&Distribu*on& Hiccups&by&Percen*le&Distribu*on& 14000" 20" Hiccup&Dura*on&(msec)& 25" Hiccup&Dura*on&(msec)& 99.99%" 0" 0" Max=20.384& 15" 10" 5" 0" 99.90%" 14000" Hiccup&Dura*on&(msec)& Hiccup&Dura*on&(msec)& 25" 99%" 0%" 90%" 99%" & 99.9%" 99.99%" & Percen*le& 99.999%" 99.9999%" Max=13156.352& 12000" 10000" 8000" 6000" 4000" 2000" 0" 0%" 90%" 99%" &99.9%" & Percen*le& 99.99%" 99.999%"
  • 27. Zing 5, 1GB in an 8GB heap Oracle HotSpot CMS, 1GB in an 8GB heap Hiccups&by&Time&Interval& Max"per"Interval" 99%" 99.90%" Hiccups&by&Time&Interval& 99.99%" Max" Max"per"Interval" 12000" 99.99%" Max" 12000" 10000" 8000" 6000" 4000" 2000" 0" 10000" 8000" 6000" 4000" 2000" 0" 0" 500" 1000" 1500" 2000" 2500" 3000" 3500" 0" 500" 1000" &Elapsed&Time&(sec)& 1500" 2000" 2500" 3000" 3500" &Elapsed&Time&(sec)& Hiccups&by&Percen*le&Distribu*on& Hiccups&by&Percen*le&Distribu*on& 14000" 12000" 12000" Hiccup&Dura*on&(msec)& 14000" Hiccup&Dura*on&(msec)& 99.90%" 14000" Hiccup&Dura*on&(msec)& Hiccup&Dura*on&(msec)& 14000" 99%" 10000" 8000" 6000" 4000" 2000" 0" 0%" 90%" Max=20.384& 99%" & 99.9%" 99.99%" & Percen*le& 99.999%" 99.9999%" Max=13156.352& 10000" 8000" 6000" 4000" 2000" 0" 0%" 90%" 99%" &99.9%" & Percen*le& 99.99%" 99.999%"
  • 28. Oracle HotSpot CMS, 4GB in a 18GB heap Oracle HotSpot CMS, 1GB in an 8GB heap Hiccups&by&Time&Interval& Max"per"Interval" 99%" 99.90%" Hiccups&by&Time&Interval& 99.99%" Max" Max"per"Interval" 40000" 99.99%" Max" 12000" 35000" 30000" 25000" 20000" 15000" 10000" 5000" 0" 10000" 8000" 6000" 4000" 2000" 0" 0" 500" 1000" 1500" 2000" 2500" 3000" 3500" 0" 500" 1000" &Elapsed&Time&(sec)& 2000" 2500" 3000" 3500" Hiccups&by&Percen*le&Distribu*on& 45000" 14000" 40000" Hiccup&Dura*on&(msec)& Max=40173.568& 35000" 30000" 25000" 20000" 15000" 10000" 5000" 0" 1500" &Elapsed&Time&(sec)& Hiccups&by&Percen*le&Distribu*on& Hiccup&Dura*on&(msec)& 99.90%" 14000" Hiccup&Dura*on&(msec)& Hiccup&Dura*on&(msec)& 45000" 99%" 0%" 90%" & 99.9%" 99%" & Percen*le& 99.99%" 99.999%" Max=13156.352& 12000" 10000" 8000" 6000" 4000" 2000" 0" 0%" 90%" 99%" &99.9%" & Percen*le& 99.99%" 99.999%"