SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.1
Java Flight Recorder
Behind the Scenes
Staffan Larsen
Java SE Serviceability Architect
staffan.larsen@oracle.com
@stalar
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3
The following is intended to outline our general product direction. It is intended
for information purposes only, and may not be incorporated into any contract.
It is not a commitment to deliver any material, code, or functionality, and should
not be relied upon in making purchasing decisions. The development, release,
and timing of any features or functionality described for Oracle s products
remains at the sole discretion of Oracle.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4
Java Flight Recorder
§  Tracer and Profiler
§  Non-intrusive
§  Built into the JVM itself
§  On-demand profiling
§  After-the-fact capture and analysis
§  First released in 7u40
Photograph by Jeffrey Milstein
http://butdoesitfloat.com/In-the-presence-of-massive-gravitational-fields-this-perfect
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.5
Tracer and Profiler
§  Captures both JVM and application data
–  Garbage Collections
–  Synchronization
–  Compiler
–  CPU Usage
–  Exceptions
–  I/O
§  Sampling-based profiler
–  Very low overhead
–  Accurate data
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6
Non-Intrusive
§  Typical overhead in benchmarks: 2-3% (!)
§  Often not noticeable in typical production environments
§  Turn on and off in runtime
§  Information already available in the JVM
–  Zero extra cost
Photograph: Andrew Rivett
http://www.flickr.com/photos/veggiefrog/3435380297/
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7
Built into the JVM itself
§  Core of JFR is inside the JVM
§  Can easily interact with other JVM subsystems
§  Optimized C++ code
§  Supporting functionality written in Java
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8
On-Demand Profiling
§  Start from Java Mission Control
–  Or from the command line
§  Easily configure the amount of information to
capture
§  For a profile, a higher overhead can be
acceptable
§  When done, no overhead
§  Powerful GUI for analysis
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.9
After-the-Fact Analysis
§  In its default mode, very low overhead
§  Designed to be always-on
§  Uses circular buffers to store data
–  In-memory or on-disk
§  When an SLA breach is detected, dump the current buffers
§  Dump will have information leading up to the problem
n
n+1
n+2n+3
n+4
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11
Agenda
§  Overview of JFR
§  Demo!
§  Configuration topics
§  Implementation details
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.12
Configuration
§  Enable
-­‐XX:+UnlockCommercialFeatures	
  -­‐XX:+FlightRecorder	
  
§  Start
-­‐XX:StartFlightRecording=filename=<path>,duration=<time>	
  
§  Or
jcmd	
  <pid>	
  JFR.start	
  filename=<path>	
  duration=<time>	
  
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.13
Advanced Configuration
Per Recording Session
Max age of data maxage=<time>
Max size to keep maxsize=<size>
Global Settings (-XX:FlightRecorderOptions)
Max stack trace depth stackdepth=<n> (default 64)
Save recording on exit dumponexit=true
Logging loglevel=[ERROR|WARN|INFO|
DEBUG|TRACE]
Repository path repository=<path>
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.14
Recording Sessions
§  Recordings can specify exactly which information to capture
–  ~80 events with 3 settings each
§  But: two preconfigured settings
–  “default”: provides as much information as possible while keeping
overhead to a minimum
–  “profile”: has more information, but also higher overhead
§  You can configure your own favorites in Mission Control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15
Many Simultaneous Recording Sessions
§  This works great
§  Each session can have its own settings
§  Caveat: If there are multiple sessions all of them get the union of the
enabled events
–  Ex: If event A is enabled in on recording, all recordings will see event A
–  Ex: If event B has two different thresholds, the lower value will apply
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16
JVM
How Is It Built?
§  Information gathering
–  Instrumentation calls all over the
JVM
–  Application information via Java
API
§  Collected in Thread Local buffers
⇢ Global Buffers ⇢Disk
§  Binary, proprietary file format
§  Managed via JMX
JFR
Thread
Buffers
Disk
JMX Java API
Global
Buffers
GC RuntimeCompiler
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17
“Everything Is an Event”
§  Header
§  Payload
–  Event specific data
Event ID
End Time
Start Time
Thread ID
StackTrace ID
Payload
Header
Optional
Size
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18
Event Types
§  Instant
–  Single point in time
–  Ex: Thread starts
§  Duration
–  Timing for something
–  Ex: GC
§  Requestable
–  Happens with a specified frequency
–  Ex: CPU Usage every second
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19
Event Meta Data
§  For every event
–  Name, Path, Description
§  For every payload item
–  Name, Type, Description, Content Type
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20
“Content Type”
§  Describes the semantics of a value
§  Used to correctly display the value in the UI
Content Type Displayed as
Bytes 4 MB
Percentage 34 %
Address 0x23CDA540
Millis 17 ms
Nanos 4711 ns
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21
Event Definition in Hotspot
<event 	
  id="ThreadSleep"	
  	
  	
  
	
  path="java/thread_sleep"	
  
	
  label="Java	
  Thread	
  Sleep"	
  ...>	
  
	
  	
  	
  <value 	
  field="time"	
  	
  
	
  type="MILLIS"	
  	
  
	
  label="Sleep	
  Time"/>	
  
</event>	
  
§  XML definitions are processed into C++ classes
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22
Event Emission in Hotspot
JVM_Sleep(int	
  millis)	
  {	
  
	
  	
   	
  EventThreadSleep	
  event;	
  
	
  
	
  	
   	
  ...	
  //	
  actual	
  sleep	
  happens	
  here	
  
	
  	
  
	
   	
  event.set_time(millis);	
  
	
   	
  event.commit();	
  
}	
  
	
  
§  Done! Data is now available in JFR
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23
Thread Park
<event	
  id="ThreadPark"	
  path="java/thread_park"	
  
	
  	
  	
  	
  	
  	
  label="Java	
  Thread	
  Park"	
  
	
  	
  	
  	
  	
  	
  has_thread="true"	
  has_stacktrace="true"	
  is_instant="false">	
  
	
  	
  	
  <value	
  type="CLASS"	
  field="klass"	
  label="Class	
  Parked	
  On"/>	
  
	
  	
  	
  <value	
  type="MILLIS"	
  field="timeout"	
  label="Park	
  Timeout"/>	
  
	
  	
  	
  <value	
  type="ADDRESS"	
  field="address"	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  label="Address	
  of	
  Object	
  Parked"/>	
  
</event>	
  
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.24
Thread Park
UnsafePark(jboolean	
  isAbsolute,	
  jlong	
  time)	
  {	
  
	
  	
  EventThreadPark	
  event;	
  
	
  	
  JavaThreadParkedState	
  jtps(thread,	
  time	
  !=	
  0);	
  
	
  	
  thread-­‐>parker()-­‐>park(isAbsolute	
  !=	
  0,	
  time);	
  
	
  	
  if	
  (event.should_commit())	
  {	
  
	
  	
  	
  	
  oop	
  obj	
  =	
  thread-­‐>current_park_blocker();	
  
	
  	
  	
  	
  event.set_klass(obj	
  ?	
  obj-­‐>klass()	
  :	
  NULL);	
  
	
  	
  	
  	
  event.set_timeout(time);	
  
	
  	
  	
  	
  event.set_address(obj	
  ?	
  (TYPE_ADDRESS)obj	
  :	
  0);	
  
	
  	
  	
  	
  event.commit();	
  
	
  	
  }	
  
}	
  
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.25
Event Graph
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.26
Event Details
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27
Buffers
§  “Circular”
§  Designed for low contention
Thread
Local
Buffers
Global
Buffers
Disk
Chunk
Repository
JVM
Java
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28
Filtering Early
§  Enable/disable event
§  Thresholds
–  Only if duration is longer than X
§  Enable/disable stack trace
§  Frequency
–  Sample every X
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29
File Format
§  Self-contained
–  Everything needed to parse an event is included in the file
–  New events instantly viewable in the UI
§  Binary, proprietary
§  Designed for fast writing
§  Single file, no dependencies
Event Records Event Definitions …Header
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30
Dynamic Runtime and Long-Running
Recordings
§  Can’t leak memory
–  Can’t aggregate information eternally
–  Can’t keep references that prohibits class unloading
§  Dynamic Runtime
–  Classes can come and go
–  Threads can come and go
§  Solutions: Constant Pools, Checkpoints
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31
Problem: Many Events Reference Classes
§  If every event contained the class name as a string, we would waste
lots of space
§  Solution: Class IDs
class	
  Klass	
  {	
  
	
  	
  	
  …	
  
	
  	
  	
  u8	
  _trace_id;	
  
	
  	
  	
  …	
  
}	
  
17event id
class
count
java.lang.Integer
2
…
17event id
class
count
4711
2
…
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32
Problem: When Do We Write the Class IDs?
§  IDs need to be part of the file
§  Classes can be unloaded at any time
–  Class may not be around until end of recording
§  Solution: write Class ID when classes are unloaded
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33
Problem: Size of the Class List
§  Many classes are loaded, not all are referenced in events, we want to
save space
§  Solution: when a class ID is referenced, the class is also “tagged”
–  Write only tagged classes in the JFR file
#define	
  CLASS_USED	
  1	
  
	
  
void	
  use_class_id(Klass*	
  const	
  klass)	
  {	
  
	
  	
  klass-­‐>_trace_id	
  |=	
  CLASS_USED;	
  
}	
  
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34
Problem: Leaking Memory
§  Over time many classes will be tagged, the size of the class list will
increase
§  Solution: reset the tags each time a class list is written to disk
§  We call this a “Checkpoint”
§  A recording file may contain many class lists, each one is only valid for
the data immediately preceding it
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35
Constant Pools
§  The Class List is a special case of a Constant Pool
§  Classes
§  Methods
§  Threads
§  Thread Groups
§  Stack Traces
§  Strings
class_pool.lookup(4711)	
  
	
  	
  ➞	
  java.lang.Integer	
  
	
  
method_pool.lookup(1729)	
  
	
  	
  ➞	
  java.lang.Math:pow()	
  
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36
Checkpoints
§  At regular intervals, a “checkpoint” is
created in the recording
§  Has everything needed to parse the
recording since the last checkpoint
checkpoint =
events
+ constant pools
+ event meta-data
events
constant pools
meta-data
checkpoint
JFR File
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37
Optimizations
§  Fast Timestamps
–  Fast, high resolution CPU time where available
–  Invariant TSC instructions
§  Stack Traces
–  Each event stores the thread’s stack trace
–  Pool of stack traces
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38
Differences vs. JRockit
§  I/O: File path, Socket address
§  Exceptions
§  Reverse call trace view in Mission Control
§  Easier configuration in Mission Control
§  Deeper (configurable) stack traces
§  Internal JVM differences: GC
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39
More Information
§  Whitepaper
http://www.oracle.com/missioncontrol
§  User Guide
http://docs.oracle.com/javase/7/docs/technotes/guides/jfr/index.html
§  Forum
https://forums.oracle.com/community/developer/english/java/
java_hotspot_virtual_machine/java_mission_control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40
-­‐XX:+UnlockCommercialFeatures	
  	
  
-­‐XX:+FlightRecorder	
  
Remember
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41
@stalar
staffan.larsen@oracle.com
serviceability-dev@openjdk.java.net
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42

Mais conteúdo relacionado

Mais procurados

ONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN publicONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN publicManabu Ori
 
Automated out-of-band management with Ansible and Redfish
Automated out-of-band management with Ansible and RedfishAutomated out-of-band management with Ansible and Redfish
Automated out-of-band management with Ansible and RedfishJose De La Rosa
 
BUD17-416: Benchmark and profiling in OP-TEE
BUD17-416: Benchmark and profiling in OP-TEE BUD17-416: Benchmark and profiling in OP-TEE
BUD17-416: Benchmark and profiling in OP-TEE Linaro
 
z/OS Communications Server Technical Update
z/OS Communications Server Technical Updatez/OS Communications Server Technical Update
z/OS Communications Server Technical UpdatezOSCommserver
 
Adopting OpenTelemetry
Adopting OpenTelemetryAdopting OpenTelemetry
Adopting OpenTelemetryVincent Behar
 
Your 1st Ceph cluster
Your 1st Ceph clusterYour 1st Ceph cluster
Your 1st Ceph clusterMirantis
 
Network Topology Mapper 5.6
Network Topology Mapper 5.6Network Topology Mapper 5.6
Network Topology Mapper 5.6SolarWinds
 
APC InRack (RACS) Configurations
APC  InRack (RACS) ConfigurationsAPC  InRack (RACS) Configurations
APC InRack (RACS) ConfigurationsSaeed Arabnia
 
Oracle it runs zfs storage appliance
Oracle it runs zfs storage applianceOracle it runs zfs storage appliance
Oracle it runs zfs storage appliancesolarisyougood
 
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...Odinot Stanislas
 
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...Vietnam Open Infrastructure User Group
 
IBM Health Center Details
IBM Health Center DetailsIBM Health Center Details
IBM Health Center DetailsRohit Kelapure
 
Container Performance Analysis
Container Performance AnalysisContainer Performance Analysis
Container Performance AnalysisBrendan Gregg
 
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)zOSCommserver
 
Ceph and Openstack in a Nutshell
Ceph and Openstack in a NutshellCeph and Openstack in a Nutshell
Ceph and Openstack in a NutshellKaran Singh
 
Using the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentUsing the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentFlink Forward
 
Paul Angus - CloudStack Backup and Recovery Framework
Paul Angus - CloudStack Backup and Recovery FrameworkPaul Angus - CloudStack Backup and Recovery Framework
Paul Angus - CloudStack Backup and Recovery FrameworkShapeBlue
 
[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOSAkihiro Suda
 
Linux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFLinux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFBrendan Gregg
 

Mais procurados (20)

ONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN publicONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN public
 
Automated out-of-band management with Ansible and Redfish
Automated out-of-band management with Ansible and RedfishAutomated out-of-band management with Ansible and Redfish
Automated out-of-band management with Ansible and Redfish
 
BUD17-416: Benchmark and profiling in OP-TEE
BUD17-416: Benchmark and profiling in OP-TEE BUD17-416: Benchmark and profiling in OP-TEE
BUD17-416: Benchmark and profiling in OP-TEE
 
z/OS Communications Server Technical Update
z/OS Communications Server Technical Updatez/OS Communications Server Technical Update
z/OS Communications Server Technical Update
 
Adopting OpenTelemetry
Adopting OpenTelemetryAdopting OpenTelemetry
Adopting OpenTelemetry
 
Your 1st Ceph cluster
Your 1st Ceph clusterYour 1st Ceph cluster
Your 1st Ceph cluster
 
SRE & Kubernetes
SRE & KubernetesSRE & Kubernetes
SRE & Kubernetes
 
Network Topology Mapper 5.6
Network Topology Mapper 5.6Network Topology Mapper 5.6
Network Topology Mapper 5.6
 
APC InRack (RACS) Configurations
APC  InRack (RACS) ConfigurationsAPC  InRack (RACS) Configurations
APC InRack (RACS) Configurations
 
Oracle it runs zfs storage appliance
Oracle it runs zfs storage applianceOracle it runs zfs storage appliance
Oracle it runs zfs storage appliance
 
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
 
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
 
IBM Health Center Details
IBM Health Center DetailsIBM Health Center Details
IBM Health Center Details
 
Container Performance Analysis
Container Performance AnalysisContainer Performance Analysis
Container Performance Analysis
 
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)
 
Ceph and Openstack in a Nutshell
Ceph and Openstack in a NutshellCeph and Openstack in a Nutshell
Ceph and Openstack in a Nutshell
 
Using the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentUsing the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production Deployment
 
Paul Angus - CloudStack Backup and Recovery Framework
Paul Angus - CloudStack Backup and Recovery FrameworkPaul Angus - CloudStack Backup and Recovery Framework
Paul Angus - CloudStack Backup and Recovery Framework
 
[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS
 
Linux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFLinux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPF
 

Semelhante a Java Flight Recorder Behind the Scenes

Diagnosing Your Application on the JVM
Diagnosing Your Application on the JVMDiagnosing Your Application on the JVM
Diagnosing Your Application on the JVMStaffan Larsen
 
Java mission control and java flight recorder
Java mission control and java flight recorderJava mission control and java flight recorder
Java mission control and java flight recorderWolfgang Weigend
 
JSR107 State of the Union JavaOne 2013
JSR107  State of the Union JavaOne 2013JSR107  State of the Union JavaOne 2013
JSR107 State of the Union JavaOne 2013Hazelcast
 
MySQL Webinar 2/4 Performance tuning, hardware, optimisation
MySQL Webinar 2/4 Performance tuning, hardware, optimisationMySQL Webinar 2/4 Performance tuning, hardware, optimisation
MySQL Webinar 2/4 Performance tuning, hardware, optimisationMark Swarbrick
 
JVMs in Containers - Best Practices
JVMs in Containers - Best PracticesJVMs in Containers - Best Practices
JVMs in Containers - Best PracticesDavid Delabassee
 
Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.Alexandre (Shura) Iline
 
ASML_FlightRecorderMeetsJava.pdf
ASML_FlightRecorderMeetsJava.pdfASML_FlightRecorderMeetsJava.pdf
ASML_FlightRecorderMeetsJava.pdfMiro Wengner
 
Coherence 12.1.2 Hidden Gems
Coherence 12.1.2 Hidden GemsCoherence 12.1.2 Hidden Gems
Coherence 12.1.2 Hidden Gemsharvraja
 
DevDays: Profiling With Java Flight Recorder
DevDays: Profiling With Java Flight RecorderDevDays: Profiling With Java Flight Recorder
DevDays: Profiling With Java Flight RecorderMiro Wengner
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...AMD Developer Central
 
Java Mission Control in Java SE 7U40
Java Mission Control in Java SE 7U40Java Mission Control in Java SE 7U40
Java Mission Control in Java SE 7U40Roger Brinkley
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production EnvironmentsBruno Borges
 
Running your Java EE 6 Applications in the Cloud
Running your Java EE 6 Applications in the CloudRunning your Java EE 6 Applications in the Cloud
Running your Java EE 6 Applications in the CloudArun Gupta
 
SFBay Area Solr Meetup - June 18th: Benchmarking Solr Performance
SFBay Area Solr Meetup - June 18th: Benchmarking Solr PerformanceSFBay Area Solr Meetup - June 18th: Benchmarking Solr Performance
SFBay Area Solr Meetup - June 18th: Benchmarking Solr PerformanceLucidworks (Archived)
 
Spark to Production @Windward
Spark to Production @WindwardSpark to Production @Windward
Spark to Production @WindwardDemi Ben-Ari
 
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishArun Gupta
 
C* Summit 2013: Real-Time Big Data with Storm, Cassandra, and In-Memory Compu...
C* Summit 2013: Real-Time Big Data with Storm, Cassandra, and In-Memory Compu...C* Summit 2013: Real-Time Big Data with Storm, Cassandra, and In-Memory Compu...
C* Summit 2013: Real-Time Big Data with Storm, Cassandra, and In-Memory Compu...DataStax Academy
 
Tuning Java for Big Data
Tuning Java for Big DataTuning Java for Big Data
Tuning Java for Big DataScott Seighman
 

Semelhante a Java Flight Recorder Behind the Scenes (20)

Diagnosing Your Application on the JVM
Diagnosing Your Application on the JVMDiagnosing Your Application on the JVM
Diagnosing Your Application on the JVM
 
Java mission control and java flight recorder
Java mission control and java flight recorderJava mission control and java flight recorder
Java mission control and java flight recorder
 
JSR107 State of the Union JavaOne 2013
JSR107  State of the Union JavaOne 2013JSR107  State of the Union JavaOne 2013
JSR107 State of the Union JavaOne 2013
 
MySQL Webinar 2/4 Performance tuning, hardware, optimisation
MySQL Webinar 2/4 Performance tuning, hardware, optimisationMySQL Webinar 2/4 Performance tuning, hardware, optimisation
MySQL Webinar 2/4 Performance tuning, hardware, optimisation
 
JVMs in Containers - Best Practices
JVMs in Containers - Best PracticesJVMs in Containers - Best Practices
JVMs in Containers - Best Practices
 
Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.
 
JVMs in Containers
JVMs in ContainersJVMs in Containers
JVMs in Containers
 
ASML_FlightRecorderMeetsJava.pdf
ASML_FlightRecorderMeetsJava.pdfASML_FlightRecorderMeetsJava.pdf
ASML_FlightRecorderMeetsJava.pdf
 
Coherence 12.1.2 Hidden Gems
Coherence 12.1.2 Hidden GemsCoherence 12.1.2 Hidden Gems
Coherence 12.1.2 Hidden Gems
 
DevDays: Profiling With Java Flight Recorder
DevDays: Profiling With Java Flight RecorderDevDays: Profiling With Java Flight Recorder
DevDays: Profiling With Java Flight Recorder
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
 
Java Mission Control in Java SE 7U40
Java Mission Control in Java SE 7U40Java Mission Control in Java SE 7U40
Java Mission Control in Java SE 7U40
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production Environments
 
Effective Spark on Multi-Tenant Clusters
Effective Spark on Multi-Tenant ClustersEffective Spark on Multi-Tenant Clusters
Effective Spark on Multi-Tenant Clusters
 
Running your Java EE 6 Applications in the Cloud
Running your Java EE 6 Applications in the CloudRunning your Java EE 6 Applications in the Cloud
Running your Java EE 6 Applications in the Cloud
 
SFBay Area Solr Meetup - June 18th: Benchmarking Solr Performance
SFBay Area Solr Meetup - June 18th: Benchmarking Solr PerformanceSFBay Area Solr Meetup - June 18th: Benchmarking Solr Performance
SFBay Area Solr Meetup - June 18th: Benchmarking Solr Performance
 
Spark to Production @Windward
Spark to Production @WindwardSpark to Production @Windward
Spark to Production @Windward
 
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFish
 
C* Summit 2013: Real-Time Big Data with Storm, Cassandra, and In-Memory Compu...
C* Summit 2013: Real-Time Big Data with Storm, Cassandra, and In-Memory Compu...C* Summit 2013: Real-Time Big Data with Storm, Cassandra, and In-Memory Compu...
C* Summit 2013: Real-Time Big Data with Storm, Cassandra, and In-Memory Compu...
 
Tuning Java for Big Data
Tuning Java for Big DataTuning Java for Big Data
Tuning Java for Big Data
 

Último

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 

Último (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 

Java Flight Recorder Behind the Scenes

  • 1. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.1
  • 2. Java Flight Recorder Behind the Scenes Staffan Larsen Java SE Serviceability Architect staffan.larsen@oracle.com @stalar
  • 3. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle.
  • 4. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4 Java Flight Recorder §  Tracer and Profiler §  Non-intrusive §  Built into the JVM itself §  On-demand profiling §  After-the-fact capture and analysis §  First released in 7u40 Photograph by Jeffrey Milstein http://butdoesitfloat.com/In-the-presence-of-massive-gravitational-fields-this-perfect
  • 5. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.5 Tracer and Profiler §  Captures both JVM and application data –  Garbage Collections –  Synchronization –  Compiler –  CPU Usage –  Exceptions –  I/O §  Sampling-based profiler –  Very low overhead –  Accurate data
  • 6. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6 Non-Intrusive §  Typical overhead in benchmarks: 2-3% (!) §  Often not noticeable in typical production environments §  Turn on and off in runtime §  Information already available in the JVM –  Zero extra cost Photograph: Andrew Rivett http://www.flickr.com/photos/veggiefrog/3435380297/
  • 7. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7 Built into the JVM itself §  Core of JFR is inside the JVM §  Can easily interact with other JVM subsystems §  Optimized C++ code §  Supporting functionality written in Java
  • 8. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8 On-Demand Profiling §  Start from Java Mission Control –  Or from the command line §  Easily configure the amount of information to capture §  For a profile, a higher overhead can be acceptable §  When done, no overhead §  Powerful GUI for analysis
  • 9. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.9 After-the-Fact Analysis §  In its default mode, very low overhead §  Designed to be always-on §  Uses circular buffers to store data –  In-memory or on-disk §  When an SLA breach is detected, dump the current buffers §  Dump will have information leading up to the problem n n+1 n+2n+3 n+4
  • 10. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10
  • 11. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11 Agenda §  Overview of JFR §  Demo! §  Configuration topics §  Implementation details
  • 12. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.12 Configuration §  Enable -­‐XX:+UnlockCommercialFeatures  -­‐XX:+FlightRecorder   §  Start -­‐XX:StartFlightRecording=filename=<path>,duration=<time>   §  Or jcmd  <pid>  JFR.start  filename=<path>  duration=<time>  
  • 13. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.13 Advanced Configuration Per Recording Session Max age of data maxage=<time> Max size to keep maxsize=<size> Global Settings (-XX:FlightRecorderOptions) Max stack trace depth stackdepth=<n> (default 64) Save recording on exit dumponexit=true Logging loglevel=[ERROR|WARN|INFO| DEBUG|TRACE] Repository path repository=<path>
  • 14. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.14 Recording Sessions §  Recordings can specify exactly which information to capture –  ~80 events with 3 settings each §  But: two preconfigured settings –  “default”: provides as much information as possible while keeping overhead to a minimum –  “profile”: has more information, but also higher overhead §  You can configure your own favorites in Mission Control
  • 15. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15 Many Simultaneous Recording Sessions §  This works great §  Each session can have its own settings §  Caveat: If there are multiple sessions all of them get the union of the enabled events –  Ex: If event A is enabled in on recording, all recordings will see event A –  Ex: If event B has two different thresholds, the lower value will apply
  • 16. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16 JVM How Is It Built? §  Information gathering –  Instrumentation calls all over the JVM –  Application information via Java API §  Collected in Thread Local buffers ⇢ Global Buffers ⇢Disk §  Binary, proprietary file format §  Managed via JMX JFR Thread Buffers Disk JMX Java API Global Buffers GC RuntimeCompiler
  • 17. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17 “Everything Is an Event” §  Header §  Payload –  Event specific data Event ID End Time Start Time Thread ID StackTrace ID Payload Header Optional Size
  • 18. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18 Event Types §  Instant –  Single point in time –  Ex: Thread starts §  Duration –  Timing for something –  Ex: GC §  Requestable –  Happens with a specified frequency –  Ex: CPU Usage every second
  • 19. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19 Event Meta Data §  For every event –  Name, Path, Description §  For every payload item –  Name, Type, Description, Content Type
  • 20. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20 “Content Type” §  Describes the semantics of a value §  Used to correctly display the value in the UI Content Type Displayed as Bytes 4 MB Percentage 34 % Address 0x23CDA540 Millis 17 ms Nanos 4711 ns
  • 21. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21 Event Definition in Hotspot <event  id="ThreadSleep"        path="java/thread_sleep"    label="Java  Thread  Sleep"  ...>        <value  field="time"      type="MILLIS"      label="Sleep  Time"/>   </event>   §  XML definitions are processed into C++ classes
  • 22. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22 Event Emission in Hotspot JVM_Sleep(int  millis)  {        EventThreadSleep  event;          ...  //  actual  sleep  happens  here          event.set_time(millis);      event.commit();   }     §  Done! Data is now available in JFR
  • 23. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23 Thread Park <event  id="ThreadPark"  path="java/thread_park"              label="Java  Thread  Park"              has_thread="true"  has_stacktrace="true"  is_instant="false">        <value  type="CLASS"  field="klass"  label="Class  Parked  On"/>        <value  type="MILLIS"  field="timeout"  label="Park  Timeout"/>        <value  type="ADDRESS"  field="address"                        label="Address  of  Object  Parked"/>   </event>  
  • 24. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.24 Thread Park UnsafePark(jboolean  isAbsolute,  jlong  time)  {      EventThreadPark  event;      JavaThreadParkedState  jtps(thread,  time  !=  0);      thread-­‐>parker()-­‐>park(isAbsolute  !=  0,  time);      if  (event.should_commit())  {          oop  obj  =  thread-­‐>current_park_blocker();          event.set_klass(obj  ?  obj-­‐>klass()  :  NULL);          event.set_timeout(time);          event.set_address(obj  ?  (TYPE_ADDRESS)obj  :  0);          event.commit();      }   }  
  • 25. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.25 Event Graph
  • 26. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.26 Event Details
  • 27. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27 Buffers §  “Circular” §  Designed for low contention Thread Local Buffers Global Buffers Disk Chunk Repository JVM Java
  • 28. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28 Filtering Early §  Enable/disable event §  Thresholds –  Only if duration is longer than X §  Enable/disable stack trace §  Frequency –  Sample every X
  • 29. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29 File Format §  Self-contained –  Everything needed to parse an event is included in the file –  New events instantly viewable in the UI §  Binary, proprietary §  Designed for fast writing §  Single file, no dependencies Event Records Event Definitions …Header
  • 30. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30 Dynamic Runtime and Long-Running Recordings §  Can’t leak memory –  Can’t aggregate information eternally –  Can’t keep references that prohibits class unloading §  Dynamic Runtime –  Classes can come and go –  Threads can come and go §  Solutions: Constant Pools, Checkpoints
  • 31. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31 Problem: Many Events Reference Classes §  If every event contained the class name as a string, we would waste lots of space §  Solution: Class IDs class  Klass  {        …        u8  _trace_id;        …   }   17event id class count java.lang.Integer 2 … 17event id class count 4711 2 …
  • 32. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32 Problem: When Do We Write the Class IDs? §  IDs need to be part of the file §  Classes can be unloaded at any time –  Class may not be around until end of recording §  Solution: write Class ID when classes are unloaded
  • 33. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33 Problem: Size of the Class List §  Many classes are loaded, not all are referenced in events, we want to save space §  Solution: when a class ID is referenced, the class is also “tagged” –  Write only tagged classes in the JFR file #define  CLASS_USED  1     void  use_class_id(Klass*  const  klass)  {      klass-­‐>_trace_id  |=  CLASS_USED;   }  
  • 34. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34 Problem: Leaking Memory §  Over time many classes will be tagged, the size of the class list will increase §  Solution: reset the tags each time a class list is written to disk §  We call this a “Checkpoint” §  A recording file may contain many class lists, each one is only valid for the data immediately preceding it
  • 35. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35 Constant Pools §  The Class List is a special case of a Constant Pool §  Classes §  Methods §  Threads §  Thread Groups §  Stack Traces §  Strings class_pool.lookup(4711)      ➞  java.lang.Integer     method_pool.lookup(1729)      ➞  java.lang.Math:pow()  
  • 36. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36 Checkpoints §  At regular intervals, a “checkpoint” is created in the recording §  Has everything needed to parse the recording since the last checkpoint checkpoint = events + constant pools + event meta-data events constant pools meta-data checkpoint JFR File
  • 37. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37 Optimizations §  Fast Timestamps –  Fast, high resolution CPU time where available –  Invariant TSC instructions §  Stack Traces –  Each event stores the thread’s stack trace –  Pool of stack traces
  • 38. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38 Differences vs. JRockit §  I/O: File path, Socket address §  Exceptions §  Reverse call trace view in Mission Control §  Easier configuration in Mission Control §  Deeper (configurable) stack traces §  Internal JVM differences: GC
  • 39. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39 More Information §  Whitepaper http://www.oracle.com/missioncontrol §  User Guide http://docs.oracle.com/javase/7/docs/technotes/guides/jfr/index.html §  Forum https://forums.oracle.com/community/developer/english/java/ java_hotspot_virtual_machine/java_mission_control
  • 40. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40 -­‐XX:+UnlockCommercialFeatures     -­‐XX:+FlightRecorder   Remember
  • 41. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41 @stalar staffan.larsen@oracle.com serviceability-dev@openjdk.java.net
  • 42. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42