SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Java and Performance

Tools and Toys
2021-02-25
Agend
a

• Methodolog
y

• Metric
s

• Profiling, Profiler
s

• Use Case
s

• Profile Viewer
s

• Profiling target
s

• Distributed profilin
g

• Other tool
s
www.luxoft.com
Starting Poin
t



“Use The Right Tool at the Right Place”
 

Anonymous plumber













Great Learning course at Lux Learning
:

В. Сонькин, Java Advanced II: Performance
Photo b y Simon Migaj @ unsplash.com
www.luxoft.com
Use the USE method
:

Resource List
:

๏ CPUs: sockets, cores, hardware threads (virtual CPUs
)

๏ Memory: capacit
y

๏ Network interface
s

๏ Storage devices: I/O, capacit
y

๏ Controllers: storage, network card
s

๏ Interconnects: CPUs, memory, I/O
http://www.brendangregg.com/usemethod.html
www.luxoft.com
Retrieving metrics
:



Ad-hoc, manual
:

๏ CPU: uptime, pidstat, top, vmstat, mpstat, etc
.

๏ IO: sar, iostat, iotop, etc
.

๏ Memory: free, top, et
c

๏ Errors: dmes
g

๏ …

๏ Swiss knife: dstat
http://www.brendangregg.com/Articles/Netflix_Linux_Perf_Analysis_60s.pdf
www.luxoft.com
Monitoring both

App and USE metrics:

Metrics reporting
:

๏ System: collectd, telegraf, etc
.

๏ Java: Micromete
r

Metrics aggregation
:

๏ Free: Prometheus/Grafana, etc
.

๏ Commercial: NewRelic, DataDog, CloudWatch, etc
.

NewRelic metrics Dashboard
https://micrometer.io
www.luxoft.com
Metrics: Use Cas
e

Alerts
:

๏ High system/irq/steal/… time
 

๏ High iowait time
 

๏ Low utilization high saturatio
n

๏ Spikes of any activit
y

๏ Error spike
s

๏ …
Metrics collected by Ganglia
???
www.luxoft.com
Flamegraph
s





Types
:

๏ CP
U

๏ Off-CP
U

๏ Memory, Allocatio
n

๏ Software/Hardware event
s

๏ Composite (Hot/Cold), Differential
http://www.brendangregg.com/flamegraphs.html
www.luxoft.com
Profiling and Profilers
:





Profiler types
:

๏ Instrumenting automate
d

๏ Instrumenting manua
l

๏ Samplin
g

๏ …
Survey by RebelLabs, RedHat Summit 2015, Lessons learned from the JBoss performance team
JavaDay UA 2017: Nitsan Wakart. Profilers Are Lying Hobbitses


Better Profiler types
:

๏ goo
d

๏ bad
www.luxoft.com
Async Profiler
:





Features
:

๏ No use of JVMTI GetAllStackTraces(), Safepoint Bias-fre
e

๏ Combines both worlds:

Java frames - AsynGetCallTrace(), internal HotSpot API

Native frames (user + kernel)- perf_event_open syscal
l

๏ Flexible events: CPU cycles, tracepoints, native/Java methods, 

PMU counter
s

๏ Flexible modes: CPU profiling, Off-CPU profiling, Allocation profilin
g

๏ Flexible output: bomb dump, “collapsed” (perf compatible), 

JFR, flamegraphs, call trees, conversion scripts
AP with Andrey Pangin: 4h-long (!!!) webinar: https://youtube.com/playlist?list=PLNCLTEx3B8h4Yo_WvKWdLvI9mj1XpTKBr
https://www.vecteezy.com/free-vector/the-end
www.luxoft.com
Async Profiler
:







Drawbacks
:

๏ No Windows suppor
t

๏ Allocation: same as JFR, slow path-only, 

TLAB bias, no JEP-331 support

Resolved in jvmti-tools/heapsampler project, YourKi
t

๏ No system-wide profilin
g

๏ No distributed profilin
g

๏ Tricky cases: e.g. cpu time/cycles vs physical time
https://github.com/apangin/codeone2019-java-profilin
g

Photo by Emiliano Vittoriosi @ unsplash.com
www.luxoft.com
Async Profiler
:



Configuration
:

๏ Allow collecting kernel frames:

$ sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'

$ sudo sh -c 'echo 0 >/proc/sys/kernel/kptr_restrict’

Running
:

๏ As JVM agent

-XX:+DebugNonSafepoint
s

๏ Attach to process

-XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoint
s

๏ From Java application code



https://www.baeldung.com/java-async-profiler
Async Profiler help output
www.luxoft.com
Viewing Profiles
:



Profile Formats
:

๏ Summary (text
)

๏ Call Tre
e

๏ HTML Flamegrap
h

๏ SVG Flamegraph (v1.X, or requires flamegraph.pl script
)

๏ nflx (flamescope) 

java -cp build/converter.jar jfr2nflx myprofile.jfr out.nfl
x

Third-party Viewers
:

๏ IntelliJ IDEA Ultimate Editio
n

๏ SpeedScope (https://www.speedscope.app
)

๏ FlameScope (https://github.com/Netflix/flamescope)
SpeedScope
FlameScope
www.luxoft.com
Showtime: Example
1





CPU, Wall-clock:

Application structure revealed,



Hot paths of execution highlighted

in a very-very complex codebase.
Module A
Module B
Module C
www.luxoft.com
Example
2





CPU - Native frames
Business logic

Only this part is visible in VisualVM / JMC (!!!)
JVM went crazy with 600 threads
www.luxoft.com
Example
3





CPU, by Threads:

GC at work
Caption
Business logic
GC at work
www.luxoft.com
Example
4





CPU, Reversed
Caption
Business logic
GC at work
Structured
Chaotic
www.luxoft.com
Example
5





Allocation, Reversed
www.luxoft.com
What to profile
:





Production
:

๏ Enable on all or part of the nodes in pro
d

Loadtests
:

๏ Run nightly loadtests with profiling enable
d

๏ Correlate the loadtest results with metrics and perf. profiles
 

Benchmarks
:

๏ JMH integration in sbt-jmh by Konrad Malawski

https://github.com/ktoso/sbt-jmh

As simple as: -prof jfr / -prof async
Gatling Loadtest
NewRelic Dashboard
Performance Profile: JFR
Flamegraphs
www.luxoft.com
Distributed profilin
g





Collapsed flow
:

๏ Collect collapsed or JFR file
s

๏ Concatenate collected file
s

๏ Convert to desired format: svg, html, nflx (flamescope) 

Examples:

./flamegraph.pl --color java input.collapsed > out.svg

java -cp build/converter.jar jfr2nflx myprofile.jfr out.nfl
x

๏ Voila! View in favorite viewer
JMC 8.0
www.luxoft.com
Profiling: Other options





Commercial JVM profilers
:

๏ Amazon CodeGur
u

๏ Google Cloud Profile
r

๏ Opsian (by creator of honest-profiler
)

๏ DataDog continuous profile
r

๏ …
Photo by Fabian Blank @ unsplash.com
www.luxoft.com
Where to go next
?





Things you might want to look at
:

๏ PMU counters in Java

S. Kuksenko: Speed up you Java App with Hardware Counters
๏ TMAM Method: Top-down Micro-architecture Analysi
s

๏ Intel vTune Profile
r

๏ AMD µPro
f

๏ https://github.com/andikleen/pmu-tools, TopLe
v

๏ eBP
F

๏ …
Thank You!

Más contenido relacionado

La actualidad más candente

Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVMSylvain Wallez
 
Building Observable Applications w/ Node.js -- BayNode Meetup, March 2014
Building Observable Applications w/ Node.js -- BayNode Meetup, March 2014Building Observable Applications w/ Node.js -- BayNode Meetup, March 2014
Building Observable Applications w/ Node.js -- BayNode Meetup, March 2014Yunong Xiao
 
Rails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & ToolsRails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & Toolsguest05c09d
 
jLove 2020 - Micronaut and graalvm: The power of AoT
jLove 2020 - Micronaut and graalvm: The power of AoTjLove 2020 - Micronaut and graalvm: The power of AoT
jLove 2020 - Micronaut and graalvm: The power of AoTIván López Martín
 
Performance Optimization of Rails Applications
Performance Optimization of Rails ApplicationsPerformance Optimization of Rails Applications
Performance Optimization of Rails ApplicationsSerge Smetana
 
Bareon functional testing ci
Bareon functional testing   ciBareon functional testing   ci
Bareon functional testing ciMax Lobur
 
Retrofitting Continuous Delivery
Retrofitting Continuous Delivery Retrofitting Continuous Delivery
Retrofitting Continuous Delivery Alan Norton
 
Foreman - Advanced use cases - Timo Goebel
Foreman - Advanced use cases - Timo GoebelForeman - Advanced use cases - Timo Goebel
Foreman - Advanced use cases - Timo GoebelNETWAYS
 
Nodejs Performance Debug
Nodejs Performance DebugNodejs Performance Debug
Nodejs Performance DebugRafael Gonzaga
 
美团点评技术沙龙08 - 分布式监控系统实践
美团点评技术沙龙08 - 分布式监控系统实践美团点评技术沙龙08 - 分布式监控系统实践
美团点评技术沙龙08 - 分布式监控系统实践美团点评技术团队
 
Ruby/rails performance and profiling
Ruby/rails performance and profilingRuby/rails performance and profiling
Ruby/rails performance and profilingDanny Guinther
 
Camel Desing Patterns Learned Through Blood, Sweat, and Tears
Camel Desing Patterns Learned Through Blood, Sweat, and TearsCamel Desing Patterns Learned Through Blood, Sweat, and Tears
Camel Desing Patterns Learned Through Blood, Sweat, and TearsBilgin Ibryam
 
High Fidelity Games: Real Examples, Best Practices ... | Oleksii Vasylenko
High Fidelity Games: Real Examples, Best Practices ... | Oleksii VasylenkoHigh Fidelity Games: Real Examples, Best Practices ... | Oleksii Vasylenko
High Fidelity Games: Real Examples, Best Practices ... | Oleksii VasylenkoJessica Tams
 
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo
 
perlcc made easy or, how to make a CGI Moose app
perlcc made easy or, how to make a CGI Moose appperlcc made easy or, how to make a CGI Moose app
perlcc made easy or, how to make a CGI Moose appcPanel
 
Scaling application servers for efficiency
Scaling application servers for efficiencyScaling application servers for efficiency
Scaling application servers for efficiencyTomas Doran
 
Reverse Installing CPAN
Reverse Installing CPANReverse Installing CPAN
Reverse Installing CPANbrian d foy
 
fsharp goodness for everyday work
fsharp goodness for everyday workfsharp goodness for everyday work
fsharp goodness for everyday workUladzimir Shchur
 
Whoops! I Rewrote It in Rust
Whoops! I Rewrote It in RustWhoops! I Rewrote It in Rust
Whoops! I Rewrote It in RustScyllaDB
 

La actualidad más candente (20)

Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVM
 
Building Observable Applications w/ Node.js -- BayNode Meetup, March 2014
Building Observable Applications w/ Node.js -- BayNode Meetup, March 2014Building Observable Applications w/ Node.js -- BayNode Meetup, March 2014
Building Observable Applications w/ Node.js -- BayNode Meetup, March 2014
 
Rails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & ToolsRails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & Tools
 
jLove 2020 - Micronaut and graalvm: The power of AoT
jLove 2020 - Micronaut and graalvm: The power of AoTjLove 2020 - Micronaut and graalvm: The power of AoT
jLove 2020 - Micronaut and graalvm: The power of AoT
 
Performance Optimization of Rails Applications
Performance Optimization of Rails ApplicationsPerformance Optimization of Rails Applications
Performance Optimization of Rails Applications
 
Bareon functional testing ci
Bareon functional testing   ciBareon functional testing   ci
Bareon functional testing ci
 
Retrofitting Continuous Delivery
Retrofitting Continuous Delivery Retrofitting Continuous Delivery
Retrofitting Continuous Delivery
 
CPAN Training
CPAN TrainingCPAN Training
CPAN Training
 
Foreman - Advanced use cases - Timo Goebel
Foreman - Advanced use cases - Timo GoebelForeman - Advanced use cases - Timo Goebel
Foreman - Advanced use cases - Timo Goebel
 
Nodejs Performance Debug
Nodejs Performance DebugNodejs Performance Debug
Nodejs Performance Debug
 
美团点评技术沙龙08 - 分布式监控系统实践
美团点评技术沙龙08 - 分布式监控系统实践美团点评技术沙龙08 - 分布式监控系统实践
美团点评技术沙龙08 - 分布式监控系统实践
 
Ruby/rails performance and profiling
Ruby/rails performance and profilingRuby/rails performance and profiling
Ruby/rails performance and profiling
 
Camel Desing Patterns Learned Through Blood, Sweat, and Tears
Camel Desing Patterns Learned Through Blood, Sweat, and TearsCamel Desing Patterns Learned Through Blood, Sweat, and Tears
Camel Desing Patterns Learned Through Blood, Sweat, and Tears
 
High Fidelity Games: Real Examples, Best Practices ... | Oleksii Vasylenko
High Fidelity Games: Real Examples, Best Practices ... | Oleksii VasylenkoHigh Fidelity Games: Real Examples, Best Practices ... | Oleksii Vasylenko
High Fidelity Games: Real Examples, Best Practices ... | Oleksii Vasylenko
 
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
 
perlcc made easy or, how to make a CGI Moose app
perlcc made easy or, how to make a CGI Moose appperlcc made easy or, how to make a CGI Moose app
perlcc made easy or, how to make a CGI Moose app
 
Scaling application servers for efficiency
Scaling application servers for efficiencyScaling application servers for efficiency
Scaling application servers for efficiency
 
Reverse Installing CPAN
Reverse Installing CPANReverse Installing CPAN
Reverse Installing CPAN
 
fsharp goodness for everyday work
fsharp goodness for everyday workfsharp goodness for everyday work
fsharp goodness for everyday work
 
Whoops! I Rewrote It in Rust
Whoops! I Rewrote It in RustWhoops! I Rewrote It in Rust
Whoops! I Rewrote It in Rust
 

Similar a Iurii Antykhovych "Java and performance tools and toys"

Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)OpenBlend society
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with CodeceptionJeremy Coates
 
Bootify your spring application
Bootify your spring applicationBootify your spring application
Bootify your spring applicationJimmy Lu
 
NSC #2 - D3 02 - Peter Hlavaty - Attack on the Core
NSC #2 - D3 02 - Peter Hlavaty - Attack on the CoreNSC #2 - D3 02 - Peter Hlavaty - Attack on the Core
NSC #2 - D3 02 - Peter Hlavaty - Attack on the CoreNoSuchCon
 
Use React tools for better Angular apps
Use React tools for better Angular appsUse React tools for better Angular apps
Use React tools for better Angular appsMartin Hochel
 
Java troubleshooting thread dump
Java troubleshooting thread dumpJava troubleshooting thread dump
Java troubleshooting thread dumpejlp12
 
Performance Improvements In Browsers
Performance Improvements In BrowsersPerformance Improvements In Browsers
Performance Improvements In BrowsersGoogleTecTalks
 
Performance Improvements in Browsers
Performance Improvements in BrowsersPerformance Improvements in Browsers
Performance Improvements in Browsersjeresig
 
Why use JavaScript in Hardware? GoTo Conf - Berlin
Why use JavaScript in Hardware? GoTo Conf - Berlin Why use JavaScript in Hardware? GoTo Conf - Berlin
Why use JavaScript in Hardware? GoTo Conf - Berlin TechnicalMachine
 
Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Christian Joudrey
 
No locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructureNo locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructureAndrew Petukhov
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9Ivan Krylov
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance PatternsStoyan Stefanov
 
Docker for Development
Docker for DevelopmentDocker for Development
Docker for Developmentallingeek
 
"今" 使えるJavaScriptのトレンド
"今" 使えるJavaScriptのトレンド"今" 使えるJavaScriptのトレンド
"今" 使えるJavaScriptのトレンドHayato Mizuno
 
Dynamic input tables lwc vs aura vs. visualforce
Dynamic input tables  lwc vs aura vs. visualforceDynamic input tables  lwc vs aura vs. visualforce
Dynamic input tables lwc vs aura vs. visualforceMike Tetlow
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patternsStoyan Stefanov
 
Hibernate performance tuning
Hibernate performance tuningHibernate performance tuning
Hibernate performance tuningMikalai Alimenkou
 

Similar a Iurii Antykhovych "Java and performance tools and toys" (20)

Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with Codeception
 
Bootify your spring application
Bootify your spring applicationBootify your spring application
Bootify your spring application
 
NSC #2 - D3 02 - Peter Hlavaty - Attack on the Core
NSC #2 - D3 02 - Peter Hlavaty - Attack on the CoreNSC #2 - D3 02 - Peter Hlavaty - Attack on the Core
NSC #2 - D3 02 - Peter Hlavaty - Attack on the Core
 
Use React tools for better Angular apps
Use React tools for better Angular appsUse React tools for better Angular apps
Use React tools for better Angular apps
 
Java troubleshooting thread dump
Java troubleshooting thread dumpJava troubleshooting thread dump
Java troubleshooting thread dump
 
Performance Improvements In Browsers
Performance Improvements In BrowsersPerformance Improvements In Browsers
Performance Improvements In Browsers
 
Performance Improvements in Browsers
Performance Improvements in BrowsersPerformance Improvements in Browsers
Performance Improvements in Browsers
 
Why use JavaScript in Hardware? GoTo Conf - Berlin
Why use JavaScript in Hardware? GoTo Conf - Berlin Why use JavaScript in Hardware? GoTo Conf - Berlin
Why use JavaScript in Hardware? GoTo Conf - Berlin
 
Java in flames
Java in flamesJava in flames
Java in flames
 
Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?
 
No locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructureNo locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructure
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance Patterns
 
Docker for Development
Docker for DevelopmentDocker for Development
Docker for Development
 
"今" 使えるJavaScriptのトレンド
"今" 使えるJavaScriptのトレンド"今" 使えるJavaScriptのトレンド
"今" 使えるJavaScriptのトレンド
 
Dynamic input tables lwc vs aura vs. visualforce
Dynamic input tables  lwc vs aura vs. visualforceDynamic input tables  lwc vs aura vs. visualforce
Dynamic input tables lwc vs aura vs. visualforce
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patterns
 
Hibernate performance tuning
Hibernate performance tuningHibernate performance tuning
Hibernate performance tuning
 
Os Wilhelm
Os WilhelmOs Wilhelm
Os Wilhelm
 

Más de LogeekNightUkraine

Autonomous driving on your developer pc. technologies, approaches, future
Autonomous driving on your developer pc. technologies, approaches, futureAutonomous driving on your developer pc. technologies, approaches, future
Autonomous driving on your developer pc. technologies, approaches, futureLogeekNightUkraine
 
Orkhan Gasimov "High Performance System Design"
Orkhan Gasimov "High Performance System Design" Orkhan Gasimov "High Performance System Design"
Orkhan Gasimov "High Performance System Design" LogeekNightUkraine
 
Vitalii Korzh "Managed Workflows or How to Master Data"
Vitalii Korzh "Managed Workflows or How to Master Data" Vitalii Korzh "Managed Workflows or How to Master Data"
Vitalii Korzh "Managed Workflows or How to Master Data" LogeekNightUkraine
 
Yevhen Tatarynov "From POC to High-Performance .NET applications"
Yevhen Tatarynov "From POC to High-Performance .NET applications"Yevhen Tatarynov "From POC to High-Performance .NET applications"
Yevhen Tatarynov "From POC to High-Performance .NET applications"LogeekNightUkraine
 
Oleksii Kuchuk "Reading gauge values with open cv imgproc"
Oleksii Kuchuk "Reading gauge values with open cv imgproc"Oleksii Kuchuk "Reading gauge values with open cv imgproc"
Oleksii Kuchuk "Reading gauge values with open cv imgproc"LogeekNightUkraine
 
Oleksandr Kutsan "Using katai struct to describe the process of working with ...
Oleksandr Kutsan "Using katai struct to describe the process of working with ...Oleksandr Kutsan "Using katai struct to describe the process of working with ...
Oleksandr Kutsan "Using katai struct to describe the process of working with ...LogeekNightUkraine
 
Pavlo Zhdanov "Mastering solid and base principles for software design"
Pavlo Zhdanov "Mastering solid and base principles for software design"Pavlo Zhdanov "Mastering solid and base principles for software design"
Pavlo Zhdanov "Mastering solid and base principles for software design"LogeekNightUkraine
 
Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"
Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"
Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"LogeekNightUkraine
 
Aleksandr Kutsan "Managing Dependencies in C++"
Aleksandr Kutsan "Managing Dependencies in C++"Aleksandr Kutsan "Managing Dependencies in C++"
Aleksandr Kutsan "Managing Dependencies in C++"LogeekNightUkraine
 
Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"
Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"
Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"LogeekNightUkraine
 
Alexandr Golyak, Nikolay Chertkov "Automotive Testing vs Test Automatio"
Alexandr Golyak, Nikolay Chertkov  "Automotive Testing vs Test Automatio"Alexandr Golyak, Nikolay Chertkov  "Automotive Testing vs Test Automatio"
Alexandr Golyak, Nikolay Chertkov "Automotive Testing vs Test Automatio"LogeekNightUkraine
 
Michal Kordas "Docker: Good, Bad or Both"
Michal Kordas "Docker: Good, Bad or Both"Michal Kordas "Docker: Good, Bad or Both"
Michal Kordas "Docker: Good, Bad or Both"LogeekNightUkraine
 
Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"
Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"
Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"LogeekNightUkraine
 
Shestakov Illia "The Sandbox Theory"
Shestakov Illia "The Sandbox Theory"Shestakov Illia "The Sandbox Theory"
Shestakov Illia "The Sandbox Theory"LogeekNightUkraine
 
Dmytro Kochergin “Autotest with CYPRESS”
Dmytro Kochergin “Autotest with CYPRESS”Dmytro Kochergin “Autotest with CYPRESS”
Dmytro Kochergin “Autotest with CYPRESS”LogeekNightUkraine
 
Ivan Dryzhyruk “Ducks Don’t Like Bugs”
Ivan Dryzhyruk “Ducks Don’t Like Bugs”Ivan Dryzhyruk “Ducks Don’t Like Bugs”
Ivan Dryzhyruk “Ducks Don’t Like Bugs”LogeekNightUkraine
 
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"LogeekNightUkraine
 
Dmytro Safonov "Open-Source Map Viewers"
Dmytro Safonov  "Open-Source Map Viewers"Dmytro Safonov  "Open-Source Map Viewers"
Dmytro Safonov "Open-Source Map Viewers"LogeekNightUkraine
 

Más de LogeekNightUkraine (20)

Face recognition with c++
Face recognition with c++ Face recognition with c++
Face recognition with c++
 
C++20 features
C++20 features C++20 features
C++20 features
 
Autonomous driving on your developer pc. technologies, approaches, future
Autonomous driving on your developer pc. technologies, approaches, futureAutonomous driving on your developer pc. technologies, approaches, future
Autonomous driving on your developer pc. technologies, approaches, future
 
Orkhan Gasimov "High Performance System Design"
Orkhan Gasimov "High Performance System Design" Orkhan Gasimov "High Performance System Design"
Orkhan Gasimov "High Performance System Design"
 
Vitalii Korzh "Managed Workflows or How to Master Data"
Vitalii Korzh "Managed Workflows or How to Master Data" Vitalii Korzh "Managed Workflows or How to Master Data"
Vitalii Korzh "Managed Workflows or How to Master Data"
 
Yevhen Tatarynov "From POC to High-Performance .NET applications"
Yevhen Tatarynov "From POC to High-Performance .NET applications"Yevhen Tatarynov "From POC to High-Performance .NET applications"
Yevhen Tatarynov "From POC to High-Performance .NET applications"
 
Oleksii Kuchuk "Reading gauge values with open cv imgproc"
Oleksii Kuchuk "Reading gauge values with open cv imgproc"Oleksii Kuchuk "Reading gauge values with open cv imgproc"
Oleksii Kuchuk "Reading gauge values with open cv imgproc"
 
Oleksandr Kutsan "Using katai struct to describe the process of working with ...
Oleksandr Kutsan "Using katai struct to describe the process of working with ...Oleksandr Kutsan "Using katai struct to describe the process of working with ...
Oleksandr Kutsan "Using katai struct to describe the process of working with ...
 
Pavlo Zhdanov "Mastering solid and base principles for software design"
Pavlo Zhdanov "Mastering solid and base principles for software design"Pavlo Zhdanov "Mastering solid and base principles for software design"
Pavlo Zhdanov "Mastering solid and base principles for software design"
 
Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"
Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"
Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"
 
Aleksandr Kutsan "Managing Dependencies in C++"
Aleksandr Kutsan "Managing Dependencies in C++"Aleksandr Kutsan "Managing Dependencies in C++"
Aleksandr Kutsan "Managing Dependencies in C++"
 
Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"
Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"
Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"
 
Alexandr Golyak, Nikolay Chertkov "Automotive Testing vs Test Automatio"
Alexandr Golyak, Nikolay Chertkov  "Automotive Testing vs Test Automatio"Alexandr Golyak, Nikolay Chertkov  "Automotive Testing vs Test Automatio"
Alexandr Golyak, Nikolay Chertkov "Automotive Testing vs Test Automatio"
 
Michal Kordas "Docker: Good, Bad or Both"
Michal Kordas "Docker: Good, Bad or Both"Michal Kordas "Docker: Good, Bad or Both"
Michal Kordas "Docker: Good, Bad or Both"
 
Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"
Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"
Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"
 
Shestakov Illia "The Sandbox Theory"
Shestakov Illia "The Sandbox Theory"Shestakov Illia "The Sandbox Theory"
Shestakov Illia "The Sandbox Theory"
 
Dmytro Kochergin “Autotest with CYPRESS”
Dmytro Kochergin “Autotest with CYPRESS”Dmytro Kochergin “Autotest with CYPRESS”
Dmytro Kochergin “Autotest with CYPRESS”
 
Ivan Dryzhyruk “Ducks Don’t Like Bugs”
Ivan Dryzhyruk “Ducks Don’t Like Bugs”Ivan Dryzhyruk “Ducks Don’t Like Bugs”
Ivan Dryzhyruk “Ducks Don’t Like Bugs”
 
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
 
Dmytro Safonov "Open-Source Map Viewers"
Dmytro Safonov  "Open-Source Map Viewers"Dmytro Safonov  "Open-Source Map Viewers"
Dmytro Safonov "Open-Source Map Viewers"
 

Último

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
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
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
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
 
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
 
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
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
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
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 

Último (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
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
 
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
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Iurii Antykhovych "Java and performance tools and toys"

  • 1. Java and Performance
 Tools and Toys 2021-02-25
  • 2. Agend a • Methodolog y • Metric s • Profiling, Profiler s • Use Case s • Profile Viewer s • Profiling target s • Distributed profilin g • Other tool s
  • 3. www.luxoft.com Starting Poin t 
 “Use The Right Tool at the Right Place” Anonymous plumber
 
 
 
 
 
 
 Great Learning course at Lux Learning : В. Сонькин, Java Advanced II: Performance Photo b y Simon Migaj @ unsplash.com
  • 4. www.luxoft.com Use the USE method : Resource List : ๏ CPUs: sockets, cores, hardware threads (virtual CPUs ) ๏ Memory: capacit y ๏ Network interface s ๏ Storage devices: I/O, capacit y ๏ Controllers: storage, network card s ๏ Interconnects: CPUs, memory, I/O http://www.brendangregg.com/usemethod.html
  • 5. www.luxoft.com Retrieving metrics : 
 Ad-hoc, manual : ๏ CPU: uptime, pidstat, top, vmstat, mpstat, etc . ๏ IO: sar, iostat, iotop, etc . ๏ Memory: free, top, et c ๏ Errors: dmes g ๏ …
 ๏ Swiss knife: dstat http://www.brendangregg.com/Articles/Netflix_Linux_Perf_Analysis_60s.pdf
  • 6. www.luxoft.com Monitoring both
 App and USE metrics:
 Metrics reporting : ๏ System: collectd, telegraf, etc . ๏ Java: Micromete r Metrics aggregation : ๏ Free: Prometheus/Grafana, etc . ๏ Commercial: NewRelic, DataDog, CloudWatch, etc . NewRelic metrics Dashboard https://micrometer.io
  • 7. www.luxoft.com Metrics: Use Cas e Alerts : ๏ High system/irq/steal/… time ๏ High iowait time ๏ Low utilization high saturatio n ๏ Spikes of any activit y ๏ Error spike s ๏ … Metrics collected by Ganglia ???
  • 8. www.luxoft.com Flamegraph s 
 
 Types : ๏ CP U ๏ Off-CP U ๏ Memory, Allocatio n ๏ Software/Hardware event s ๏ Composite (Hot/Cold), Differential http://www.brendangregg.com/flamegraphs.html
  • 9. www.luxoft.com Profiling and Profilers : 
 
 Profiler types : ๏ Instrumenting automate d ๏ Instrumenting manua l ๏ Samplin g ๏ … Survey by RebelLabs, RedHat Summit 2015, Lessons learned from the JBoss performance team JavaDay UA 2017: Nitsan Wakart. Profilers Are Lying Hobbitses 
 Better Profiler types : ๏ goo d ๏ bad
  • 10. www.luxoft.com Async Profiler : 
 
 Features : ๏ No use of JVMTI GetAllStackTraces(), Safepoint Bias-fre e ๏ Combines both worlds:
 Java frames - AsynGetCallTrace(), internal HotSpot API
 Native frames (user + kernel)- perf_event_open syscal l ๏ Flexible events: CPU cycles, tracepoints, native/Java methods, 
 PMU counter s ๏ Flexible modes: CPU profiling, Off-CPU profiling, Allocation profilin g ๏ Flexible output: bomb dump, “collapsed” (perf compatible), 
 JFR, flamegraphs, call trees, conversion scripts AP with Andrey Pangin: 4h-long (!!!) webinar: https://youtube.com/playlist?list=PLNCLTEx3B8h4Yo_WvKWdLvI9mj1XpTKBr https://www.vecteezy.com/free-vector/the-end
  • 11. www.luxoft.com Async Profiler : 
 
 
 Drawbacks : ๏ No Windows suppor t ๏ Allocation: same as JFR, slow path-only, 
 TLAB bias, no JEP-331 support
 Resolved in jvmti-tools/heapsampler project, YourKi t ๏ No system-wide profilin g ๏ No distributed profilin g ๏ Tricky cases: e.g. cpu time/cycles vs physical time https://github.com/apangin/codeone2019-java-profilin g Photo by Emiliano Vittoriosi @ unsplash.com
  • 12. www.luxoft.com Async Profiler : 
 Configuration : ๏ Allow collecting kernel frames:
 $ sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'
 $ sudo sh -c 'echo 0 >/proc/sys/kernel/kptr_restrict’
 Running : ๏ As JVM agent
 -XX:+DebugNonSafepoint s ๏ Attach to process
 -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoint s ๏ From Java application code
 
 https://www.baeldung.com/java-async-profiler Async Profiler help output
  • 13. www.luxoft.com Viewing Profiles : 
 Profile Formats : ๏ Summary (text ) ๏ Call Tre e ๏ HTML Flamegrap h ๏ SVG Flamegraph (v1.X, or requires flamegraph.pl script ) ๏ nflx (flamescope) 
 java -cp build/converter.jar jfr2nflx myprofile.jfr out.nfl x Third-party Viewers : ๏ IntelliJ IDEA Ultimate Editio n ๏ SpeedScope (https://www.speedscope.app ) ๏ FlameScope (https://github.com/Netflix/flamescope) SpeedScope FlameScope
  • 14. www.luxoft.com Showtime: Example 1 
 
 CPU, Wall-clock:
 Application structure revealed,
 
 Hot paths of execution highlighted
 in a very-very complex codebase. Module A Module B Module C
  • 15. www.luxoft.com Example 2 
 
 CPU - Native frames Business logic
 Only this part is visible in VisualVM / JMC (!!!) JVM went crazy with 600 threads
  • 16. www.luxoft.com Example 3 
 
 CPU, by Threads:
 GC at work Caption Business logic GC at work
  • 19. www.luxoft.com What to profile : 
 
 Production : ๏ Enable on all or part of the nodes in pro d Loadtests : ๏ Run nightly loadtests with profiling enable d ๏ Correlate the loadtest results with metrics and perf. profiles Benchmarks : ๏ JMH integration in sbt-jmh by Konrad Malawski
 https://github.com/ktoso/sbt-jmh
 As simple as: -prof jfr / -prof async Gatling Loadtest NewRelic Dashboard Performance Profile: JFR Flamegraphs
  • 20. www.luxoft.com Distributed profilin g 
 
 Collapsed flow : ๏ Collect collapsed or JFR file s ๏ Concatenate collected file s ๏ Convert to desired format: svg, html, nflx (flamescope) 
 Examples:
 ./flamegraph.pl --color java input.collapsed > out.svg
 java -cp build/converter.jar jfr2nflx myprofile.jfr out.nfl x ๏ Voila! View in favorite viewer JMC 8.0
  • 21. www.luxoft.com Profiling: Other options
 
 
 Commercial JVM profilers : ๏ Amazon CodeGur u ๏ Google Cloud Profile r ๏ Opsian (by creator of honest-profiler ) ๏ DataDog continuous profile r ๏ … Photo by Fabian Blank @ unsplash.com
  • 22. www.luxoft.com Where to go next ? 
 
 Things you might want to look at : ๏ PMU counters in Java
 S. Kuksenko: Speed up you Java App with Hardware Counters ๏ TMAM Method: Top-down Micro-architecture Analysi s ๏ Intel vTune Profile r ๏ AMD µPro f ๏ https://github.com/andikleen/pmu-tools, TopLe v ๏ eBP F ๏ …