SlideShare a Scribd company logo
1 of 66
Explorations of the Three
Legged Performance Stool
Charlie Hunt
JVM & Performance Junkie
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/throughput-latency-memory-
footprint
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon San Francisco
www.qconsf.com
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.2
The following is intended to or may outline our [Oracle] general product direction.
It is intended for information purposes only, and may not be incorporated into any
contract. It is not a commitment to deliver any material, code, or functionality, and
should not be relied upon in making purchasing decisions. The development,
release, and timing of any features or functionality described for Oracle s
products remains at the sole discretion of Oracle.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.3
Who is this guy?
!  Currently leading a several HotSpot JVM projects at Oracle
!  Held various performance architect roles at Oracle, Salesforce.com &
Sun Microsystems
!  Lead author of Java Performance, published Sept 2011
Charlie Hunt
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.4
Who is this guy?
And for those who enjoy reading in additional languages …
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5
Who is this guy?
And coming soon to a book store near you …
Java Performance Companion – book cover in process
Authors: Monica Beckwith, Bengt Rutisson, Poonam Parhar & Charlie Hunt
Intended to compliment the material found Java Performance
Java Performance
Companion
Beckwith, Parhar, Rutisson, Hunt
?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.6
What to expect
This session is about understanding the relationship
between throughput, latency and footprint along with,
understanding where system capacity fits in.
And, reasoning about the benefit & impact of each when
making changes, JVM configuration or application.
We will also look at a case study / example.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.7
Agenda
!  The key performance attributes
!  (Very) quick re-visit of the HotSpot JVM GCs
!  Reason about trade-offs with the performance Attributes
!  Case Study (a JDK 9 feature)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.8
The Performance Attributes
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.9
Three Legged Stool
!  Throughput
!  Latency
!  (Memory) Footprint
latency
footprint
throughput
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.10
2 of 3 Principle
Improving one or two of these performance attributes,
(throughput, latency or footprint) results in sacrificing
some performance in the other.
Hunt, John. Java Performance. Upper Saddle River, NJ, Addison-Wesley, 2011
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.11
2 of 3 Principle (updated)
Improving all three performance attributes [usually]
requires a lot of non-trivial [development] work.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.12
Another Principle - (yet to be named)
An improvement in throughput and/or latency may reduce
or lower the amount of available CPU to the application,
or other applications executing on the same system.
Thus impacting the capacity of the system.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.13
Perhaps an Enhanced Three Legged Stool ?
!  Throughput
!  Latency
!  (Memory) Footprint
!  Capacity
latency
footprint
throughput
capacity
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.14
Quick (re)visit of HotSpot
JVM GCs
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.15
Generational GCs
!  [Almost] all modern JVMs use a generational GC
–  Segregate objects by age into different spaces, and bias collection of
younger objects
–  Typically two generations; young & old
!  JVMs with generational GCs
–  HotSpot – all GCs supported by Oracle
–  Zing – C4 GC
–  J9 – all AFAIK … admit I’m not familiar with J9’s GCs
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.16
Why Generational GC ?
!  Weak generational hypothesis
–  Most objects die young
!  Generally accepted reason for generational GCs
–  Improved throughput, and scaling to large Java heaps
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.17
HotSpot JVM Java Heap Layout
The Java Heap
Young Generation
For new & young objects
	
  
	
  
Old Generation
For older / longer living objects
	
  
	
  
[ Permanent Generation | Metaspace (JDK 8+) ]
for VM & class meta-data
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.18
To
Survivor
From
Survivor
HotSpot JVM Java Heap Layout
The Java Heap
Eden
	
  
	
  
Old Generation
For older / longer living objects
	
  
	
  
[ Permanent Generation | Metaspace (JDK 8+) ]
for VM & class meta-data
New	
  object	
  alloca,ons	
  
Reten,on	
  /	
  aging	
  of	
  young	
  
objects	
  during	
  young	
  /	
  minor	
  GCs	
  	
  
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.19
Things to reason about wrt
GC & your application
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.20
GC Duration (pause time)
!  Duration of GC activity is mostly a function of the number of live
objects
–  Other factors
!  Object graph structure
!  Use of, and number of Reference objects
!  Memory locality
What impacts pause time duration?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.21
GC Duration (pause time)
!  Reduce young generation Eden size
–  Smaller space implies fewer live objects (may not always be true!)
Strategies to reduce (young) GC duration
Eden (2 GB) Eden (1 GB)
!  Concurrent young collector?
–  Eliminate pause by collecting concurrently
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.22
GC Duration (pause time)
!  Reduce young generation Eden size
–  Likely lower throughput due to more frequent application pauses
–  More frequent GCs due to smaller size (more on that in a moment)
–  More object promotions to old generation due more rapid object aging
!  Concurrent young collector
–  Available capacity impact due to higher CPU utilization from
concurrent collection activity
–  Throughput and/or latency may be impacted due to CPU usage and
CPU cache eviction
–  Footprint may be impacted due to floating garbage
Consequences
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.23
GC Duration (pause time)
!  Lower application’s object allocation rate
–  Lower injection rate or load on the application
!  Lower system throughput, & lower system capacity, maybe better
latency
–  Capture memory profiles and reduce object allocations
!  Requires (development) work, and may be non-trivial
!  Might actually increase number of live objects at each young GC
–  Implies a potential increase in pause time
!  Throughput and latency may (or should) improve due to less
frequent GC events
Other alternatives
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.24
Young GC Frequency
!  How often Young GC’s occur influenced by
–  Application object allocation rate – how fast it’s allocating objects
–  Size of Eden space
!  This applies to the HotSpot JVM
Often not thought of … and applicable to concurrent collection too
!  For other generational JVMs it will be the size of the space where new
objects are allocated
!  For STW collectors, once that space is exhausted, a GC event occurs
!  For concurrent collectors, there’s usually an occupancy threshold that
once it’s surpassed, a concurrent GC event commences
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.25
Influencing Minor GC Frequency
!  Eden space fills more slowly with reduced object allocation rate
Reduce object allocation rate
Eden (1 GB)
!  Obvious, right? 2x drop in allocation rate, time to fill Eden
space increases 2x, i.e. minor GC frequency cut in ½
Eden (1 GB)
object allocation rate
20 MB / second
40 MB / second
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.26
Influencing Minor GC Frequency
Make Eden size bigger (assuming same object allocation rate)
Eden (1 GB)
Eden (2 GB)
!  Same allocation rate, 2x increase in Eden space, time between
GC increases 2x, i.e. minor GC frequency cut in ½
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.27
Young GC Frequency
!  Reduce object allocation rate (saw this before, right?)
–  Lower injection rate or load on the application
!  Lower system throughput, lower system capacity, maybe better
latency
–  Capture memory profiles and reduce object allocations
!  Requires (development) work, and may be non-trivial
!  Might actually increase number of live objects
–  Implies a potential increase in pause time, or GC time
!  Throughput and latency may (or should) improve
Consequences
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.28
Young GC Frequency
!  Increase young generation Eden size
–  Less frequent GCs due to larger size
–  Fewer object promotions due more effective object aging
–  Likely higher throughput due to less frequent application pauses or
collection activity
!  All 3 probably sound attractive
–  Worse case latency may be higher due to larger space to GC
!  GC duration / pause time could be longer
!  Hmmm … may be not so attractive?
Consequences
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.29
Young GC Frequency
!  What about the potential impact with a concurrent young
generation collector ?
–  Less impact on available capacity due to less frequent collection
activity
–  May see higher throughput and/or lower latency due to lower CPU
usage and lower CPU cache eviction due to less frequent concurrent
collection activity
–  Larger footprint due to larger young generation size
Consequences
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.30
Old GC Duration
!  Number of live objects and objects to move for compaction
–  Other factors
!  Object graph structure
!  Use of, and number of Reference objects
!  Memory locality
!  Differing GC algorithms; stop the world, mostly concurrent,
concurrent, mark sweep, mark sweep compact, etc.
–  And, details within the GC algorithm, i.e. mostly concurrent write-
barrier implementation, concurrent read & write barrier
implementations
What influences Old GC duration?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.31
Old GC Duration
!  Reduce old generation size
–  Smaller space implies fewer live objects (may not always be true!)
Strategies to reduce (old) GC duration (pause time)
Old Gen (4 GB) Old (2 GB)
!  Use a concurrent, or mostly concurrent old collector?
–  Eliminate, or reduce lengthy pause(s) by collecting concurrently or
mostly concurrently
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.32
Old GC Duration (pause time)
!  Reduce old generation size
–  More frequent GCs due to smaller size, i.e. space fills faster
–  Throughput and/or latency may be impacted due to collections
occurring more frequently
–  Available capacity impact due to higher CPU utilization from more
frequent collection activity
–  Likely a smaller footprint due to smaller old generation size
Consequences
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.33
Old GC Duration (pause time)
!  What about using a concurrent, or mostly concurrent old collector
–  Available capacity impact due to higher CPU utilization from
concurrent collection activity
–  Throughput and/or latency may be impacted due to CPU cache
eviction from concurrent GC activity
–  Footprint may be impacted due to floating garbage
Consequences of reduced old gen size
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.34
Old GC Frequency
!  How often Old GC’s occur influenced by
–  Object promotion rate – how many objects promoted from young to old
–  Size of the Old space
!  This applies to the HotSpot JVM
Applicable to mostly concurrent collectors too
!  For other generational JVMs it will be the size of the space where older
objects are promoted / allocated
!  For STW collectors, once the space is exhausted, a GC event occurs
!  For (mostly) concurrent collectors, there’s usually an occupancy
threshold that once it’s surpassed, a concurrent GC event commences
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.35
Influencing Old GC Frequency
!  Old space fills more slowly with reduced object allocation rate
Reduce promotion rate
Old Generation (4 GB)
!  Obvious, right? 2x drop in promotion rate, time to fill Old
Generation space increases 2x, i.e. old GC frequency cut in ½
Old Generation (4 GB)
promotion rate
2 MB / second
4 MB / second
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.36
Influencing Old GC Frequency
Make Old Generation size bigger (assuming same promotion rate)
Old Generation (4 GB)
Old Generation (8 GB)
!  Same promotion rate, 2x increase in Old Generation space,
time between GC increases 2x, i.e. Old GC frequency cut in ½
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.37
Old GC Frequency
!  Reduce promotion rate
–  Lower injection rate or load on the application
!  Lower system throughput & system capacity, maybe better latency
–  Capture memory profiles and reduce promotions
!  Focus on object retention as much as, or more than object
allocations (Look at java.util.LinkedList element removal)
!  Requires (development) work, and may be non-trivial
!  Throughput and latency may (or should) improve
Consequences
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.38
Old GC Frequency
!  Increase old generation size
–  Less frequent old GCs due to larger size
–  Likely higher throughput, and possibly lower latency due to less
frequent application pauses or collection activity
!  All 3 are probably attractive
–  Worse case latency likely impacted for non-concurrent, or non mostly
concurrent collectors
!  Hmmm … may be not so attractive?
Consequences
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.39
Old GC Frequency
!  What about the potential impact with a concurrent, or mostly
concurrent old generation collector ?
–  Less impact on available capacity due to less frequent collection
activity
–  May see higher throughput and/or lower latency due to lower CPU
cache eviction due to less frequent concurrent GC activity
–  Larger footprint due to larger old generation size
Consequences of larger old gen space
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.40
Case Study: String Density
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.41
String Density
!  JDK 9 feature
!  More space-efficient internal representation for java.lang.String
!  Terminology
–  String Density == Project name
–  Compact Strings == Feature name
!  Goals
–  Lower memory footprint, yet no regression in throughput
!  Implied are no latency or CPU usage regressions
JEP 254: Compact Strings
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.42
String Density
Lots of work!
What about the 3 legged stool ?!?!
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.43
String Density
!  10 contributing engineers
–  8 contributing from Oracle
–  2 contributing from Intel
!  Each spending about 1 year, ½ time on String Density
–  About 5 man years of effort
What about the effort?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.44
String Density
!  Improve space efficiency for String and related classes
!  Preserve throughput and latency
!  Preserve compatibility
–  Java supports UTF-16, yet many apps only use lower byte in Strings
–  No new Java SE APIs, no changes required for upstream applications
!  Replacement for JDK 6’s Compressed Strings
!  Platforms: X86/X64, SPARC, ARM 32/64
!  OS: Linux, Solaris, Windows and Mac OS X
Additional requirements
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.45
String Density
!  Repository of 950+ heap dumps from various Oracle FMW, Fusion
Apps, and Java applications
–  How much can memory footprint be reduced?
!  Java Object Layout tools
–  If fields added or removed from String class, what’s the footprint impact per
String instance?
!  JVM model’s analyzed; 32-bit, 64-bit w/ no compressed oops, 64-bit
with compressed oops (8 byte aligned), and 64-bit with compressed
oops (16 byte aligned)
Analysis approach
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.46
String Density
!  Distribution of the live data size similar across the models
–  Roughly 300 MB to 2.5 GB with a long tail
!  char[]’s consume about 10% - 45% of the live data size
!  Most Strings contain single byte chars
!  75% of Strings are 35 chars or smaller
–  Long tail distribution as the String sizes get larger beyond 35 chars
!  35% to 40% reduction in char[] footprint, not 50% theoretical reduction
!  5% - 15% reduction in application footprint
What we learned
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.47
String Density
!  Store chars in String as either UTF-16, or ISO-8859-1/Latin1
–  Stripping off leading zero byte of two byte UTF-16 char
!  Use byte[] instead of char[] to store String’s characters
–  1 byte per char for ISO-8850-1/Latin1
–  2 bytes per char for UTF-16
!  Add an encoding byte field to indicate the encoding in use
–  Ability to extend to support additional character encodings
Proposed solution
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.48
String Density
!  Strings with all leading byte bytes as 0
–  Candidate for ISO-8850-1/Latin1 encoding
–  Leading 0 bytes stripped off, and trailing bytes stored, i.e. single byte per
char
!  String with any leading byte in incoming char as non 0
–  Cannot be encoded as ISO-8859-1/Latin1, stored as UTF-16 encoded, i.e.
two bytes per char
–  Compress (deflate) incoming characters, inflate to UTF-16 when returning
sequence of chars via String API(s)
Proposed solution continued …
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.49
String Density
!  Why not UTF-8?
Proposed solution continued …
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.50
String Density
!  Why not UTF-8?
–  Cause we’re stupid!
Proposed solution continued …
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.51
String Density
!  Why not UTF-8?
–  Cause we’re stupid! Just joking of course!!!
–  UTF-8 supports variable width characters
–  Many String operations require random access into sequence of chars
!  Their throughput performance would suffer!
–  UTF-8 encoding is great for character transmission
!  It’s not performant for String operations
Proposed solution continued …
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.52
String Density
JDK 8 String class versus new JDK 9 String class
New String Class (JDK 9)
{
private final byte[] value;
private final byte coder;
private int hash;
...
}
Old String Class (JDK 8)
{
private final char value[];
private int hash;
...
}
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.53
String Density
What about memory footprint per String instance?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.54
String Density
What about memory footprint per String instance?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.55
String Density
!  Developed 400 JMH micro-benchmarks for String APIs
–  Results
!  http://cr.openjdk.java.net/~thartmann/compact_strings/microbenchmarks
–  Micro-benchmarks (and various other String Density artifacts)
!  http://cr.openjdk.java.net/~shade/density/
!  String is highly optimized using SIMD instructions
–  About 55 specific JIT compiler optimizations for String related operations
!  Non-trivial amount of work
!  Why not fly your own single byte String class?
What about throughput?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.56
String Density
!  SPECjbb2015 (Intel x64)
–  Live data size reduction of about 7% (footprint reduction)
–  Critical-jOps increased by about 11% (latency maintained or improved)
!  At critical-jOps, CPU utilization remained the same as baseline
–  Max-jOps increased by about 3% (throughput improved)
!  SPECjbb2005 (Intel x64)
–  Live data size reduction of about 21%
–  Throughput increase of about 5%
–  23% reduction in GC frequency
Macro-level performance
*SPECjbb2015 & SPECjbb2005 are trademarks of the
Standard Performance Evaluation Corporation.
See http://www.spec.org for more information.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.57
String Density
!  With a lot of effort ….
!  We realized a reduction in memory footprint, yet able to maintain or
improve throughput, and maintain latency or reduce latency
!  And, able to maintain or improve system capacity
Three legged stool revisited
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.58
Call to Action
!  Can’t wait to try it on your application(s) ?
–  Again, a JDK 9 feature
!  Implementation:
–  Repository: http://hg.openjdk.java.net/jdk9/sandbox/
–  Branch: JDK-8054307-branch
Interested or Intrigued?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.59
Call to Action
!  Build Steps:
$ hg clone http://hg.openjdk.java.net/jdk9/sandbox/
$ cd sandbox
$ sh ./get_source.sh
$ sh ./common/bin/hgforest.sh up -r JDK-8054307-branch
$ make configure
$ make images
!  Command line option to enable/disable feature:
-XX:+CompactStrings / -XX:-CompactStrings
Interested or Intrigued?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.60
Main Takeaways
Raising all three legs of the performance stool is hard,
but possible with a lot of non-trivial effort.
Reason about the tradeoffs in realizing improvements in
one or two of the performance attributes, i.e. understand
the alternatives, and realize system capacity may be a
criteria that fits in here too.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.61
Acknowledgements
!  String Density Team
–  Oracle
!  Aleksey Shipilev, Sherman Shen, Brent Christian, Roger Riggs, Tobias
Hartmann, Vladimir Kozlov, Guy Delemarter
–  Intel
!  Sandhya Viswanathan, Vivek Deshpande
!  Special thanks to Sandhya – joint JavaOne 2015 presentation
!  HotSpot GC Engineering Team
–  Past and present members
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.62
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.63
Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/throughput-
latency-memory-footprint

More Related Content

What's hot

實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)Gelis Wu
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたNarami Kiyokura
 
WebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたWebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたonozaty
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-Satoshi Masuda
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いたAkihiro Kuwano
 
Azureの契約直前・直後に意識しておくこと10箇条
Azureの契約直前・直後に意識しておくこと10箇条Azureの契約直前・直後に意識しておくこと10箇条
Azureの契約直前・直後に意識しておくこと10箇条Yui Ashikaga
 
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs XebiaLabs
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテストTakuto Wada
 
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016Yusuke Suzuki
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-Saki Homma
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門増田 亨
 
【TECH×GAME COLLEGE#28】形から入ったドメイン駆動設計によるゲーム開発の光と闇
【TECH×GAME COLLEGE#28】形から入ったドメイン駆動設計によるゲーム開発の光と闇【TECH×GAME COLLEGE#28】形から入ったドメイン駆動設計によるゲーム開発の光と闇
【TECH×GAME COLLEGE#28】形から入ったドメイン駆動設計によるゲーム開発の光と闇techgamecollege
 
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 日本マイクロソフト株式会社
 
Cedec2021_モバイルゲーム事業で 大規模スクラム(LeSS)を 導入するまでの1年間とその後
Cedec2021_モバイルゲーム事業で 大規模スクラム(LeSS)を 導入するまでの1年間とその後Cedec2021_モバイルゲーム事業で 大規模スクラム(LeSS)を 導入するまでの1年間とその後
Cedec2021_モバイルゲーム事業で 大規模スクラム(LeSS)を 導入するまでの1年間とその後aktsk_corporate
 
ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話Taiga Takahari
 
CI/CD with Openshift and Jenkins
CI/CD with Openshift and JenkinsCI/CD with Openshift and Jenkins
CI/CD with Openshift and JenkinsAri LiVigni
 
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーCloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーnota-ja
 

What's hot (20)

實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
 
WebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたWebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみた
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
 
Azureの契約直前・直後に意識しておくこと10箇条
Azureの契約直前・直後に意識しておくこと10箇条Azureの契約直前・直後に意識しておくこと10箇条
Azureの契約直前・直後に意識しておくこと10箇条
 
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテスト
 
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
 
Feature Flags.pdf
Feature Flags.pdfFeature Flags.pdf
Feature Flags.pdf
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
 
【TECH×GAME COLLEGE#28】形から入ったドメイン駆動設計によるゲーム開発の光と闇
【TECH×GAME COLLEGE#28】形から入ったドメイン駆動設計によるゲーム開発の光と闇【TECH×GAME COLLEGE#28】形から入ったドメイン駆動設計によるゲーム開発の光と闇
【TECH×GAME COLLEGE#28】形から入ったドメイン駆動設計によるゲーム開発の光と闇
 
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
 
HTTP/2 入門
HTTP/2 入門HTTP/2 入門
HTTP/2 入門
 
Cedec2021_モバイルゲーム事業で 大規模スクラム(LeSS)を 導入するまでの1年間とその後
Cedec2021_モバイルゲーム事業で 大規模スクラム(LeSS)を 導入するまでの1年間とその後Cedec2021_モバイルゲーム事業で 大規模スクラム(LeSS)を 導入するまでの1年間とその後
Cedec2021_モバイルゲーム事業で 大規模スクラム(LeSS)を 導入するまでの1年間とその後
 
ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話
 
CI/CD with Openshift and Jenkins
CI/CD with Openshift and JenkinsCI/CD with Openshift and Jenkins
CI/CD with Openshift and Jenkins
 
一度死んだ話
一度死んだ話一度死んだ話
一度死んだ話
 
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーCloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
 

Viewers also liked

A To Z Optimization Of Computer
A To Z Optimization Of ComputerA To Z Optimization Of Computer
A To Z Optimization Of ComputerShan Sachwani
 
Energia Eólica.
Energia Eólica.Energia Eólica.
Energia Eólica.Maysa Silva
 
How to Live To Be 100+ Slide Redesign
How to Live To Be 100+ Slide RedesignHow to Live To Be 100+ Slide Redesign
How to Live To Be 100+ Slide RedesignJoselid Alvarez
 
bmsforsecuritysystemsautosaved-120118114846-phpapp01
bmsforsecuritysystemsautosaved-120118114846-phpapp01bmsforsecuritysystemsautosaved-120118114846-phpapp01
bmsforsecuritysystemsautosaved-120118114846-phpapp01Mohammed Zaid Shaikh
 
Münzenbergs Flucht ins Exil
Münzenbergs Flucht ins Exil Münzenbergs Flucht ins Exil
Münzenbergs Flucht ins Exil MuenzenbergFORUM
 
Conflict Scale no logos
Conflict Scale no logosConflict Scale no logos
Conflict Scale no logosswoolland
 
Deakin Volunteer
Deakin VolunteerDeakin Volunteer
Deakin VolunteerShoba Nadar
 
global Venture funding and start up data : top 10 charts
global Venture funding and start up data : top 10 chartsglobal Venture funding and start up data : top 10 charts
global Venture funding and start up data : top 10 chartsSumit Roy
 
Top 10 global Toy Brands
Top 10  global Toy BrandsTop 10  global Toy Brands
Top 10 global Toy BrandsSumit Roy
 
Top 100 global engineering and construction brands
Top 100  global engineering and construction brands Top 100  global engineering and construction brands
Top 100 global engineering and construction brands Sumit Roy
 
顾问式销售 -Spin201505
顾问式销售 -Spin201505顾问式销售 -Spin201505
顾问式销售 -Spin201505Amanda Yang
 
US SOLOMO ( SOCIAL LOCAL MOBILE SPENDS 2016 ONWARDS)
US SOLOMO ( SOCIAL LOCAL MOBILE SPENDS 2016 ONWARDS)US SOLOMO ( SOCIAL LOCAL MOBILE SPENDS 2016 ONWARDS)
US SOLOMO ( SOCIAL LOCAL MOBILE SPENDS 2016 ONWARDS)Sumit Roy
 
Eyeson Video-Rekrutierung
Eyeson Video-Rekrutierung Eyeson Video-Rekrutierung
Eyeson Video-Rekrutierung Eyeson
 

Viewers also liked (16)

A To Z Optimization Of Computer
A To Z Optimization Of ComputerA To Z Optimization Of Computer
A To Z Optimization Of Computer
 
Mengapa kesan pertama customer begitu penting
Mengapa kesan pertama customer begitu pentingMengapa kesan pertama customer begitu penting
Mengapa kesan pertama customer begitu penting
 
Energia Eólica.
Energia Eólica.Energia Eólica.
Energia Eólica.
 
How to Live To Be 100+ Slide Redesign
How to Live To Be 100+ Slide RedesignHow to Live To Be 100+ Slide Redesign
How to Live To Be 100+ Slide Redesign
 
bmsforsecuritysystemsautosaved-120118114846-phpapp01
bmsforsecuritysystemsautosaved-120118114846-phpapp01bmsforsecuritysystemsautosaved-120118114846-phpapp01
bmsforsecuritysystemsautosaved-120118114846-phpapp01
 
My resume
My resumeMy resume
My resume
 
Münzenbergs Flucht ins Exil
Münzenbergs Flucht ins Exil Münzenbergs Flucht ins Exil
Münzenbergs Flucht ins Exil
 
Conflict Scale no logos
Conflict Scale no logosConflict Scale no logos
Conflict Scale no logos
 
Deakin Volunteer
Deakin VolunteerDeakin Volunteer
Deakin Volunteer
 
global Venture funding and start up data : top 10 charts
global Venture funding and start up data : top 10 chartsglobal Venture funding and start up data : top 10 charts
global Venture funding and start up data : top 10 charts
 
Top 10 global Toy Brands
Top 10  global Toy BrandsTop 10  global Toy Brands
Top 10 global Toy Brands
 
Top 100 global engineering and construction brands
Top 100  global engineering and construction brands Top 100  global engineering and construction brands
Top 100 global engineering and construction brands
 
顾问式销售 -Spin201505
顾问式销售 -Spin201505顾问式销售 -Spin201505
顾问式销售 -Spin201505
 
US SOLOMO ( SOCIAL LOCAL MOBILE SPENDS 2016 ONWARDS)
US SOLOMO ( SOCIAL LOCAL MOBILE SPENDS 2016 ONWARDS)US SOLOMO ( SOCIAL LOCAL MOBILE SPENDS 2016 ONWARDS)
US SOLOMO ( SOCIAL LOCAL MOBILE SPENDS 2016 ONWARDS)
 
Eyeson Video-Rekrutierung
Eyeson Video-Rekrutierung Eyeson Video-Rekrutierung
Eyeson Video-Rekrutierung
 
SAP Cloud for Retail
SAP Cloud for RetailSAP Cloud for Retail
SAP Cloud for Retail
 

Similar to Explorations of the three legged performance stool

Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsDavid Delabassee
 
How to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesHow to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesPavel Bucek
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsDavid Delabassee
 
Java Memory Hogs.pdf
Java Memory Hogs.pdfJava Memory Hogs.pdf
Java Memory Hogs.pdfGurbinder3
 
Ebs performance tuning session feb 13 2013---Presented by Oracle
Ebs performance tuning session  feb 13 2013---Presented by OracleEbs performance tuning session  feb 13 2013---Presented by Oracle
Ebs performance tuning session feb 13 2013---Presented by OracleAkash Pramanik
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production EnvironmentsBruno Borges
 
Streaming solutions for real time problems
Streaming solutions for real time problems Streaming solutions for real time problems
Streaming solutions for real time problems Aparna Gaonkar
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Shaun Smith
 
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]David Buck
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouDavid Delabassee
 
Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018CodeOps Technologies LLP
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the CoreC4Media
 
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
 
Azul yandexjune010
Azul yandexjune010Azul yandexjune010
Azul yandexjune010yaevents
 
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]David Buck
 

Similar to Explorations of the three legged performance stool (20)

Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and Triumphs
 
How to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesHow to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based Microservices
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & Triumphs
 
Java Memory Hogs.pdf
Java Memory Hogs.pdfJava Memory Hogs.pdf
Java Memory Hogs.pdf
 
Ebs performance tuning session feb 13 2013---Presented by Oracle
Ebs performance tuning session  feb 13 2013---Presented by OracleEbs performance tuning session  feb 13 2013---Presented by Oracle
Ebs performance tuning session feb 13 2013---Presented by Oracle
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production Environments
 
Streaming solutions for real time problems
Streaming solutions for real time problems Streaming solutions for real time problems
Streaming solutions for real time problems
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019
 
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
 
Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
oraclewls-jrebel
oraclewls-jrebeloraclewls-jrebel
oraclewls-jrebel
 
Apouc 2014-enterprise-manager-12c
Apouc 2014-enterprise-manager-12cApouc 2014-enterprise-manager-12c
Apouc 2014-enterprise-manager-12c
 
“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core
 
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
 
Azul yandexjune010
Azul yandexjune010Azul yandexjune010
Azul yandexjune010
 
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
 

More from C4Media

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoC4Media
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileC4Media
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020C4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsC4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsC4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerC4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereC4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreC4Media
 
Navigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsNavigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsC4Media
 

More from C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 
Navigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsNavigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery Teams
 

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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
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
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 

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...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 

Explorations of the three legged performance stool

  • 1. Explorations of the Three Legged Performance Stool Charlie Hunt JVM & Performance Junkie
  • 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /throughput-latency-memory- footprint
  • 3. Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide Presented at QCon San Francisco www.qconsf.com
  • 4. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.2 The following is intended to or may outline our [Oracle] general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle.
  • 5. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.3 Who is this guy? !  Currently leading a several HotSpot JVM projects at Oracle !  Held various performance architect roles at Oracle, Salesforce.com & Sun Microsystems !  Lead author of Java Performance, published Sept 2011 Charlie Hunt
  • 6. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.4 Who is this guy? And for those who enjoy reading in additional languages …
  • 7. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5 Who is this guy? And coming soon to a book store near you … Java Performance Companion – book cover in process Authors: Monica Beckwith, Bengt Rutisson, Poonam Parhar & Charlie Hunt Intended to compliment the material found Java Performance Java Performance Companion Beckwith, Parhar, Rutisson, Hunt ?
  • 8. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.6 What to expect This session is about understanding the relationship between throughput, latency and footprint along with, understanding where system capacity fits in. And, reasoning about the benefit & impact of each when making changes, JVM configuration or application. We will also look at a case study / example.
  • 9. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.7 Agenda !  The key performance attributes !  (Very) quick re-visit of the HotSpot JVM GCs !  Reason about trade-offs with the performance Attributes !  Case Study (a JDK 9 feature)
  • 10. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.8 The Performance Attributes
  • 11. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.9 Three Legged Stool !  Throughput !  Latency !  (Memory) Footprint latency footprint throughput
  • 12. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.10 2 of 3 Principle Improving one or two of these performance attributes, (throughput, latency or footprint) results in sacrificing some performance in the other. Hunt, John. Java Performance. Upper Saddle River, NJ, Addison-Wesley, 2011
  • 13. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.11 2 of 3 Principle (updated) Improving all three performance attributes [usually] requires a lot of non-trivial [development] work.
  • 14. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.12 Another Principle - (yet to be named) An improvement in throughput and/or latency may reduce or lower the amount of available CPU to the application, or other applications executing on the same system. Thus impacting the capacity of the system.
  • 15. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.13 Perhaps an Enhanced Three Legged Stool ? !  Throughput !  Latency !  (Memory) Footprint !  Capacity latency footprint throughput capacity
  • 16. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.14 Quick (re)visit of HotSpot JVM GCs
  • 17. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.15 Generational GCs !  [Almost] all modern JVMs use a generational GC –  Segregate objects by age into different spaces, and bias collection of younger objects –  Typically two generations; young & old !  JVMs with generational GCs –  HotSpot – all GCs supported by Oracle –  Zing – C4 GC –  J9 – all AFAIK … admit I’m not familiar with J9’s GCs
  • 18. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.16 Why Generational GC ? !  Weak generational hypothesis –  Most objects die young !  Generally accepted reason for generational GCs –  Improved throughput, and scaling to large Java heaps
  • 19. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.17 HotSpot JVM Java Heap Layout The Java Heap Young Generation For new & young objects     Old Generation For older / longer living objects     [ Permanent Generation | Metaspace (JDK 8+) ] for VM & class meta-data
  • 20. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.18 To Survivor From Survivor HotSpot JVM Java Heap Layout The Java Heap Eden     Old Generation For older / longer living objects     [ Permanent Generation | Metaspace (JDK 8+) ] for VM & class meta-data New  object  alloca,ons   Reten,on  /  aging  of  young   objects  during  young  /  minor  GCs    
  • 21. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.19 Things to reason about wrt GC & your application
  • 22. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.20 GC Duration (pause time) !  Duration of GC activity is mostly a function of the number of live objects –  Other factors !  Object graph structure !  Use of, and number of Reference objects !  Memory locality What impacts pause time duration?
  • 23. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.21 GC Duration (pause time) !  Reduce young generation Eden size –  Smaller space implies fewer live objects (may not always be true!) Strategies to reduce (young) GC duration Eden (2 GB) Eden (1 GB) !  Concurrent young collector? –  Eliminate pause by collecting concurrently
  • 24. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.22 GC Duration (pause time) !  Reduce young generation Eden size –  Likely lower throughput due to more frequent application pauses –  More frequent GCs due to smaller size (more on that in a moment) –  More object promotions to old generation due more rapid object aging !  Concurrent young collector –  Available capacity impact due to higher CPU utilization from concurrent collection activity –  Throughput and/or latency may be impacted due to CPU usage and CPU cache eviction –  Footprint may be impacted due to floating garbage Consequences
  • 25. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.23 GC Duration (pause time) !  Lower application’s object allocation rate –  Lower injection rate or load on the application !  Lower system throughput, & lower system capacity, maybe better latency –  Capture memory profiles and reduce object allocations !  Requires (development) work, and may be non-trivial !  Might actually increase number of live objects at each young GC –  Implies a potential increase in pause time !  Throughput and latency may (or should) improve due to less frequent GC events Other alternatives
  • 26. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.24 Young GC Frequency !  How often Young GC’s occur influenced by –  Application object allocation rate – how fast it’s allocating objects –  Size of Eden space !  This applies to the HotSpot JVM Often not thought of … and applicable to concurrent collection too !  For other generational JVMs it will be the size of the space where new objects are allocated !  For STW collectors, once that space is exhausted, a GC event occurs !  For concurrent collectors, there’s usually an occupancy threshold that once it’s surpassed, a concurrent GC event commences
  • 27. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.25 Influencing Minor GC Frequency !  Eden space fills more slowly with reduced object allocation rate Reduce object allocation rate Eden (1 GB) !  Obvious, right? 2x drop in allocation rate, time to fill Eden space increases 2x, i.e. minor GC frequency cut in ½ Eden (1 GB) object allocation rate 20 MB / second 40 MB / second
  • 28. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.26 Influencing Minor GC Frequency Make Eden size bigger (assuming same object allocation rate) Eden (1 GB) Eden (2 GB) !  Same allocation rate, 2x increase in Eden space, time between GC increases 2x, i.e. minor GC frequency cut in ½
  • 29. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.27 Young GC Frequency !  Reduce object allocation rate (saw this before, right?) –  Lower injection rate or load on the application !  Lower system throughput, lower system capacity, maybe better latency –  Capture memory profiles and reduce object allocations !  Requires (development) work, and may be non-trivial !  Might actually increase number of live objects –  Implies a potential increase in pause time, or GC time !  Throughput and latency may (or should) improve Consequences
  • 30. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.28 Young GC Frequency !  Increase young generation Eden size –  Less frequent GCs due to larger size –  Fewer object promotions due more effective object aging –  Likely higher throughput due to less frequent application pauses or collection activity !  All 3 probably sound attractive –  Worse case latency may be higher due to larger space to GC !  GC duration / pause time could be longer !  Hmmm … may be not so attractive? Consequences
  • 31. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.29 Young GC Frequency !  What about the potential impact with a concurrent young generation collector ? –  Less impact on available capacity due to less frequent collection activity –  May see higher throughput and/or lower latency due to lower CPU usage and lower CPU cache eviction due to less frequent concurrent collection activity –  Larger footprint due to larger young generation size Consequences
  • 32. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.30 Old GC Duration !  Number of live objects and objects to move for compaction –  Other factors !  Object graph structure !  Use of, and number of Reference objects !  Memory locality !  Differing GC algorithms; stop the world, mostly concurrent, concurrent, mark sweep, mark sweep compact, etc. –  And, details within the GC algorithm, i.e. mostly concurrent write- barrier implementation, concurrent read & write barrier implementations What influences Old GC duration?
  • 33. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.31 Old GC Duration !  Reduce old generation size –  Smaller space implies fewer live objects (may not always be true!) Strategies to reduce (old) GC duration (pause time) Old Gen (4 GB) Old (2 GB) !  Use a concurrent, or mostly concurrent old collector? –  Eliminate, or reduce lengthy pause(s) by collecting concurrently or mostly concurrently
  • 34. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.32 Old GC Duration (pause time) !  Reduce old generation size –  More frequent GCs due to smaller size, i.e. space fills faster –  Throughput and/or latency may be impacted due to collections occurring more frequently –  Available capacity impact due to higher CPU utilization from more frequent collection activity –  Likely a smaller footprint due to smaller old generation size Consequences
  • 35. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.33 Old GC Duration (pause time) !  What about using a concurrent, or mostly concurrent old collector –  Available capacity impact due to higher CPU utilization from concurrent collection activity –  Throughput and/or latency may be impacted due to CPU cache eviction from concurrent GC activity –  Footprint may be impacted due to floating garbage Consequences of reduced old gen size
  • 36. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.34 Old GC Frequency !  How often Old GC’s occur influenced by –  Object promotion rate – how many objects promoted from young to old –  Size of the Old space !  This applies to the HotSpot JVM Applicable to mostly concurrent collectors too !  For other generational JVMs it will be the size of the space where older objects are promoted / allocated !  For STW collectors, once the space is exhausted, a GC event occurs !  For (mostly) concurrent collectors, there’s usually an occupancy threshold that once it’s surpassed, a concurrent GC event commences
  • 37. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.35 Influencing Old GC Frequency !  Old space fills more slowly with reduced object allocation rate Reduce promotion rate Old Generation (4 GB) !  Obvious, right? 2x drop in promotion rate, time to fill Old Generation space increases 2x, i.e. old GC frequency cut in ½ Old Generation (4 GB) promotion rate 2 MB / second 4 MB / second
  • 38. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.36 Influencing Old GC Frequency Make Old Generation size bigger (assuming same promotion rate) Old Generation (4 GB) Old Generation (8 GB) !  Same promotion rate, 2x increase in Old Generation space, time between GC increases 2x, i.e. Old GC frequency cut in ½
  • 39. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.37 Old GC Frequency !  Reduce promotion rate –  Lower injection rate or load on the application !  Lower system throughput & system capacity, maybe better latency –  Capture memory profiles and reduce promotions !  Focus on object retention as much as, or more than object allocations (Look at java.util.LinkedList element removal) !  Requires (development) work, and may be non-trivial !  Throughput and latency may (or should) improve Consequences
  • 40. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.38 Old GC Frequency !  Increase old generation size –  Less frequent old GCs due to larger size –  Likely higher throughput, and possibly lower latency due to less frequent application pauses or collection activity !  All 3 are probably attractive –  Worse case latency likely impacted for non-concurrent, or non mostly concurrent collectors !  Hmmm … may be not so attractive? Consequences
  • 41. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.39 Old GC Frequency !  What about the potential impact with a concurrent, or mostly concurrent old generation collector ? –  Less impact on available capacity due to less frequent collection activity –  May see higher throughput and/or lower latency due to lower CPU cache eviction due to less frequent concurrent GC activity –  Larger footprint due to larger old generation size Consequences of larger old gen space
  • 42. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.40 Case Study: String Density
  • 43. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.41 String Density !  JDK 9 feature !  More space-efficient internal representation for java.lang.String !  Terminology –  String Density == Project name –  Compact Strings == Feature name !  Goals –  Lower memory footprint, yet no regression in throughput !  Implied are no latency or CPU usage regressions JEP 254: Compact Strings
  • 44. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.42 String Density Lots of work! What about the 3 legged stool ?!?!
  • 45. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.43 String Density !  10 contributing engineers –  8 contributing from Oracle –  2 contributing from Intel !  Each spending about 1 year, ½ time on String Density –  About 5 man years of effort What about the effort?
  • 46. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.44 String Density !  Improve space efficiency for String and related classes !  Preserve throughput and latency !  Preserve compatibility –  Java supports UTF-16, yet many apps only use lower byte in Strings –  No new Java SE APIs, no changes required for upstream applications !  Replacement for JDK 6’s Compressed Strings !  Platforms: X86/X64, SPARC, ARM 32/64 !  OS: Linux, Solaris, Windows and Mac OS X Additional requirements
  • 47. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.45 String Density !  Repository of 950+ heap dumps from various Oracle FMW, Fusion Apps, and Java applications –  How much can memory footprint be reduced? !  Java Object Layout tools –  If fields added or removed from String class, what’s the footprint impact per String instance? !  JVM model’s analyzed; 32-bit, 64-bit w/ no compressed oops, 64-bit with compressed oops (8 byte aligned), and 64-bit with compressed oops (16 byte aligned) Analysis approach
  • 48. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.46 String Density !  Distribution of the live data size similar across the models –  Roughly 300 MB to 2.5 GB with a long tail !  char[]’s consume about 10% - 45% of the live data size !  Most Strings contain single byte chars !  75% of Strings are 35 chars or smaller –  Long tail distribution as the String sizes get larger beyond 35 chars !  35% to 40% reduction in char[] footprint, not 50% theoretical reduction !  5% - 15% reduction in application footprint What we learned
  • 49. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.47 String Density !  Store chars in String as either UTF-16, or ISO-8859-1/Latin1 –  Stripping off leading zero byte of two byte UTF-16 char !  Use byte[] instead of char[] to store String’s characters –  1 byte per char for ISO-8850-1/Latin1 –  2 bytes per char for UTF-16 !  Add an encoding byte field to indicate the encoding in use –  Ability to extend to support additional character encodings Proposed solution
  • 50. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.48 String Density !  Strings with all leading byte bytes as 0 –  Candidate for ISO-8850-1/Latin1 encoding –  Leading 0 bytes stripped off, and trailing bytes stored, i.e. single byte per char !  String with any leading byte in incoming char as non 0 –  Cannot be encoded as ISO-8859-1/Latin1, stored as UTF-16 encoded, i.e. two bytes per char –  Compress (deflate) incoming characters, inflate to UTF-16 when returning sequence of chars via String API(s) Proposed solution continued …
  • 51. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.49 String Density !  Why not UTF-8? Proposed solution continued …
  • 52. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.50 String Density !  Why not UTF-8? –  Cause we’re stupid! Proposed solution continued …
  • 53. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.51 String Density !  Why not UTF-8? –  Cause we’re stupid! Just joking of course!!! –  UTF-8 supports variable width characters –  Many String operations require random access into sequence of chars !  Their throughput performance would suffer! –  UTF-8 encoding is great for character transmission !  It’s not performant for String operations Proposed solution continued …
  • 54. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.52 String Density JDK 8 String class versus new JDK 9 String class New String Class (JDK 9) { private final byte[] value; private final byte coder; private int hash; ... } Old String Class (JDK 8) { private final char value[]; private int hash; ... }
  • 55. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.53 String Density What about memory footprint per String instance?
  • 56. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.54 String Density What about memory footprint per String instance?
  • 57. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.55 String Density !  Developed 400 JMH micro-benchmarks for String APIs –  Results !  http://cr.openjdk.java.net/~thartmann/compact_strings/microbenchmarks –  Micro-benchmarks (and various other String Density artifacts) !  http://cr.openjdk.java.net/~shade/density/ !  String is highly optimized using SIMD instructions –  About 55 specific JIT compiler optimizations for String related operations !  Non-trivial amount of work !  Why not fly your own single byte String class? What about throughput?
  • 58. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.56 String Density !  SPECjbb2015 (Intel x64) –  Live data size reduction of about 7% (footprint reduction) –  Critical-jOps increased by about 11% (latency maintained or improved) !  At critical-jOps, CPU utilization remained the same as baseline –  Max-jOps increased by about 3% (throughput improved) !  SPECjbb2005 (Intel x64) –  Live data size reduction of about 21% –  Throughput increase of about 5% –  23% reduction in GC frequency Macro-level performance *SPECjbb2015 & SPECjbb2005 are trademarks of the Standard Performance Evaluation Corporation. See http://www.spec.org for more information.
  • 59. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.57 String Density !  With a lot of effort …. !  We realized a reduction in memory footprint, yet able to maintain or improve throughput, and maintain latency or reduce latency !  And, able to maintain or improve system capacity Three legged stool revisited
  • 60. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.58 Call to Action !  Can’t wait to try it on your application(s) ? –  Again, a JDK 9 feature !  Implementation: –  Repository: http://hg.openjdk.java.net/jdk9/sandbox/ –  Branch: JDK-8054307-branch Interested or Intrigued?
  • 61. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.59 Call to Action !  Build Steps: $ hg clone http://hg.openjdk.java.net/jdk9/sandbox/ $ cd sandbox $ sh ./get_source.sh $ sh ./common/bin/hgforest.sh up -r JDK-8054307-branch $ make configure $ make images !  Command line option to enable/disable feature: -XX:+CompactStrings / -XX:-CompactStrings Interested or Intrigued?
  • 62. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.60 Main Takeaways Raising all three legs of the performance stool is hard, but possible with a lot of non-trivial effort. Reason about the tradeoffs in realizing improvements in one or two of the performance attributes, i.e. understand the alternatives, and realize system capacity may be a criteria that fits in here too.
  • 63. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.61 Acknowledgements !  String Density Team –  Oracle !  Aleksey Shipilev, Sherman Shen, Brent Christian, Roger Riggs, Tobias Hartmann, Vladimir Kozlov, Guy Delemarter –  Intel !  Sandhya Viswanathan, Vivek Deshpande !  Special thanks to Sandhya – joint JavaOne 2015 presentation !  HotSpot GC Engineering Team –  Past and present members
  • 64. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.62
  • 65. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.63
  • 66. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/throughput- latency-memory-footprint