I think supporting both an abstraction-layer bound "simple mode" and a "--raw 
for experts" is the way to go.

On Thu, Jun 19, 2025, at 1:23 PM, Jon Haddad wrote:
> I understand the motivation to decouple the command line configuration from 
> what we expose to end users, and to an extent, agree with the reasoning.  
> However, for folks like me that know the command line options and regularly 
> do things that you might not have planned out, I'd appreciate an escape hatch 
> where I can pass my raw commands.  Whatever you end up implementing, there's 
> almost certainly commands that experienced async-profiler folks will want to 
> use that weren't planned for.
> 
> I am also not particularly interested in learning another syntax only to have 
> it transformed into the thing I want to use.  I expect that would be a fairly 
> simple flag (nodetool profile --raw xyz) that would skip the parse logic, so 
> hopefully it's not too much trouble to add.  Reverse engineering the async 
> profiler syntax into the thing we decide to use is, at least for me, will be 
> a source of frustration.
> 
> Thanks,
> Jon
> 
> 
> 
> On Wed, Jun 18, 2025 at 4:01 PM Abe Ratnofsky <a...@aber.io> wrote:
>> Another vote in favor of including async-profiler as a library in C*. The 
>> new heatmap format in async-profiler 4.0[1] is excellent and makes 
>> long-running profiles miles more useful than a plain flamegraph, but it 
>> requires a post-processing step after a JFR is collected, which would 
>> require a dependency on jfr-converter.jar[2]. Exposing the JFR files 
>> directly would be reasonable but slightly less useful, and the 
>> post-processed heatmap HTML files are much smaller and self-contained. A 
>> recent example on my machine shows HTML at 1/20th the size of the raw JFR 
>> dump, which is meaningful especially for uploading to Jira.
>> 
>> Note that JDK25 will have experimental support for better CPU profiling[3], 
>> but async-profiler is still more mature and featureful, especially for other 
>> profiling types (wall, alloc).
>> 
>> [1]: 
>> https://github.com/async-profiler/async-profiler/blob/master/docs/Heatmap.md
>> [2]: 
>> https://github.com/async-profiler/async-profiler?tab=readme-ov-file#stable-release-40
>> [3]: 
>> https://mostlynerdless.de/blog/2025/06/11/java-25s-new-cpu-time-profiler-1/

Reply via email to