Hey, just a heads-up that I have spent some time on moving the work related to bringing async-profiler to Cassandra to more production-ready state after I have continued to work on the original code of Yaman and Bernardo who resolved the comments.
For anybody interested here is the branch https://github.com/apache/cassandra/pull/4487 and here is the usage: https://github.com/apache/cassandra/pull/4487/files#diff-374bb067d80842cd2ebd903b290ef247c0e66ee6ad8235eeb0c567ff6af28431 It would be great to gather more feedback on UX here, currently it is possible to (via nodetool profile) start / stop profiling list - gets list of resulting profile files on a node purge - remove results fetch - transfer results from node to local machine The reason for this design is that nodetool does not necessarily have to be executed on the same machine Cassandra runs at. That means that if we profile Cassandra remotely (calling respective MBean), then results (flamegraphs as html etc) would be stored on that node as well, but then a user does not necessarily have the access to that disk to actually see the results. Also, as any other new feature, the profiling capability is disabled by default (albeit it can be enabled in runtime if one wants, via JMX method only). One interesting feature to add is to be able to convert JFR (Java Flight Recorder) files async-profiler is producing to an output which also shows "heatmaps". This is a little bit more involved and not sure if that has to be the part of the initial implementation but it would be super cool if we can profile out of the box and have heatmaps automatically too. I am personally stoked about this async-profiler in Cassandra a lot. The experience in e.g. IDEA is also great as there is a very nice plugin to visualise JFR files so one can just look at them in IDEA, or we can just export into HTML etc ... Do you have any ideas / insights about what was done so far? I think this is a great way to shape the solution for now. Sidecar integration will be easy as well as that will just call related MBean methods. Regards On Thu, Jul 17, 2025 at 6:02 PM Doug Rohrer <[email protected]> wrote: > > We could build this as part of the existing work - just make the endpoint > take an option to allow the user to pick which one gets profiled? Or at least > have the API capable of it for the first iteration and then add support for > sidecar after the C* side is done? > > Doug > > > On Jul 16, 2025, at 6:27 PM, Francisco Guerrero <[email protected]> wrote: > > > >> Do we want to create a new JIRA ticket to have the async profiler > >> integration in Sidecar? > > > > Yes, +1 for this. I think it makes sense to also have async profiling > > capability in Sidecar itself > > > > On 2025/07/16 22:22:17 Yifan Cai wrote: > >> Late to the party. > >> > >> Sidecar is a JVM process that would benefit from async profiling too. > >> > >> Do we want to create a new JIRA ticket to have the async profiler > >> integration in Sidecar? > >> > >> - Yifan > >> > >> On Wed, Jul 16, 2025 at 3:17 PM Yaman Ziadeh (BLOOMBERG/ 919 3RD A) < > >> [email protected]> wrote: > >> > >>> Hi all, I've opened a draft PR for the C* async-profiler feature here > >>> https://github.com/apache/cassandra/pull/4255 with some initial basic > >>> implementation - The PR is currently incomplete, but thought I'd open it > >>> to > >>> get any feedback and pointers along the way! > >>> > >> >
