SlideShare une entreprise Scribd logo
1  sur  11
Télécharger pour lire hors ligne
<Insert Picture Here>
Tiered Compilation
Igor Veresov
Goals
• Server performance
• With client startup
• Adaptive policy with minimal or no machine-
dependent tuning: feedback on compilation queue
length as a measure of machine's speed/compilation
speed
Compilation levels
• level 0 - interpreter
• level 1 - C1 with full optimization (no profiling)
• level 2 - C1 with invocation and backedge counters
• level 3 - C1 with full profiling (level 2 + MDO)
• level 4 - C2
• level 3 doesn't do CEE or BE
• level 3 is 35% slower than level 2
Client is hard to beat
• Client compiles when i + b >= 1500 (level 1), needs
no profiling
• Tiered needs to compile in best case:
– level 3 version and profile (code 35% slower)
– compile level 4 version (compilation is slow)
• Only beneficial for workloads when it's possible to
compensate by producing level 4 version fast
• Fortunately most real word apps (and benchmarks)
are like that (run more than a second with high code
reuse factor).
Profiling
• Profiles stored in MethodDataOop (MDO)
• Existing counters used when not profiling(MethodOop)
• Separate counters in MDO (multiple versions can run
concurrently)
• Can profile at levels 0 and 3
• What: branches, call receiver types, typechecks
(checkcast, instanceof, aastore)
• Periodic runtime notifications.
– Invocations: 0:128, 2:2048, 3:1024,
– Backedges: 0:1024, 2:8192, 3:4096
State transitions I
• Starts at level 0
• Ideally needs to transition to level 3
• Scales threshold based on C1 queue length / number
of C1 threads
• May transition to level 2 based on C2 queue length
(spending too much time in level 3 hurts, 30% slower)
• Can start profiling at level 0
State Transitions II
• Profiling: level 3
• Monitors C2 queue length / number of C2 threads and
scales level 4 threshold
• If the method is trivial (small, nothing to profile)
compiles level 1 version immediately
In-queue optimizations
• Prioritization by (rate + 1) * (i + 1) * (b + 1),
rate = d(i + b) / dt
• And methods after deoptimization have advantage
• Stale methods removal
• In-queue level change (3->2).
Common transition patterns
• 0 -> 3 -> 4 (common).
• 0 -> 2 -> 3 -> 4 (C2 queue too long).
• 0 -> (3->2) -> 4 (in queue change).
• 0 -> 3 -> 1 or 0 -> 2 -> 1 (trivial, or can't compile in
C2).
• 0 -> 4 (can't compile in C1, fully profile in interpreter).
• (1,2,3,4) → 0 (deoptimization)
Level switching predicates
• Regular compile:
i > k1 * scale || i > k2 * scale && i + b > k3 * scale
• OSR: b > k4 * scale
• Profile maturity measured the same way
(scale=ProfileMaturityPercentage/100.0 = 0.2)
• Reprofiling support (additional start counters in MDO)
Performance (8 core x86, 1 C1, 2 C2)
Client vs tiered
benchmark: _227_mtrt
startup: 1.857 1.692 diff: 8.88%
settled: 0.5961 0.4107 diff: 31.10%
benchmark: _202_jess
startup: 4.066 3.615 diff: 11.09%
settled: 1.4405 1.2545 diff: 12.91%
benchmark: _201_compress
startup: 4.781 4.467 diff: 6.56%
settled: 3.9605 3.6429 diff: 8.01%
benchmark: _209_db
startup: 9.719 8.863 diff: 8.80%
settled: 6.2362 6.3588 diff: -1.96%
benchmark: _222_mpegaudio
startup: 2.656 2.424 diff: 8.73%
settled: 2.4167 2.2408 diff: 7.27%
benchmark: _228_jack
startup: 3.737 3.339 diff: 10.65%
settled: 1.7389 1.2857 diff: 26.06%
benchmark: _213_javac
startup: 3.714 3.649 diff: 1.75%
settled: 2.0299 1.6375 diff: 19.33%
Server vs tiered
benchmark: _227_mtrt
startup: 2.014 1.692 diff: 15.98%
settled: 0.4234 0.4107 diff: 2.99%
benchmark: _202_jess
startup: 4.633 3.615 diff: 21.97%
settled: 1.3518 1.2545 diff: 7.19%
benchmark: _201_compress
startup: 4.942 4.467 diff: 9.61%
settled: 4.1837 3.6429 diff: 12.92%
benchmark: _209_db
startup: 9.003 8.863 diff: 1.55%
settled: 6.4088 6.3588 diff: 0.78%
benchmark: _222_mpegaudio
startup: 3.035 2.424 diff: 20.13%
settled: 2.2615 2.2408 diff: 0.91%
benchmark: _228_jack
startup: 4.911 3.339 diff: 32.00%
settled: 1.5041 1.2857 diff: 14.52%
benchmark: _213_javac
startup: 5.681 3.649 diff: 35.76%
settled: 1.7092 1.6375 diff: 4.19%
SPECjvm98, each sub-benchmark ran in a fresh JVM for 20 iterations.
startup – first iteration, settled – average of last 10.

Contenu connexe

Tendances

Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Yoshifumi Kawai
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요NAVER D2
 
Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)Prashanth Kumar
 
Intrinsic Methods in HotSpot VM
Intrinsic Methods in HotSpot VMIntrinsic Methods in HotSpot VM
Intrinsic Methods in HotSpot VMKris Mok
 
Java And Multithreading
Java And MultithreadingJava And Multithreading
Java And MultithreadingShraddha
 
Slab Allocator in Linux Kernel
Slab Allocator in Linux KernelSlab Allocator in Linux Kernel
Slab Allocator in Linux KernelAdrian Huang
 
Practical non blocking microservices in java 8
Practical non blocking microservices in java 8Practical non blocking microservices in java 8
Practical non blocking microservices in java 8Michal Balinski
 
Physical Memory Models.pdf
Physical Memory Models.pdfPhysical Memory Models.pdf
Physical Memory Models.pdfAdrian Huang
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovZeroTurnaround
 
C++ Memory Management
C++ Memory ManagementC++ Memory Management
C++ Memory ManagementRahul Jamwal
 
Java multi threading
Java multi threadingJava multi threading
Java multi threadingRaja Sekhar
 
Basics of Java Concurrency
Basics of Java ConcurrencyBasics of Java Concurrency
Basics of Java Concurrencykshanth2101
 
eBPF Perf Tools 2019
eBPF Perf Tools 2019eBPF Perf Tools 2019
eBPF Perf Tools 2019Brendan Gregg
 
Golang 高性能实战
Golang 高性能实战Golang 高性能实战
Golang 高性能实战rfyiamcool
 
Introduction to Kotlin coroutines
Introduction to Kotlin coroutinesIntroduction to Kotlin coroutines
Introduction to Kotlin coroutinesRoman Elizarov
 
Basic of Multithreading in JAva
Basic of Multithreading in JAvaBasic of Multithreading in JAva
Basic of Multithreading in JAvasuraj pandey
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2Chris Ohk
 

Tendances (20)

Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
 
Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)
 
Intrinsic Methods in HotSpot VM
Intrinsic Methods in HotSpot VMIntrinsic Methods in HotSpot VM
Intrinsic Methods in HotSpot VM
 
Java And Multithreading
Java And MultithreadingJava And Multithreading
Java And Multithreading
 
Slab Allocator in Linux Kernel
Slab Allocator in Linux KernelSlab Allocator in Linux Kernel
Slab Allocator in Linux Kernel
 
Practical non blocking microservices in java 8
Practical non blocking microservices in java 8Practical non blocking microservices in java 8
Practical non blocking microservices in java 8
 
Physical Memory Models.pdf
Physical Memory Models.pdfPhysical Memory Models.pdf
Physical Memory Models.pdf
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir Ivanov
 
C++ Memory Management
C++ Memory ManagementC++ Memory Management
C++ Memory Management
 
Java Collections Framework
Java Collections FrameworkJava Collections Framework
Java Collections Framework
 
Java multi threading
Java multi threadingJava multi threading
Java multi threading
 
Basics of Java Concurrency
Basics of Java ConcurrencyBasics of Java Concurrency
Basics of Java Concurrency
 
Java servlets
Java servletsJava servlets
Java servlets
 
eBPF Perf Tools 2019
eBPF Perf Tools 2019eBPF Perf Tools 2019
eBPF Perf Tools 2019
 
Golang 高性能实战
Golang 高性能实战Golang 高性能实战
Golang 高性能实战
 
Threads concept in java
Threads concept in javaThreads concept in java
Threads concept in java
 
Introduction to Kotlin coroutines
Introduction to Kotlin coroutinesIntroduction to Kotlin coroutines
Introduction to Kotlin coroutines
 
Basic of Multithreading in JAva
Basic of Multithreading in JAvaBasic of Multithreading in JAva
Basic of Multithreading in JAva
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 

Similaire à Tiered Compilation in Hotspot JVM

IncQuery-D: Incremental Queries in the Cloud
IncQuery-D: Incremental Queries in the CloudIncQuery-D: Incremental Queries in the Cloud
IncQuery-D: Incremental Queries in the CloudGábor Szárnyas
 
running stable diffusion on android
running stable diffusion on androidrunning stable diffusion on android
running stable diffusion on androidKoan-Sin Tan
 
Application Assessment - Executive Summary Report
Application Assessment - Executive Summary ReportApplication Assessment - Executive Summary Report
Application Assessment - Executive Summary ReportCAST
 
Getting started with RISC-V verification what's next after compliance testing
Getting started with RISC-V verification what's next after compliance testingGetting started with RISC-V verification what's next after compliance testing
Getting started with RISC-V verification what's next after compliance testingRISC-V International
 
CassandraSummit2015_Cassandra upgrades at scale @ NETFLIX
CassandraSummit2015_Cassandra upgrades at scale @ NETFLIXCassandraSummit2015_Cassandra upgrades at scale @ NETFLIX
CassandraSummit2015_Cassandra upgrades at scale @ NETFLIXVinay Kumar Chella
 
Siemens s7 300 programming
Siemens s7 300 programming Siemens s7 300 programming
Siemens s7 300 programming satyajit patra
 
Sista: Improving Cog’s JIT performance
Sista: Improving Cog’s JIT performanceSista: Improving Cog’s JIT performance
Sista: Improving Cog’s JIT performanceESUG
 
Compiler design
Compiler designCompiler design
Compiler designsowfi
 
SOC Application Studies: Image Compression
SOC Application Studies: Image CompressionSOC Application Studies: Image Compression
SOC Application Studies: Image CompressionA B Shinde
 
Incremental Model Queries for Model-Dirven Software Engineering
Incremental Model Queries for Model-Dirven Software EngineeringIncremental Model Queries for Model-Dirven Software Engineering
Incremental Model Queries for Model-Dirven Software EngineeringÁkos Horváth
 
Vieworks - Hybrid TDI Cameras Technology (Wojciech Majewski)
Vieworks - Hybrid TDI Cameras Technology (Wojciech Majewski)Vieworks - Hybrid TDI Cameras Technology (Wojciech Majewski)
Vieworks - Hybrid TDI Cameras Technology (Wojciech Majewski)Charl Fontini
 
Journey to Stability: Petabyte Ceph Cluster in OpenStack Cloud
Journey to Stability: Petabyte Ceph Cluster in OpenStack CloudJourney to Stability: Petabyte Ceph Cluster in OpenStack Cloud
Journey to Stability: Petabyte Ceph Cluster in OpenStack CloudCeph Community
 
Journey to Stability: Petabyte Ceph Cluster in OpenStack Cloud
Journey to Stability: Petabyte Ceph Cluster in OpenStack CloudJourney to Stability: Petabyte Ceph Cluster in OpenStack Cloud
Journey to Stability: Petabyte Ceph Cluster in OpenStack CloudPatrick McGarry
 
Cloud computing_processing frameworks
Cloud computing_processing frameworksCloud computing_processing frameworks
Cloud computing_processing frameworksReem Abdel-Rahman
 
Principal Sources of Optimization in compiler design
Principal Sources of Optimization in compiler design Principal Sources of Optimization in compiler design
Principal Sources of Optimization in compiler design LogsAk
 
Single instruction multiple data
Single instruction multiple dataSingle instruction multiple data
Single instruction multiple dataSyed Zaid Irshad
 
Nokia kpi and_core_optimization
Nokia kpi and_core_optimizationNokia kpi and_core_optimization
Nokia kpi and_core_optimizationdebasish goswami
 

Similaire à Tiered Compilation in Hotspot JVM (20)

IncQuery-D: Incremental Queries in the Cloud
IncQuery-D: Incremental Queries in the CloudIncQuery-D: Incremental Queries in the Cloud
IncQuery-D: Incremental Queries in the Cloud
 
running stable diffusion on android
running stable diffusion on androidrunning stable diffusion on android
running stable diffusion on android
 
Application Assessment - Executive Summary Report
Application Assessment - Executive Summary ReportApplication Assessment - Executive Summary Report
Application Assessment - Executive Summary Report
 
Getting started with RISC-V verification what's next after compliance testing
Getting started with RISC-V verification what's next after compliance testingGetting started with RISC-V verification what's next after compliance testing
Getting started with RISC-V verification what's next after compliance testing
 
ASIC design verification
ASIC design verificationASIC design verification
ASIC design verification
 
CassandraSummit2015_Cassandra upgrades at scale @ NETFLIX
CassandraSummit2015_Cassandra upgrades at scale @ NETFLIXCassandraSummit2015_Cassandra upgrades at scale @ NETFLIX
CassandraSummit2015_Cassandra upgrades at scale @ NETFLIX
 
Siemens s7 300 programming
Siemens s7 300 programming Siemens s7 300 programming
Siemens s7 300 programming
 
Sista: Improving Cog’s JIT performance
Sista: Improving Cog’s JIT performanceSista: Improving Cog’s JIT performance
Sista: Improving Cog’s JIT performance
 
Compiler design
Compiler designCompiler design
Compiler design
 
SOC Application Studies: Image Compression
SOC Application Studies: Image CompressionSOC Application Studies: Image Compression
SOC Application Studies: Image Compression
 
Incremental Model Queries for Model-Dirven Software Engineering
Incremental Model Queries for Model-Dirven Software EngineeringIncremental Model Queries for Model-Dirven Software Engineering
Incremental Model Queries for Model-Dirven Software Engineering
 
Vieworks - Hybrid TDI Cameras Technology (Wojciech Majewski)
Vieworks - Hybrid TDI Cameras Technology (Wojciech Majewski)Vieworks - Hybrid TDI Cameras Technology (Wojciech Majewski)
Vieworks - Hybrid TDI Cameras Technology (Wojciech Majewski)
 
Journey to Stability: Petabyte Ceph Cluster in OpenStack Cloud
Journey to Stability: Petabyte Ceph Cluster in OpenStack CloudJourney to Stability: Petabyte Ceph Cluster in OpenStack Cloud
Journey to Stability: Petabyte Ceph Cluster in OpenStack Cloud
 
Journey to Stability: Petabyte Ceph Cluster in OpenStack Cloud
Journey to Stability: Petabyte Ceph Cluster in OpenStack CloudJourney to Stability: Petabyte Ceph Cluster in OpenStack Cloud
Journey to Stability: Petabyte Ceph Cluster in OpenStack Cloud
 
Cloud computing_processing frameworks
Cloud computing_processing frameworksCloud computing_processing frameworks
Cloud computing_processing frameworks
 
Principal Sources of Optimization in compiler design
Principal Sources of Optimization in compiler design Principal Sources of Optimization in compiler design
Principal Sources of Optimization in compiler design
 
embedded C.pptx
embedded C.pptxembedded C.pptx
embedded C.pptx
 
Java Decompiler
Java DecompilerJava Decompiler
Java Decompiler
 
Single instruction multiple data
Single instruction multiple dataSingle instruction multiple data
Single instruction multiple data
 
Nokia kpi and_core_optimization
Nokia kpi and_core_optimizationNokia kpi and_core_optimization
Nokia kpi and_core_optimization
 

Dernier

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
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
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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
 

Dernier (20)

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
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
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
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...
 

Tiered Compilation in Hotspot JVM

  • 1. <Insert Picture Here> Tiered Compilation Igor Veresov
  • 2. Goals • Server performance • With client startup • Adaptive policy with minimal or no machine- dependent tuning: feedback on compilation queue length as a measure of machine's speed/compilation speed
  • 3. Compilation levels • level 0 - interpreter • level 1 - C1 with full optimization (no profiling) • level 2 - C1 with invocation and backedge counters • level 3 - C1 with full profiling (level 2 + MDO) • level 4 - C2 • level 3 doesn't do CEE or BE • level 3 is 35% slower than level 2
  • 4. Client is hard to beat • Client compiles when i + b >= 1500 (level 1), needs no profiling • Tiered needs to compile in best case: – level 3 version and profile (code 35% slower) – compile level 4 version (compilation is slow) • Only beneficial for workloads when it's possible to compensate by producing level 4 version fast • Fortunately most real word apps (and benchmarks) are like that (run more than a second with high code reuse factor).
  • 5. Profiling • Profiles stored in MethodDataOop (MDO) • Existing counters used when not profiling(MethodOop) • Separate counters in MDO (multiple versions can run concurrently) • Can profile at levels 0 and 3 • What: branches, call receiver types, typechecks (checkcast, instanceof, aastore) • Periodic runtime notifications. – Invocations: 0:128, 2:2048, 3:1024, – Backedges: 0:1024, 2:8192, 3:4096
  • 6. State transitions I • Starts at level 0 • Ideally needs to transition to level 3 • Scales threshold based on C1 queue length / number of C1 threads • May transition to level 2 based on C2 queue length (spending too much time in level 3 hurts, 30% slower) • Can start profiling at level 0
  • 7. State Transitions II • Profiling: level 3 • Monitors C2 queue length / number of C2 threads and scales level 4 threshold • If the method is trivial (small, nothing to profile) compiles level 1 version immediately
  • 8. In-queue optimizations • Prioritization by (rate + 1) * (i + 1) * (b + 1), rate = d(i + b) / dt • And methods after deoptimization have advantage • Stale methods removal • In-queue level change (3->2).
  • 9. Common transition patterns • 0 -> 3 -> 4 (common). • 0 -> 2 -> 3 -> 4 (C2 queue too long). • 0 -> (3->2) -> 4 (in queue change). • 0 -> 3 -> 1 or 0 -> 2 -> 1 (trivial, or can't compile in C2). • 0 -> 4 (can't compile in C1, fully profile in interpreter). • (1,2,3,4) → 0 (deoptimization)
  • 10. Level switching predicates • Regular compile: i > k1 * scale || i > k2 * scale && i + b > k3 * scale • OSR: b > k4 * scale • Profile maturity measured the same way (scale=ProfileMaturityPercentage/100.0 = 0.2) • Reprofiling support (additional start counters in MDO)
  • 11. Performance (8 core x86, 1 C1, 2 C2) Client vs tiered benchmark: _227_mtrt startup: 1.857 1.692 diff: 8.88% settled: 0.5961 0.4107 diff: 31.10% benchmark: _202_jess startup: 4.066 3.615 diff: 11.09% settled: 1.4405 1.2545 diff: 12.91% benchmark: _201_compress startup: 4.781 4.467 diff: 6.56% settled: 3.9605 3.6429 diff: 8.01% benchmark: _209_db startup: 9.719 8.863 diff: 8.80% settled: 6.2362 6.3588 diff: -1.96% benchmark: _222_mpegaudio startup: 2.656 2.424 diff: 8.73% settled: 2.4167 2.2408 diff: 7.27% benchmark: _228_jack startup: 3.737 3.339 diff: 10.65% settled: 1.7389 1.2857 diff: 26.06% benchmark: _213_javac startup: 3.714 3.649 diff: 1.75% settled: 2.0299 1.6375 diff: 19.33% Server vs tiered benchmark: _227_mtrt startup: 2.014 1.692 diff: 15.98% settled: 0.4234 0.4107 diff: 2.99% benchmark: _202_jess startup: 4.633 3.615 diff: 21.97% settled: 1.3518 1.2545 diff: 7.19% benchmark: _201_compress startup: 4.942 4.467 diff: 9.61% settled: 4.1837 3.6429 diff: 12.92% benchmark: _209_db startup: 9.003 8.863 diff: 1.55% settled: 6.4088 6.3588 diff: 0.78% benchmark: _222_mpegaudio startup: 3.035 2.424 diff: 20.13% settled: 2.2615 2.2408 diff: 0.91% benchmark: _228_jack startup: 4.911 3.339 diff: 32.00% settled: 1.5041 1.2857 diff: 14.52% benchmark: _213_javac startup: 5.681 3.649 diff: 35.76% settled: 1.7092 1.6375 diff: 4.19% SPECjvm98, each sub-benchmark ran in a fresh JVM for 20 iterations. startup – first iteration, settled – average of last 10.