Skip to content

Commit c478f27

Browse files
committed
Applying doc updates + slides
1 parent f58555c commit c478f27

14 files changed

+119
-19
lines changed

docs/content/docs/jmc/_references.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ description: >
55
Collection of useful references used to build this guide.
66
---
77

8-
* [JDK Mission Control User Guide](https://docs.oracle.com/javacomponents/doc/JDMUG/JDMUG.pdf)
8+
* [JDK Mission Control User Guide](https://docs.oracle.com/en/java/java-components/jdk-mission-control/9/user-guide/)
99
* [Hunting down code hotspots with JFR](https://bell-sw.com/announcements/2020/07/22/Hunting-down-code-hotspots-with-JDK-Flight-Recorder/)

docs/content/docs/jmc/_intro_jmc9.md renamed to docs/content/docs/jmc/intro-jmc9/index.md

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ title: "Introduction"
33
weight: 10
44
description: >
55
Introduction into JDK Mission Control with Flight Recorder
6+
resources:
7+
- src: "**/*.png"
8+
- src: "**/*.jfc"
69
---
710

811
## JDK Flight Recorder
@@ -43,21 +46,23 @@ java -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -jar $SERVER_HOME/ja
4346

4447
## Start Flight Recording from JMC
4548

46-
![jmc_start](/jmc/start_flight_recording.png)
49+
{{< figure src="img/jfr-start.png" alt="JFR Start" >}}
4750

48-
This will open a window where you apply some settings for the recording. First select that you want this to be a __Continuous recording__ and for Event settings, we will import a template to get some consistent settings for profiling. Within the __Template Manager__, select __Import Files...__ and import the `open_jdk_9_.jfc` included in the [content/docs/jmc](https://github.com/cchesser/java-perf-workshop/tree/main/docs/content/docs/jmc) folder. It should appear as _Java Performance Workshop JDK9+ Profile_. Select this as the __Event Settings__ and then click on __Finish__.
51+
This will open a window where you apply some settings for the recording. First select that you want this to be a __Continuous recording__ and for Event settings, we will import a template to get some consistent settings for profiling. Within the __Template Manager__, select __Import Files...__ and import the `open_jdk_9_.jfc` by [downloading it here](jfc/open_jdk_9+.jfc) folder. It should appear as _Java Performance Workshop JDK9+ Profile_. Select this as the __Event Settings__ and then click on __Finish__.
4952

5053
For reference, these are the options for the template.
5154

52-
![](img/jfr-settings.png.png)
55+
{{< figure src="img/jfr-settings.png" alt="JFR Settings" >}}
5356

5457
First select that you want this to be a __Continuous recording__ and for Event settings we will use __Profiling on Server__.
5558

56-
![](img/jfr-start-wizard.png.png)
59+
{{< figure src="img/jfr-start-wizard.png" alt="JFR Configuration" >}}
60+
5761

5862
Once your flight recording is being captured in a _Continuous_ recording, it will show a ∞.
5963

60-
![jmc_started](img/jfr-started.png)
64+
{{< figure src="img/jfr-started.png" alt="JFR Started" >}}
65+
6166

6267
💡 You can see the JFR templates (continuous / profile) which are shipped as part of the JRE in: `$JAVA_HOME/jre/lib/jfr`. These become helpful if you are wanting to compare your settings to some of the standard ones.
6368

@@ -121,11 +126,11 @@ loadtest -n 1000 -c 15 "http://localhost:8080/search?q=a"
121126

122127
After you have played traffic through the service, you can then stop your flight recording from JMC.
123128

124-
![jmc_stop](img/jfr-stop.png)
129+
{{< figure src="img/jfr-stop.png" alt="JFR Stop" >}}
125130

126131
Then dump the whole recording.
127132

128-
![jmc_dump](img/jfr-dump.png)
133+
{{< figure src="img/jfr-dump.png" alt="JFR Dump" >}}
129134

130135
## The Flight Recording
131136

docs/hugo.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
baseURL: https://jvmperf.net
22
title: "jvmperf: JVM Performance Workshop"
33
enableRobotsTXT: true
4-
enableGitInfo: true
4+
enableGitInfo: false
55

66
outputs:
77
home: [HTML]

docs/static/slides/img/visualvm.png

40.8 KB
Loading

docs/static/slides/index.html

Lines changed: 105 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,11 @@ <h1 class="r-fit-text">Open Up your JVM with Open Source Tooling</h1>
4646
## Why
4747
## 🤔
4848

49-
Understanding what is occurring in your JVM is _critical_. <br />
49+
<div class="r-fit-text">It's <em>critical</em> to understand what is occurring in your JVM.</div>
50+
51+
___
5052

51-
With knowledge on what tools are readily available without modifying your application, you can quickly understand effective options to diagnose your system.
53+
<small>With knowledge on what tools are readily available without modifying your application, you can quickly understand effective options to diagnose your system.</small>
5254
---
5355
## History
5456
## 🙋‍♂️
@@ -57,30 +59,64 @@ <h1 class="r-fit-text">Open Up your JVM with Open Source Tooling</h1>
5759
...and the course grew.
5860
</textarea>
5961
</section>
60-
<section data-background-iframe="https://jvmperf.net/" data-background-interactive>
62+
<section data-background-iframe="https://jvmperf.net/" data-background-interactive data-background-opacity="0.3">
6163
<div class="foreground-text-dark">
6264
<h2>jvmperf.net</h2>
63-
Workshop focused on utilizing these tools with a poorly implemented service.
65+
Workshop focused on using open and available tooling on a poorly performing Java service.
6466
</div>
6567
</section>
6668
<section data-markdown>
6769
<textarea data-template>
6870
## 🧭
6971
## Our Adventure
7072

71-
We are going to explore three tools with rich history in Java for diagnosing different aspects of performance.
73+
We are going to explore some tools with rich history in Java for diagnosing different aspects of performance.
7274

7375
* JDK Mission Control
7476
* Eclipse Memory Analyzer
7577
* VisualVM
7678
* Demo in jvmperf.net workshop
79+
* OpenTelemetry
7780
---
7881
## 🧰
7982
## Open Source Tooling
8083

8184
These tools are not new.<br />
8285

83-
If you are familar with these tools, we will also be sharing their updates over the years, so hopefully you can learn some new tricks on how they can used.
86+
If you are familar with these tools, we will also be sharing their updates over the years.
87+
88+
<small>Hopefully you can learn some new tricks on how they can used.</small>
89+
</textarea>
90+
</section>
91+
92+
<!-- JDK Mission Control -->
93+
<section data-markdown>
94+
<textarea data-template>
95+
## JDK Mission Control
96+
## 🚀
97+
* Started out as JRockit Mission Control
98+
* Open-sourced in 2018 as part of OpenJDK
99+
* Continues to get updates / releases (latest: 9.1 - Feb 2025)
100+
101+
<small>📄 License: Universal Permissive License (UPL)</small>
102+
</textarea>
103+
</section>
104+
<section data-markdown data-background-iframe="https://hirt.se/blog/?p=1561" data-background-opacity="0.2">
105+
<textarea data-template>
106+
## JMC Updates
107+
⭐️ [Additional details from Marcus Hirt's blog.](https://hirt.se/blog/)
108+
</textarea>
109+
</section>
110+
<section data-markdown>
111+
<textarea data-template>
112+
## JDK Mission Control Agent
113+
## 🚀
114+
* A bytecode transformer JVM agent
115+
* Enables users to add custom JDK Flight Recorder events without changing code
116+
* Continues to get updates / releases (latest: 9.1 - Feb 2025)
117+
* Introduced in JMC [8.0 release (March 2021)](https://hirt.se/blog/?p=1312), with Agent Plugin in [8.1 (August 2021)](https://hirt.se/blog/?p=1361)
118+
119+
<small>🤔 Utilization of JAR in recent releases requires building from source.</small>
84120
</textarea>
85121
</section>
86122

@@ -92,26 +128,85 @@ <h2>jvmperf.net</h2>
92128
* Solid tool for doing Java heap dump analysis.
93129
* Has been around (1.0 landed in 2010)
94130
* One of the better tools for handling large heap dumps.
95-
* Continues to get minor updates.
131+
* Continues to get minor updates (currently 1.16.0 - Dec 2024)
96132

97-
📄 License: Eclipse Public License 2.0
133+
<small>📄 License: Eclipse Public License 2.0</small>
98134
</textarea>
99135
</section>
100-
<section data-markdown data-background-image="img/mat-install.png" data-background-opacity="0.4">>
136+
<section data-markdown data-background-image="img/mat-install.png" data-background-opacity="0.4">
101137
<textarea data-template>
102-
Download at [eclipse.dev/mat/download](https://eclipse.dev/mat/download/).
138+
Download at [eclipse.dev/mat/download](https://eclipse.dev/mat/download/).<br />
139+
⭐️ [New and Noteworthy Updates](https://eclipse.dev/mat/1.16.0/noteworthy.html)
140+
</textarea>
141+
</section>
142+
143+
<!-- VisualVM -->
144+
<section data-markdown>
145+
<textarea data-template>
146+
## VisualVM
147+
## <img src="img/visualvm.png" width="150" />
148+
* Started out as part of Java 6
149+
* Built on the NetBeans Platform, now with [VS Code Extension 🤩](https://marketplace.visualstudio.com/items?itemName=oracle-labs-graalvm.visualvm-vscode)
150+
* Continues to get updates / releases (latest: 2.2 - Apr 2025)
151+
152+
<small>📄 License: GNU General Public License (GPLv2)</small>
103153
</textarea>
104154
</section>
155+
<section data-markdown>
156+
<textarea data-template>
157+
## VisualVM Updates
158+
## <img src="img/visualvm.png" width="150" />
159+
* Can be utilized with other languages through GraalVM (Ruby, Javascript, Python, R)
160+
* Can load heap dumps, JDK Flight Recordings, and coredumps
161+
</textarea>
162+
</section>
163+
<section data-markdown data-background-iframe="https://visualvm.github.io/" data-background-opacity="0.2">
164+
<textarea data-template>
165+
## VisualVM Updates
166+
⭐️ See [Releases page](https://visualvm.github.io/releases.html) for noteable changes.
167+
</textarea>
168+
</section>
169+
170+
<!-- Jolokia -->
171+
<section data-markdown data-background-iframe="https://jolokia.org/index.html" data-background-opacity="0.2">
172+
<textarea data-template>
173+
## [Jolokia](https://jolokia.org)
174+
* Alternative to JSR-160 connectors
175+
* Allows JMX over HTTP communication
176+
* Recent releases of JDK Mission Control 9.1 and VisualVM 2.2 have added support
177+
</textarea>
178+
</section>
179+
180+
<!-- Demo -->
181+
<section data-background-iframe="https://jvmperf.net/" data-background-opacity="0.2">
182+
<div class="foreground-text-dark">
183+
<h2><a href="https://jvmperf.net/">Demo 🚀</a></h2>
184+
</div>
185+
</section>
186+
187+
<!-- OpenTelemetry -->
188+
<section data-markdown data-background-iframe="https://opentelemetry.io" data-background-opacity="0.2">
189+
<textarea data-template>
190+
## OpenTelemetry 🔭
191+
(shout-out) <br />
192+
⭐️ [Java Support](https://opentelemetry.io/docs/languages/java/)
193+
194+
<small>📄 License: Apache 2.0</small>
195+
</textarea>
196+
</section>
197+
105198
<section data-markdown>
106199
<textarea data-template>
107200
## ✅
108201
## Recap
109202
* JDK Mission Control
110203
* Eclipse Memory Analyzer
111204
* VisualVM
205+
* OpenTelemetry
112206
* Learn more with [jvmperf.net](https://jvmperf.net)
113207
</textarea>
114208
</section>
209+
115210
<section>
116211
<h2>Thank you! 🎉</h2>
117212
Carl Chesser

0 commit comments

Comments
 (0)