perf-regression: evaluate the possibility to use async-profiler during runs
- 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