SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Enterprise Integration Patterns with Spring integration!
Enterprise Integration Patterns with Spring integration!Enterprise Integration Patterns with Spring integration!
Enterprise Integration Patterns with Spring integration!hegdekiranr
 
Load & Unload Data TO and FROM Snowflake (By Faysal Shaarani)
Load & Unload Data TO and FROM Snowflake (By Faysal Shaarani)Load & Unload Data TO and FROM Snowflake (By Faysal Shaarani)
Load & Unload Data TO and FROM Snowflake (By Faysal Shaarani)Faysal Shaarani (MBA)
 
Less05 asm instance
Less05 asm instanceLess05 asm instance
Less05 asm instanceAmit Bhalla
 
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...Edureka!
 
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)Amazon Web Services Korea
 
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
 
Introduction to couchbase
Introduction to couchbaseIntroduction to couchbase
Introduction to couchbaseDipti Borkar
 
Upgrade to IBM z/OS V2.4 planning
Upgrade to IBM z/OS V2.4 planningUpgrade to IBM z/OS V2.4 planning
Upgrade to IBM z/OS V2.4 planningMarna Walle
 
codecentric AG: CQRS and Event Sourcing Applications with Cassandra
codecentric AG: CQRS and Event Sourcing Applications with Cassandracodecentric AG: CQRS and Event Sourcing Applications with Cassandra
codecentric AG: CQRS and Event Sourcing Applications with CassandraDataStax Academy
 
The Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesThe Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesDatabricks
 
Making Apache Spark Better with Delta Lake
Making Apache Spark Better with Delta LakeMaking Apache Spark Better with Delta Lake
Making Apache Spark Better with Delta LakeDatabricks
 
Integrating NiFi and Flink
Integrating NiFi and FlinkIntegrating NiFi and Flink
Integrating NiFi and FlinkBryan Bende
 
Data Centre Design for Canadian Small & Medium Sized Businesses
Data Centre Design for Canadian Small & Medium Sized BusinessesData Centre Design for Canadian Small & Medium Sized Businesses
Data Centre Design for Canadian Small & Medium Sized BusinessesCisco Canada
 
Introduction to ibm cloud paks concept license and minimum config public
Introduction to ibm cloud paks concept license and minimum config publicIntroduction to ibm cloud paks concept license and minimum config public
Introduction to ibm cloud paks concept license and minimum config publicPetchpaitoon Krungwong
 
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...HostedbyConfluent
 
Migrating your traditional Data Warehouse to a Modern Data Lake
Migrating your traditional Data Warehouse to a Modern Data LakeMigrating your traditional Data Warehouse to a Modern Data Lake
Migrating your traditional Data Warehouse to a Modern Data LakeAmazon Web Services
 
Roadmap For Fusion Middleware Application Server Infrastructure
Roadmap For Fusion Middleware Application Server InfrastructureRoadmap For Fusion Middleware Application Server Infrastructure
Roadmap For Fusion Middleware Application Server InfrastructureOracleContractors
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.NAVER D2
 

Tendances (20)

Enterprise Integration Patterns with Spring integration!
Enterprise Integration Patterns with Spring integration!Enterprise Integration Patterns with Spring integration!
Enterprise Integration Patterns with Spring integration!
 
Load & Unload Data TO and FROM Snowflake (By Faysal Shaarani)
Load & Unload Data TO and FROM Snowflake (By Faysal Shaarani)Load & Unload Data TO and FROM Snowflake (By Faysal Shaarani)
Load & Unload Data TO and FROM Snowflake (By Faysal Shaarani)
 
Less05 asm instance
Less05 asm instanceLess05 asm instance
Less05 asm instance
 
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...
 
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
 
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
 
Introduction to couchbase
Introduction to couchbaseIntroduction to couchbase
Introduction to couchbase
 
Upgrade to IBM z/OS V2.4 planning
Upgrade to IBM z/OS V2.4 planningUpgrade to IBM z/OS V2.4 planning
Upgrade to IBM z/OS V2.4 planning
 
codecentric AG: CQRS and Event Sourcing Applications with Cassandra
codecentric AG: CQRS and Event Sourcing Applications with Cassandracodecentric AG: CQRS and Event Sourcing Applications with Cassandra
codecentric AG: CQRS and Event Sourcing Applications with Cassandra
 
The Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesThe Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization Opportunities
 
Making Apache Spark Better with Delta Lake
Making Apache Spark Better with Delta LakeMaking Apache Spark Better with Delta Lake
Making Apache Spark Better with Delta Lake
 
Apache Spark Overview
Apache Spark OverviewApache Spark Overview
Apache Spark Overview
 
Integrating NiFi and Flink
Integrating NiFi and FlinkIntegrating NiFi and Flink
Integrating NiFi and Flink
 
Data Centre Design for Canadian Small & Medium Sized Businesses
Data Centre Design for Canadian Small & Medium Sized BusinessesData Centre Design for Canadian Small & Medium Sized Businesses
Data Centre Design for Canadian Small & Medium Sized Businesses
 
Introduction to ibm cloud paks concept license and minimum config public
Introduction to ibm cloud paks concept license and minimum config publicIntroduction to ibm cloud paks concept license and minimum config public
Introduction to ibm cloud paks concept license and minimum config public
 
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
 
Migrating your traditional Data Warehouse to a Modern Data Lake
Migrating your traditional Data Warehouse to a Modern Data LakeMigrating your traditional Data Warehouse to a Modern Data Lake
Migrating your traditional Data Warehouse to a Modern Data Lake
 
Roadmap For Fusion Middleware Application Server Infrastructure
Roadmap For Fusion Middleware Application Server InfrastructureRoadmap For Fusion Middleware Application Server Infrastructure
Roadmap For Fusion Middleware Application Server Infrastructure
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
 
Introduction to Dremio
Introduction to DremioIntroduction to Dremio
Introduction to Dremio
 

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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]
 

Plus de 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
 

Plus de 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
 

Dernier

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
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
 
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
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
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
 

Dernier (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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?
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 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
 
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
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
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
 

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