Call for Discussion: New Project: Skogsluft

Jaroslav Bachorík jaroslav.bachorik at datadoghq.com
Fri Feb 2 17:15:18 UTC 2024


I hereby invite discussion of a new Project, "Skogsluft," whose primary
goal will be to improve Java's profiling capabilities within Java Flight
Recorder (JFR). This project aims to introduce advanced profiling features
that bridge the gap between Java and native code execution, and offer more
precise and flexible profiling options.

The focus will be on three key enhancements:

1. An improved stackwalker, capable of seamlessly walking mixed Java/native
stacks. This will provide developers with a more coherent view of the stack
traces, especially in applications where Java and native codes are
interwoven.

2. A flexible CPU sampler scheduler. On Linux, this will be based on
perf_event_open or timer_create systems, and on MacOS, we will utilize
itimer. For other operating systems, the system will fall back to standard
execution samples. This enhancement aims to offer more accurate and
adaptable CPU sampling, taking into account the diverse environments in
which Java applications run.

3. Labelling support for JFR. This will allow developers to set per-thread
key-value labels that are automatically incorporated into any JFR event.
Such labelling will provide richer context in profiling data, enabling more
targeted analysis and debugging.

To implement these enhancements, the "Skogsluft" will extend Java's
profiling capabilities in JFR with the following approaches:

Development of a cross-platform stackwalker that integrates native and Java
stack frames, ensuring compatibility and efficiency across different
operating systems.

Design and integration of a scheduler for CPU sampling that adapts to the
underlying operating system's capabilities, offering both precision and
performance.

Extension of the JFR API to support easy and flexible labelling of threads,
ensuring that these labels are consistently captured in profiling data.

I am looking for an OpenJDK group willing to sponsor this project and
provide a person to lead this project.

For the "Skogsluft" this Project will start with a clone of the current JDK
main-line release, JDK 23, and track main-line releases going forward. The
project will involve creating a separate repository for the development of
these new profiling features, ensuring they are compatible and
well-integrated with existing JFR functionalities.

The "Skogsluft" is expected to deliver the features over time, in a series
of JEPs (JDK Enhancement Proposals) that will likely span multiple feature
releases. The aim is to eventually integrate these profiling improvements
into the standard JDK distributions, enhancing the capabilities of JFR and
providing developers with more powerful tools for performance analysis and
debugging.

With regards,

Jaroslav Bachorik
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/discuss/attachments/20240202/05ca3cca/attachment.htm>


More information about the discuss mailing list