lhotari commented on PR #22494:
URL: https://github.com/apache/pulsar/pull/22494#issuecomment-2052438415

   I did allocation profiling with Async Profiler. Used similar commands as in 
https://github.com/apache/pulsar/pull/22494#issuecomment-2052043146 , but with 
async profiler activated with `OPTS`.
   
   ```shell
   
OPTS="-agentpath:$HOME/tools/async-profiler/lib/libasyncProfiler.so=start,event=cpu,alloc=2m,lock=10ms,file=$PWD/profile.jfr"
 PULSAR_MEM="-Xms2g -Xmx4g -XX:MaxDirectMemorySize=6g" PULSAR_GC="-XX:+UseG1GC 
-XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch" 
PULSAR_EXTRA_OPTS="-Djute.maxbuffer=20000000" PULSAR_STANDALONE_USE_ZOOKEEPER=1 
bin/pulsar standalone -nss -nfw 2>&1 | tee standalone.log
   ```
   
   With 
`OPTS="-agentpath:$HOME/tools/async-profiler/lib/libasyncProfiler.so=start,event=cpu,alloc=2m,lock=10ms,file=$PWD/profile.jfr"`,
 it's possible to do CPU, allocation and lock profiling all at once. I run 
async-profiler on a Linux box to get best accuracy.
   
   After profiling, I then use this shell script function to generate multiple 
flamegraph htmls out of the JFR file:
   
https://github.com/lhotari/pulsar-contributor-toolbox/blob/c150c3d9afc23d4865c2e3283c087e1c1261b4ee/functions/pulsar-contributor-toolbox-functions.sh#L1438-L1458


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to