apache / apache/camel-quarkus

perf-regression: evaluate the possibility to use async-profiler during runs

Open
#5,461 6 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
302
Forks
232
Avg merge
1d 20h
Merged PRs (30d)
114

Description

### Describe the feature here

In some cases, it could be relevant to use async-profiler during performance runs.

The installation of async-profile is documented [here](https://github.com/async-profiler/async-profiler#download).
The kernel configuration should be edited as follow:

```
sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'
sudo sh -c 'echo 0 >/proc/sys/kernel/kptr_restrict'
```

From there, the regression sample app pom file could be completed with a java agent as below:

```
org.codehaus.mojo
exec-maven-plugin

java

-agentpath:/path-to-async-profiler/lib/libasyncProfiler.so=start,ann,threads,event=cpu,file=jvm_mode_report.html
-Dquarkus.http.port=${quarkus.http.port}
-jar
target/quarkus-app/quarkus-run.jar


```

A `report.html` file is generated in `target/cq-versions-under-test/version`.

Maybe it could be interesting to add a new tool option for this like `-ap path-to-async-profiler`.
Then the pom generation logic should be changed, probably xslt would be a better fit than maven xpp3.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the regression sample app's pom generation logic and the existing performance-run tool options. Review how the generated pom launches the application, then determine whether async-profiler can be exposed through a profiler-path option and whether XSLT is appropriate. Done means a decided integration approach and a working generated report.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.