SlideShare uma empresa Scribd logo
1 de 27
JVM Ergonomics for
Containers and
Kubernetes
Understand impact of resource constraints in the JVM
Bruno Borges
Microsoft Developer Division
Java Engineering Group (JEG), July 2022
DevDiv Java Engineering Group
Agenda
JVM inside Containers and on Kubernetes: what you must know!
• JVM Ergonomics
• Understand the default values of the JVM
• How the amount of memory and CPU impacts selection of Garbage Collector
• JVM Garbage Collectors
• Recommendations for better starting points in Cloud native applications
• How to tune GCs
• Java on Kubernetes
• Recommended starting points
• Topologies
• Conclusion
JVM Ergonomics
Survey Summary (150 ppl)
• Most devs are deploying JVM
workloads in containers with:
• Up to 4 CPUs (65%)
• Up to 4 GB RAM (65%)
• I/O intensive (50%)
• Overall
• Up to 2 GB (48%)
• Up to 3 CPUs (50%)
65% of ppl
DevDiv Java Engineering Group
JVM Ergonomics
• APM Partner
• Millions of production JVMs analysed
• Majority with 1 CPU
• Majority with 1GB or less RAM
• Majority with GC not configured
• Typical ‘fixes’ to Perf issues:
• Increase heap size
• More replicas
• Migration to another stack
• Ultimately, increased COGS
DevDiv Java Engineering Group
JVM Ergonomics
Default settings when no GC is specified.
• HotSpot JVM / OpenJDK
• Java 11 or later
• SerialGC or G1GC
• Java 8
• SerialGC or ParallelGC
• Default GC
• Serial GC
• G1GC if:
• 2+ processors and
• 1792MB or more
memory available
DevDiv Java Engineering Group
Warning
• JDK 11 has an issue with cgroups v2
• Does not respect memory limits
• Fix coming on OpenJDK 11 update in July 2022
• Red Hat, Corretto, Microsoft, Temurin, etc
• Other vendors may or may not have patched already
• Works fine with OpenJDK 17
DevDiv Java Engineering Group
JVM Ergonomics Demo
JVM Garbage Collectors
DevDiv Java Engineering Group
Garbage Collectors
Recommendations
Serial Parallel G1 Z Shenandoah
Number of cores 1 2+ 2+ 2+ 2+
Multi-threaded No Yes Yes Yes Yes
Java Heap size <4GBytes <4Gbytes >4GBytes >4GBytes >4GBytes
Pause Yes Yes Yes Yes (<1ms) Yes (<10ms)
Overhead Minimal Minimal Moderate Moderate Moderate
Tail-latency Effect High High High Low Moderate
JDK version All All JDK 8+ JDK 17+ JDK 11+
Best for Single core, small
heaps
Multi-core small
heaps.
Batch jobs, with any
heap size.
Responsive in
medium to large
heaps (request-
response/DB
interactions)
responsive in medium to
large heaps (request-
response/DB
interactions)
responsive in
medium to large
heaps (request-
response/DB
interactions)
DevDiv Java Engineering Group
What to know
• Poorly tuned GC leads to
• High pause times
• High % of time spent pausing
• Starvation of threads
• OutOfMemoryError (OOME)
• Tuning GC is worth
• Performance gains lead to Cost savings
• Setting Heap size is not enough
• Understanding the workload is key
• Select appropriate Garbage Collector
• Enough CPUs
• Performance requirements and SLAs
• The JVM Heap
• Contiguous block of memory
• Entire space is reserved
• Only some space is allocated
• Broken up into different areas or regions
• Object Creation / Removal
• Objects are created by application
(mutator) threads
• Objects are removed or relocated by
Garbage Collection
DevDiv Java Engineering Group
Heap Size Configuration
• Manually configure Heap
• -Xmx
• Set value in MB: 256m
• Set value in GB: 2g
• Great for well-sized workloads
• -XX:MaxRAMPercentage
• Set value in percentage: 75
• Great for workloads to be scaled
along container memory limits
• Default Ergonomics (Heap)
• Inside containers is 1/4 available memory.
• Outside containers is 1/64 available memory.
• Recommended starting point
• Servers
• Set to whatever the application needs
• Containers
• Set to whatever the application needs but
no more than 75% of container memory
limit
DevDiv Java Engineering Group
“[GC] Tuning is basically trying to
optimize this [object] moving as
‘move as little as possible as late
as possible so as to not disturb the
flow.’”
Monica Beckwith
Principal Software Engineer
Microsoft Java Engineering Group
Watch Monica’s Tuning and Optimizing Java
Garbage Collection (infoq.com)
JVM Ergonomics and GCs – Summary
Java 11+ - OpenJDK Ergonomics will use, by default, SerialGC or G1GC
• G1GC only when 2+ available processors and 1792+ MB available memory – regardless of heap size.
• SerialGC otherwise.
ParallelGC in general outperforms G1GC for smaller heaps
• Up to 4GB, ParallelGC performs better as a throughput GC.
• Between 2-4GB, ParallelGC may still perform better for throughput, but G1GC could be considered.
• ParallelGC still triggers Stop the World (StW), impacting in latency on tail performance.
Heap size not being properly dimensioned for containers by Ergonomics
• Default ergonomics will allocate 1/4 of available memory when inside containers, and 1/64 if not in
container.
• Make sure a heap size is defined, either with -Xmx or with -XX:MaxRAMPercentage. Allocate at least 75%.
Java on Kubernetes
DevDiv Java Engineering Group
Kubernetes CPU Throttling
How it impacts the JVM
• CPU requests on Kubernetes are for CPU time
• “1000m” does NOT mean a single vCPU, or core.
• “1000m” means the application can consume a full CPU cycle per period.
• “1000m” allows an application with multiple threads to run in parallel.
• When all threads combined consume “1000m” in CPU time, the application is throttled.
Example
• Thread A spends 400m; Thread B spends 500m. Thread C spends 100m.
• App now must wait 500m for the next cycle.
• Java applications are, in general, multi-threaded
• Concurrent GCs will have their own threads.
• Web apps and REST/gRPC microservices will have their own threads.
• Database Connection Pools will have their own threads.
DevDiv Java Engineering Group
CPU 1
CPU 2
CPU 3
CPU 4
CPU Throttling
How the JVM is throttled on Kubernetes
Java Virtual Machine
Garbage
Collector
GC
Thread
GC
Thread
GC
Thread
Application
HTTP
Request
HTTP
Request
HTTP
Request
HTTP
Request
HTTP
Request
HTTP
Request
• Each request: 200m
CPU Limit: 1000m
• Remaining CPU time: 200m
Remaining CFS Period: 100ms
• GC Work (total): 200m
80ms
• Remaining CPU time: 0m 60ms
Application throttled for 60ms
DevDiv Java Engineering Group
JVM on Kubernetes
• Trick the JVM
• Limit may be 1000m, but you may still tell
the JVM it can use 2 or more processors!
• Use this flag:
-XX:ActiveProcessorCount
• JVM Available Processors
• Up to 1000m: 1 proc
• 1001-2000m: 2 procs
• 2001-3000m: 3 procs
• …
DevDiv Java Engineering Group
Kubernetes: Better Starting Points
Recommendations to follow instead of JVM Ergonomics
CPU Limits
Up to 1000m
Not recommended <2GB or >4GB
ParallelGC 2 to 4GB
2000m
ParallelGC Up to 4GB
G1GC More than 4GB
4000m
G1GC More than 4GB
ZGC, Shenandoah 4GB to 32GB
ZGC 32GB or more
With 1000m or less, set:
--XX:ActiveProcessorCount=2
Memory Limits
JVM Heap at 75%
DevDiv Java Engineering Group
Benchmark
Latency: lower is better. Throughput: higher is better.
Latency
Throughout
github.com/brunoborges/aks-jvm-benchmark
DevDiv Java Engineering Group
Azure Kubernetes Cluster
Short but wide – 6 x 4 = 24 vCPUs
VM 1
vCPU
vCPU
vCPU
vCPU
VM 2
vCPU
vCPU
vCPU
vCPU
VM 3
vCPU
vCPU
vCPU
vCPU
VM 4 VM 5 VM 6
Control
• D4 v3 VM $0.192/hour
• 4 vCPU
• 16 GB
• JVM
• 1 vCPU
• 2 GB RAM
• Garbage Collector selected by Ergonomics:
• Serial GC
• Concurrent/Parallel GCs won’t be effective
• Constant CPU Throttling on each JVM
• Constant Stop-the-World by GC
• High latency, low throughput
JVM
JVM
JVM
Control
JVM
JVM
JVM
Control
JVM
JVM
JVM
vCPU
vCPU
vCPU
vCPU
Control
JVM
JVM
JVM
vCPU
vCPU
vCPU
vCPU
JVM
JVM
JVM
JVM
vCPU
vCPU
vCPU
vCPU
JVM
JVM
JVM
JVM
• Total Resources Consumed
• 18 JVMs replicas
• 18 vCPUs
• 36 GB of RAM (of 96)
Estimate: $840.96
DevDiv Java Engineering Group
Azure Kubernetes Cluster
Tall but narrow – 3 x 8 = 24 vCPUs
VM 1 VM 2 VM 3
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
JVM JVM JVM
• D8 v3 VM $0.384/hour
• 8 vCPUs
• 32 GB
• JVM
• 8 GB RAM
• 4 vCPUs
• Total Resources Consumed
• 12 vCPUs
• 24 GB of RAM (of 96)
• Garbage Collector (recommended):
• G1GC
• Benefits
• CPU Throttling unlikely
• Lower latency, higher throughput
vCPU
vCPU
vCPU
vCPU
vCPU
vCPU
Control Control Control
Savings:
- 9 vCPUs on standby
- 72 GB of RAM on standby
Estimate: $840.96 (same cost)
DevDiv Java Engineering Group
A/B Routing Multiple Topologies
Monitor the topologies for resource consumption, latency, and throughput.
Load Balancer
Topology A
Smaller JVMs
Multiple replicas
Topology B
Larger JVMs
Lesser replicas
DevDiv Java Engineering Group
Steps to Address Perf Issues
Optimize runtime for the workload
• Understand Your Tech Stack
• Understand how the runtime responds to workloads
• Understand JVM Ergonomics
• Understand JVM Garbage Collectors
• Observe and Analyze
• Monitor with Azure App Insights and other APM solutions
• Analyze JVM data with JDK Flight Recorder (JFR) and Microsoft JFR Streaming
• Analyze Garbage Collection logs with GC analyzers and Microsoft GCToolKit
• Reorganize existing resources
• Consume the same amount of resources
• Increase the performance
• Maintain or reduce the cost
DevDiv Java Engineering Group
Conclusion
Java on Kubernetes scaling
• Different workloads may need different topologies
• Scaling out with more replicas is not a silver bullet for performance increase
• Give more resources to JVMs in the beginning
• Lesser replicas, more CPU/memory
• Start with Parallel GC for smaller heaps
• Avoid JVM default ergonomics
• Ensure you know which GC is being used
• Increase performance by understanding bottlenecks
• Analyse JFR data
• Analyse GC logs
• Scale out, and up, as needed
The End
Microsoft Developer Division
Java Engineering Group (JEG)

Mais conteúdo relacionado

Mais procurados

From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.Taras Matyashovsky
 
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...Monica Beckwith
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaJiangjie Qin
 
High Performance, Scalable MongoDB in a Bare Metal Cloud
High Performance, Scalable MongoDB in a Bare Metal CloudHigh Performance, Scalable MongoDB in a Bare Metal Cloud
High Performance, Scalable MongoDB in a Bare Metal CloudMongoDB
 
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...GetInData
 
ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리confluent
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & FeaturesDataStax Academy
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBrendan Gregg
 
Solving PostgreSQL wicked problems
Solving PostgreSQL wicked problemsSolving PostgreSQL wicked problems
Solving PostgreSQL wicked problemsAlexander Korotkov
 
Performance Tuning RocksDB for Kafka Streams’ State Stores
Performance Tuning RocksDB for Kafka Streams’ State StoresPerformance Tuning RocksDB for Kafka Streams’ State Stores
Performance Tuning RocksDB for Kafka Streams’ State Storesconfluent
 
Redis for duplicate detection on real time stream
Redis for duplicate detection on real time streamRedis for duplicate detection on real time stream
Redis for duplicate detection on real time streamRoberto Franchini
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsBrendan Gregg
 
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...ScyllaDB
 
Evening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in FlinkEvening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in FlinkFlink Forward
 
Spark performance tuning - Maksud Ibrahimov
Spark performance tuning - Maksud IbrahimovSpark performance tuning - Maksud Ibrahimov
Spark performance tuning - Maksud IbrahimovMaksud Ibrahimov
 
Spring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformSpring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformVMware Tanzu
 
Nginx Reverse Proxy with Kafka.pptx
Nginx Reverse Proxy with Kafka.pptxNginx Reverse Proxy with Kafka.pptx
Nginx Reverse Proxy with Kafka.pptxwonyong hwang
 
How to Build a Scylla Database Cluster that Fits Your Needs
How to Build a Scylla Database Cluster that Fits Your NeedsHow to Build a Scylla Database Cluster that Fits Your Needs
How to Build a Scylla Database Cluster that Fits Your NeedsScyllaDB
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요Jo Hoon
 

Mais procurados (20)

From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache Kafka
 
High Performance, Scalable MongoDB in a Bare Metal Cloud
High Performance, Scalable MongoDB in a Bare Metal CloudHigh Performance, Scalable MongoDB in a Bare Metal Cloud
High Performance, Scalable MongoDB in a Bare Metal Cloud
 
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
 
ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & Features
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame Graphs
 
Solving PostgreSQL wicked problems
Solving PostgreSQL wicked problemsSolving PostgreSQL wicked problems
Solving PostgreSQL wicked problems
 
Performance Tuning RocksDB for Kafka Streams’ State Stores
Performance Tuning RocksDB for Kafka Streams’ State StoresPerformance Tuning RocksDB for Kafka Streams’ State Stores
Performance Tuning RocksDB for Kafka Streams’ State Stores
 
Redis for duplicate detection on real time stream
Redis for duplicate detection on real time streamRedis for duplicate detection on real time stream
Redis for duplicate detection on real time stream
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...
 
Evening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in FlinkEvening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in Flink
 
Spark performance tuning - Maksud Ibrahimov
Spark performance tuning - Maksud IbrahimovSpark performance tuning - Maksud Ibrahimov
Spark performance tuning - Maksud Ibrahimov
 
Spring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformSpring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise Platform
 
Nginx Reverse Proxy with Kafka.pptx
Nginx Reverse Proxy with Kafka.pptxNginx Reverse Proxy with Kafka.pptx
Nginx Reverse Proxy with Kafka.pptx
 
How to Build a Scylla Database Cluster that Fits Your Needs
How to Build a Scylla Database Cluster that Fits Your NeedsHow to Build a Scylla Database Cluster that Fits Your Needs
How to Build a Scylla Database Cluster that Fits Your Needs
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
Gradle
GradleGradle
Gradle
 

Semelhante a [Outdated] Secrets of Performance Tuning Java on Kubernetes

Introduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission ControlIntroduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission ControlLeon Chen
 
Sizing MongoDB on AWS with Wired Tiger-Patrick and Vigyan-Final
Sizing MongoDB on AWS with Wired Tiger-Patrick and Vigyan-FinalSizing MongoDB on AWS with Wired Tiger-Patrick and Vigyan-Final
Sizing MongoDB on AWS with Wired Tiger-Patrick and Vigyan-FinalVigyan Jain
 
Memory Management: What You Need to Know When Moving to Java 8
Memory Management: What You Need to Know When Moving to Java 8Memory Management: What You Need to Know When Moving to Java 8
Memory Management: What You Need to Know When Moving to Java 8AppDynamics
 
淺談 Java GC 原理、調教和 新發展
淺談 Java GC 原理、調教和新發展淺談 Java GC 原理、調教和新發展
淺談 Java GC 原理、調教和 新發展Leon Chen
 
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»Вячеслав Блинов «Java Garbage Collection: A Performance Impact»
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»Anna Shymchenko
 
DevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on KubernetesDevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on KubernetesDinakar Guniguntala
 
State of Java Elasticity. Tuning Java Efficiency - GIDS.JAVA LIVE 2020
State of Java Elasticity. Tuning Java Efficiency - GIDS.JAVA LIVE 2020State of Java Elasticity. Tuning Java Efficiency - GIDS.JAVA LIVE 2020
State of Java Elasticity. Tuning Java Efficiency - GIDS.JAVA LIVE 2020Jelastic Multi-Cloud PaaS
 
JITServerTalk JCON World 2023.pdf
JITServerTalk JCON World 2023.pdfJITServerTalk JCON World 2023.pdf
JITServerTalk JCON World 2023.pdfRichHagarty
 
Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph Ceph Community
 
Jvm problem diagnostics
Jvm problem diagnosticsJvm problem diagnostics
Jvm problem diagnosticsDanijel Mitar
 
Optimizing your java applications for multi core hardware
Optimizing your java applications for multi core hardwareOptimizing your java applications for multi core hardware
Optimizing your java applications for multi core hardwareIndicThreads
 
Accelerating HBase with NVMe and Bucket Cache
Accelerating HBase with NVMe and Bucket CacheAccelerating HBase with NVMe and Bucket Cache
Accelerating HBase with NVMe and Bucket CacheNicolas Poggi
 
How Ceph performs on ARM Microserver Cluster
How Ceph performs on ARM Microserver ClusterHow Ceph performs on ARM Microserver Cluster
How Ceph performs on ARM Microserver ClusterAaron Joue
 
Towards "write once - run whenever possible" with Safety Critical Java af Ben...
Towards "write once - run whenever possible" with Safety Critical Java af Ben...Towards "write once - run whenever possible" with Safety Critical Java af Ben...
Towards "write once - run whenever possible" with Safety Critical Java af Ben...InfinIT - Innovationsnetværket for it
 
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»Вячеслав Блинов «Java Garbage Collection: A Performance Impact»
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»Anna Shymchenko
 
Memory, Big Data, NoSQL and Virtualization
Memory, Big Data, NoSQL and VirtualizationMemory, Big Data, NoSQL and Virtualization
Memory, Big Data, NoSQL and VirtualizationBigstep
 

Semelhante a [Outdated] Secrets of Performance Tuning Java on Kubernetes (20)

Introduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission ControlIntroduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission Control
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuning
 
Basics of JVM Tuning
Basics of JVM TuningBasics of JVM Tuning
Basics of JVM Tuning
 
ZGC-SnowOne.pdf
ZGC-SnowOne.pdfZGC-SnowOne.pdf
ZGC-SnowOne.pdf
 
Sizing MongoDB on AWS with Wired Tiger-Patrick and Vigyan-Final
Sizing MongoDB on AWS with Wired Tiger-Patrick and Vigyan-FinalSizing MongoDB on AWS with Wired Tiger-Patrick and Vigyan-Final
Sizing MongoDB on AWS with Wired Tiger-Patrick and Vigyan-Final
 
Memory Management: What You Need to Know When Moving to Java 8
Memory Management: What You Need to Know When Moving to Java 8Memory Management: What You Need to Know When Moving to Java 8
Memory Management: What You Need to Know When Moving to Java 8
 
淺談 Java GC 原理、調教和 新發展
淺談 Java GC 原理、調教和新發展淺談 Java GC 原理、調教和新發展
淺談 Java GC 原理、調教和 新發展
 
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»Вячеслав Блинов «Java Garbage Collection: A Performance Impact»
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»
 
DevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on KubernetesDevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on Kubernetes
 
State of Java Elasticity. Tuning Java Efficiency - GIDS.JAVA LIVE 2020
State of Java Elasticity. Tuning Java Efficiency - GIDS.JAVA LIVE 2020State of Java Elasticity. Tuning Java Efficiency - GIDS.JAVA LIVE 2020
State of Java Elasticity. Tuning Java Efficiency - GIDS.JAVA LIVE 2020
 
JITServerTalk JCON World 2023.pdf
JITServerTalk JCON World 2023.pdfJITServerTalk JCON World 2023.pdf
JITServerTalk JCON World 2023.pdf
 
JVM Magic
JVM MagicJVM Magic
JVM Magic
 
Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph
 
Jvm problem diagnostics
Jvm problem diagnosticsJvm problem diagnostics
Jvm problem diagnostics
 
Optimizing your java applications for multi core hardware
Optimizing your java applications for multi core hardwareOptimizing your java applications for multi core hardware
Optimizing your java applications for multi core hardware
 
Accelerating HBase with NVMe and Bucket Cache
Accelerating HBase with NVMe and Bucket CacheAccelerating HBase with NVMe and Bucket Cache
Accelerating HBase with NVMe and Bucket Cache
 
How Ceph performs on ARM Microserver Cluster
How Ceph performs on ARM Microserver ClusterHow Ceph performs on ARM Microserver Cluster
How Ceph performs on ARM Microserver Cluster
 
Towards "write once - run whenever possible" with Safety Critical Java af Ben...
Towards "write once - run whenever possible" with Safety Critical Java af Ben...Towards "write once - run whenever possible" with Safety Critical Java af Ben...
Towards "write once - run whenever possible" with Safety Critical Java af Ben...
 
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»Вячеслав Блинов «Java Garbage Collection: A Performance Impact»
Вячеслав Блинов «Java Garbage Collection: A Performance Impact»
 
Memory, Big Data, NoSQL and Virtualization
Memory, Big Data, NoSQL and VirtualizationMemory, Big Data, NoSQL and Virtualization
Memory, Big Data, NoSQL and Virtualization
 

Mais de Bruno Borges

From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsFrom GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsBruno Borges
 
Making Sense of Serverless Computing
Making Sense of Serverless ComputingMaking Sense of Serverless Computing
Making Sense of Serverless ComputingBruno Borges
 
Visual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring DevelopersVisual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring DevelopersBruno Borges
 
Taking Spring Apps for a Spin on Microsoft Azure Cloud
Taking Spring Apps for a Spin on Microsoft Azure CloudTaking Spring Apps for a Spin on Microsoft Azure Cloud
Taking Spring Apps for a Spin on Microsoft Azure CloudBruno Borges
 
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...Bruno Borges
 
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemMelhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemBruno Borges
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemBruno Borges
 
Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudBruno Borges
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXBruno Borges
 
Servidores de Aplicação: Por quê ainda precisamos deles?
Servidores de Aplicação: Por quê ainda precisamos deles?Servidores de Aplicação: Por quê ainda precisamos deles?
Servidores de Aplicação: Por quê ainda precisamos deles?Bruno Borges
 
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]Bruno Borges
 
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]Bruno Borges
 
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]Bruno Borges
 
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]Bruno Borges
 
Running Oracle WebLogic on Docker Containers [BOF7537]
Running Oracle WebLogic on Docker Containers [BOF7537]Running Oracle WebLogic on Docker Containers [BOF7537]
Running Oracle WebLogic on Docker Containers [BOF7537]Bruno Borges
 
Lightweight Java in the Cloud
Lightweight Java in the CloudLightweight Java in the Cloud
Lightweight Java in the CloudBruno Borges
 
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFXTweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFXBruno Borges
 
Integrando Oracle BPM com Java EE e WebSockets
Integrando Oracle BPM com Java EE e WebSocketsIntegrando Oracle BPM com Java EE e WebSockets
Integrando Oracle BPM com Java EE e WebSocketsBruno Borges
 
The Developers Conference 2014 - Oracle Keynote
The Developers Conference 2014 - Oracle KeynoteThe Developers Conference 2014 - Oracle Keynote
The Developers Conference 2014 - Oracle KeynoteBruno Borges
 
Crie Aplicações Mobile Híbridas Escritas em Java, para iOS e Android
Crie Aplicações Mobile Híbridas Escritas em Java, para iOS e AndroidCrie Aplicações Mobile Híbridas Escritas em Java, para iOS e Android
Crie Aplicações Mobile Híbridas Escritas em Java, para iOS e AndroidBruno Borges
 

Mais de Bruno Borges (20)

From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsFrom GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
 
Making Sense of Serverless Computing
Making Sense of Serverless ComputingMaking Sense of Serverless Computing
Making Sense of Serverless Computing
 
Visual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring DevelopersVisual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring Developers
 
Taking Spring Apps for a Spin on Microsoft Azure Cloud
Taking Spring Apps for a Spin on Microsoft Azure CloudTaking Spring Apps for a Spin on Microsoft Azure Cloud
Taking Spring Apps for a Spin on Microsoft Azure Cloud
 
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
 
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemMelhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na Nuvem
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
 
Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The Cloud
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFX
 
Servidores de Aplicação: Por quê ainda precisamos deles?
Servidores de Aplicação: Por quê ainda precisamos deles?Servidores de Aplicação: Por quê ainda precisamos deles?
Servidores de Aplicação: Por quê ainda precisamos deles?
 
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
 
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
 
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
 
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
 
Running Oracle WebLogic on Docker Containers [BOF7537]
Running Oracle WebLogic on Docker Containers [BOF7537]Running Oracle WebLogic on Docker Containers [BOF7537]
Running Oracle WebLogic on Docker Containers [BOF7537]
 
Lightweight Java in the Cloud
Lightweight Java in the CloudLightweight Java in the Cloud
Lightweight Java in the Cloud
 
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFXTweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
 
Integrando Oracle BPM com Java EE e WebSockets
Integrando Oracle BPM com Java EE e WebSocketsIntegrando Oracle BPM com Java EE e WebSockets
Integrando Oracle BPM com Java EE e WebSockets
 
The Developers Conference 2014 - Oracle Keynote
The Developers Conference 2014 - Oracle KeynoteThe Developers Conference 2014 - Oracle Keynote
The Developers Conference 2014 - Oracle Keynote
 
Crie Aplicações Mobile Híbridas Escritas em Java, para iOS e Android
Crie Aplicações Mobile Híbridas Escritas em Java, para iOS e AndroidCrie Aplicações Mobile Híbridas Escritas em Java, para iOS e Android
Crie Aplicações Mobile Híbridas Escritas em Java, para iOS e Android
 

Último

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durbanmasabamasaba
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburgmasabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 

Último (20)

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 

[Outdated] Secrets of Performance Tuning Java on Kubernetes

  • 1. JVM Ergonomics for Containers and Kubernetes Understand impact of resource constraints in the JVM Bruno Borges Microsoft Developer Division Java Engineering Group (JEG), July 2022
  • 2. DevDiv Java Engineering Group Agenda JVM inside Containers and on Kubernetes: what you must know! • JVM Ergonomics • Understand the default values of the JVM • How the amount of memory and CPU impacts selection of Garbage Collector • JVM Garbage Collectors • Recommendations for better starting points in Cloud native applications • How to tune GCs • Java on Kubernetes • Recommended starting points • Topologies • Conclusion
  • 4.
  • 5. Survey Summary (150 ppl) • Most devs are deploying JVM workloads in containers with: • Up to 4 CPUs (65%) • Up to 4 GB RAM (65%) • I/O intensive (50%) • Overall • Up to 2 GB (48%) • Up to 3 CPUs (50%) 65% of ppl
  • 6. DevDiv Java Engineering Group JVM Ergonomics • APM Partner • Millions of production JVMs analysed • Majority with 1 CPU • Majority with 1GB or less RAM • Majority with GC not configured • Typical ‘fixes’ to Perf issues: • Increase heap size • More replicas • Migration to another stack • Ultimately, increased COGS
  • 7. DevDiv Java Engineering Group JVM Ergonomics Default settings when no GC is specified. • HotSpot JVM / OpenJDK • Java 11 or later • SerialGC or G1GC • Java 8 • SerialGC or ParallelGC • Default GC • Serial GC • G1GC if: • 2+ processors and • 1792MB or more memory available
  • 8. DevDiv Java Engineering Group Warning • JDK 11 has an issue with cgroups v2 • Does not respect memory limits • Fix coming on OpenJDK 11 update in July 2022 • Red Hat, Corretto, Microsoft, Temurin, etc • Other vendors may or may not have patched already • Works fine with OpenJDK 17
  • 9. DevDiv Java Engineering Group JVM Ergonomics Demo
  • 11. DevDiv Java Engineering Group Garbage Collectors Recommendations Serial Parallel G1 Z Shenandoah Number of cores 1 2+ 2+ 2+ 2+ Multi-threaded No Yes Yes Yes Yes Java Heap size <4GBytes <4Gbytes >4GBytes >4GBytes >4GBytes Pause Yes Yes Yes Yes (<1ms) Yes (<10ms) Overhead Minimal Minimal Moderate Moderate Moderate Tail-latency Effect High High High Low Moderate JDK version All All JDK 8+ JDK 17+ JDK 11+ Best for Single core, small heaps Multi-core small heaps. Batch jobs, with any heap size. Responsive in medium to large heaps (request- response/DB interactions) responsive in medium to large heaps (request- response/DB interactions) responsive in medium to large heaps (request- response/DB interactions)
  • 12. DevDiv Java Engineering Group What to know • Poorly tuned GC leads to • High pause times • High % of time spent pausing • Starvation of threads • OutOfMemoryError (OOME) • Tuning GC is worth • Performance gains lead to Cost savings • Setting Heap size is not enough • Understanding the workload is key • Select appropriate Garbage Collector • Enough CPUs • Performance requirements and SLAs • The JVM Heap • Contiguous block of memory • Entire space is reserved • Only some space is allocated • Broken up into different areas or regions • Object Creation / Removal • Objects are created by application (mutator) threads • Objects are removed or relocated by Garbage Collection
  • 13. DevDiv Java Engineering Group Heap Size Configuration • Manually configure Heap • -Xmx • Set value in MB: 256m • Set value in GB: 2g • Great for well-sized workloads • -XX:MaxRAMPercentage • Set value in percentage: 75 • Great for workloads to be scaled along container memory limits • Default Ergonomics (Heap) • Inside containers is 1/4 available memory. • Outside containers is 1/64 available memory. • Recommended starting point • Servers • Set to whatever the application needs • Containers • Set to whatever the application needs but no more than 75% of container memory limit
  • 14. DevDiv Java Engineering Group “[GC] Tuning is basically trying to optimize this [object] moving as ‘move as little as possible as late as possible so as to not disturb the flow.’” Monica Beckwith Principal Software Engineer Microsoft Java Engineering Group Watch Monica’s Tuning and Optimizing Java Garbage Collection (infoq.com)
  • 15. JVM Ergonomics and GCs – Summary Java 11+ - OpenJDK Ergonomics will use, by default, SerialGC or G1GC • G1GC only when 2+ available processors and 1792+ MB available memory – regardless of heap size. • SerialGC otherwise. ParallelGC in general outperforms G1GC for smaller heaps • Up to 4GB, ParallelGC performs better as a throughput GC. • Between 2-4GB, ParallelGC may still perform better for throughput, but G1GC could be considered. • ParallelGC still triggers Stop the World (StW), impacting in latency on tail performance. Heap size not being properly dimensioned for containers by Ergonomics • Default ergonomics will allocate 1/4 of available memory when inside containers, and 1/64 if not in container. • Make sure a heap size is defined, either with -Xmx or with -XX:MaxRAMPercentage. Allocate at least 75%.
  • 17. DevDiv Java Engineering Group Kubernetes CPU Throttling How it impacts the JVM • CPU requests on Kubernetes are for CPU time • “1000m” does NOT mean a single vCPU, or core. • “1000m” means the application can consume a full CPU cycle per period. • “1000m” allows an application with multiple threads to run in parallel. • When all threads combined consume “1000m” in CPU time, the application is throttled. Example • Thread A spends 400m; Thread B spends 500m. Thread C spends 100m. • App now must wait 500m for the next cycle. • Java applications are, in general, multi-threaded • Concurrent GCs will have their own threads. • Web apps and REST/gRPC microservices will have their own threads. • Database Connection Pools will have their own threads.
  • 18. DevDiv Java Engineering Group CPU 1 CPU 2 CPU 3 CPU 4 CPU Throttling How the JVM is throttled on Kubernetes Java Virtual Machine Garbage Collector GC Thread GC Thread GC Thread Application HTTP Request HTTP Request HTTP Request HTTP Request HTTP Request HTTP Request • Each request: 200m CPU Limit: 1000m • Remaining CPU time: 200m Remaining CFS Period: 100ms • GC Work (total): 200m 80ms • Remaining CPU time: 0m 60ms Application throttled for 60ms
  • 19. DevDiv Java Engineering Group JVM on Kubernetes • Trick the JVM • Limit may be 1000m, but you may still tell the JVM it can use 2 or more processors! • Use this flag: -XX:ActiveProcessorCount • JVM Available Processors • Up to 1000m: 1 proc • 1001-2000m: 2 procs • 2001-3000m: 3 procs • …
  • 20. DevDiv Java Engineering Group Kubernetes: Better Starting Points Recommendations to follow instead of JVM Ergonomics CPU Limits Up to 1000m Not recommended <2GB or >4GB ParallelGC 2 to 4GB 2000m ParallelGC Up to 4GB G1GC More than 4GB 4000m G1GC More than 4GB ZGC, Shenandoah 4GB to 32GB ZGC 32GB or more With 1000m or less, set: --XX:ActiveProcessorCount=2 Memory Limits JVM Heap at 75%
  • 21. DevDiv Java Engineering Group Benchmark Latency: lower is better. Throughput: higher is better. Latency Throughout github.com/brunoborges/aks-jvm-benchmark
  • 22. DevDiv Java Engineering Group Azure Kubernetes Cluster Short but wide – 6 x 4 = 24 vCPUs VM 1 vCPU vCPU vCPU vCPU VM 2 vCPU vCPU vCPU vCPU VM 3 vCPU vCPU vCPU vCPU VM 4 VM 5 VM 6 Control • D4 v3 VM $0.192/hour • 4 vCPU • 16 GB • JVM • 1 vCPU • 2 GB RAM • Garbage Collector selected by Ergonomics: • Serial GC • Concurrent/Parallel GCs won’t be effective • Constant CPU Throttling on each JVM • Constant Stop-the-World by GC • High latency, low throughput JVM JVM JVM Control JVM JVM JVM Control JVM JVM JVM vCPU vCPU vCPU vCPU Control JVM JVM JVM vCPU vCPU vCPU vCPU JVM JVM JVM JVM vCPU vCPU vCPU vCPU JVM JVM JVM JVM • Total Resources Consumed • 18 JVMs replicas • 18 vCPUs • 36 GB of RAM (of 96) Estimate: $840.96
  • 23. DevDiv Java Engineering Group Azure Kubernetes Cluster Tall but narrow – 3 x 8 = 24 vCPUs VM 1 VM 2 VM 3 vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU JVM JVM JVM • D8 v3 VM $0.384/hour • 8 vCPUs • 32 GB • JVM • 8 GB RAM • 4 vCPUs • Total Resources Consumed • 12 vCPUs • 24 GB of RAM (of 96) • Garbage Collector (recommended): • G1GC • Benefits • CPU Throttling unlikely • Lower latency, higher throughput vCPU vCPU vCPU vCPU vCPU vCPU Control Control Control Savings: - 9 vCPUs on standby - 72 GB of RAM on standby Estimate: $840.96 (same cost)
  • 24. DevDiv Java Engineering Group A/B Routing Multiple Topologies Monitor the topologies for resource consumption, latency, and throughput. Load Balancer Topology A Smaller JVMs Multiple replicas Topology B Larger JVMs Lesser replicas
  • 25. DevDiv Java Engineering Group Steps to Address Perf Issues Optimize runtime for the workload • Understand Your Tech Stack • Understand how the runtime responds to workloads • Understand JVM Ergonomics • Understand JVM Garbage Collectors • Observe and Analyze • Monitor with Azure App Insights and other APM solutions • Analyze JVM data with JDK Flight Recorder (JFR) and Microsoft JFR Streaming • Analyze Garbage Collection logs with GC analyzers and Microsoft GCToolKit • Reorganize existing resources • Consume the same amount of resources • Increase the performance • Maintain or reduce the cost
  • 26. DevDiv Java Engineering Group Conclusion Java on Kubernetes scaling • Different workloads may need different topologies • Scaling out with more replicas is not a silver bullet for performance increase • Give more resources to JVMs in the beginning • Lesser replicas, more CPU/memory • Start with Parallel GC for smaller heaps • Avoid JVM default ergonomics • Ensure you know which GC is being used • Increase performance by understanding bottlenecks • Analyse JFR data • Analyse GC logs • Scale out, and up, as needed
  • 27. The End Microsoft Developer Division Java Engineering Group (JEG)