Javaでcloud profilerを使ってpprofフォーマットのプロファイルデータをローカルに出力する

cloud profilerにはローカルに、pb.gzフォーマットでプロファイルデータを出力する機能がある。 このファイルは、pprofのprotocol bufferをgzip圧縮したものだ。

やり方は以下のような形でagentに -cprof_profile_filename パラメータを渡して下さい。パラメータを渡さない場合、GCPにプロファイル結果を投げようとします。

$ java -agentpath:./cprof/profiler_java_agent.so=-cprof_profile_filename=./prof_ test &
$ ls
prof_cpu_1601995223.pb.gz  prof_cpu_1601995253.pb.gz  prof_wall_1601995160.pb.gz  prof_wall_1601995233.pb.gz  prof_wall_1601995243.pb.gz test.class  test.java

ちなみに自分が作ったエンドポイントに投げるような機能は存在せず、ローカルに吐くか GCPのほうに投げるかのどちらかになっている。 出てきたプロファイルデータはpprofを使って見て下さい。

pprof -http=: ./prof_cpu_1601995223.pb.gz

ちなみに、ローカルにプロファイルデータを吐く場合 この辺がパラメータとして弄れるようです。