Oh wow! Thanks Dmitry for all these references. I think that the fact Corretto includes that into JDK is the testament of the quality.
David, I hope this answers your concerns pretty much? On Thu, Dec 11, 2025 at 12:27 PM Dmitry Konstantinov <[email protected]> wrote: > > + 1 from my side > > 1) it is well known mature profiling tool, there are other cases when Apache > projects embedded it, for example: > - https://issues.apache.org/jira/browse/HADOOP-18055 > - https://issues.apache.org/jira/browse/HBASE-29045 > - https://issues.apache.org/jira/browse/FLINK-33325 > 2) Apache-2.0 license > 3) the dependency has a small size (less than 1Mb) and does not have > transitive dependencies to other 3rd parties > 4) the main contributors are now in Amazon, it is even included into Corretto > JDK now > (https://aws.amazon.com/about-aws/whats-new/2025/10/amazon-corretto-october-2025-quarterly-updates/ > ) > 5) the logic is disabled by default, so no impact if you do not use it. > > > On Wed, 10 Dec 2025 at 18:08, Štefan Miklošovič <[email protected]> > wrote: >> >> This capability is disabled by default, it is driven by a system >> property you have to set to true in order to be able to get an >> instance of AsyncProfiler which does the actual profiling. If >> disabled, which is default, then any calls via nodetool which needs >> AsyncProfiler (start, stop, status) would return a message that >> profiling is not enabled. >> >> Not sure if this answers your concerns but without knowingly turning >> it on nothing happens. >> >> On Wed, Dec 10, 2025 at 6:28 PM David Capwell <[email protected]> wrote: >> > >> > I have no issues adding it. I think my only real comment would be the >> > same as with manager; w/e we expose to the public api (in this case >> > Nodetool) we have to support, so if a 3rd party lib breaks compatibility >> > that puts us in a bind if we didn’t think about that up front. >> > >> > Having async-profiler exposed makes it easier to profile is a good thing. >> > Manager has (or is in the process of adding) API auth so we can lock down >> > async-profiler to those “allowed” but do we have similar in Nodetool? We >> > had an issue in the past that async-profiler would trigger a JVM crash >> > (JVM bug), so we had to limit calls to it until it was fixed. >> > >> > > On Dec 10, 2025, at 9:00 AM, Štefan Miklošovič <[email protected]> >> > > wrote: >> > > >> > > Worth to mention that we were also contemplating about the inclusion >> > > of jfr-convert so a user can also convert raw JFR files to e.g. HTML >> > > with heatmaps but we evaluated that it is not necessary. Sure, it >> > > would be comfortable, but ultimately not needed. Conversion of such a >> > > file via nodetool, on server side, is just not a good idea, it is not >> > > a job of a server to convert anything. >> > > >> > > In majority of cases, people using the profiler just want to get a >> > > HTML with cpu / allocation profile, it can even gather JFR files as >> > > such and fetch it is, it is just that the conversion as such can >> > > happen on client's side instead. >> > > >> > > I am +1 for introducing the core async profiler library only. >> > > >> > > On Wed, Dec 10, 2025 at 5:46 PM Bernardo Botella >> > > <[email protected]> wrote: >> > >> >> > >> Hi everyone! >> > >> >> > >> I’d like to propose adding the async-profiler library to the Cassandra >> > >> project. This will enable us to add a new nodetool command to do >> > >> profiling tasks on the process running Cassandra. This information can >> > >> be useful to debug a wide range of potential issues and performance >> > >> optimizations. CASSANDRA-20854 captures the effort and the details of >> > >> the proposal, and this PR proposes its implementation. >> > >> >> > >> I want to note that this feature was already discussed in this thread, >> > >> and this one only want to make sure that no one has any concerns about >> > >> adding the library as a dependency. >> > >> >> > >> What is async-profiler? >> > >> async-profiler is a low overhead sampling profiler for Java that does >> > >> not suffer from the Safepoint bias problem. It features >> > >> HotSpot-specific API to collect stack traces and to track memory >> > >> allocations. The profiler works with OpenJDK and other Java runtimes >> > >> based on the HotSpot JVM. >> > >> >> > >> Unlike traditional Java profilers, async-profiler monitors non-Java >> > >> threads (e.g., GC and JIT compiler threads) and shows native and kernel >> > >> frames in stack traces. >> > >> >> > >> What can be profiled: >> > >> >> > >> CPU time >> > >> Allocations in Java Heap >> > >> Native memory allocations and leaks >> > >> Contended locks >> > >> Hardware and software performance counters like cache misses, page >> > >> faults, context switches >> > >> and more. >> > >> >> > >> >> > >> We propose to add async-profiler 4.2 as a dependency to Cassandra. >> > >> >> > >> Any concerns? >> > >> Bernardo >> > > > > > -- > Dmitry Konstantinov
