使用async-profiler工具分析spark executor性能
【摘要】 Async-profiler可以观测运行程序中每一段代码所占用的cpu的时间和比例,从而可以分析并找到项目中占用cpu时间最长的代码片段,优化热点代码,达到优化内存的效果。它具有特定于HotSpot的API,以收集堆栈跟踪并跟踪内存分配,探查器可与基于HotSpot JVM的OpenJDK,Oracle JDK和其他Java运行时一起使用。
下载安装包:https://github.com/jvm-profiling-tools/async-profiler
根据实际情况选择版本,这里我选择 Linux x64 (glibc): async-profiler-1.7.1-linux-x64.tar.gz
解压发送到spark各个节点的统一位置,权限可以改为777
各个节点执行
echo 1 > /proc/sys/kernel/perf_event_paranoid
echo 0 > /proc/sys/kernel/kptr_restrict
找到executor进程CoarseGrainedExecutorBackend所在pid,假如这里为3902
执行脚本运行分析命令,这里分析cpu使用情况,导出到svg文件中便于直观查看
./profiler.sh -d 20 -e cpu -f 3902 -cpu.svg 3902
如果上面不行,则用下面的方式(下面的方式导出到svg文件的时候,在浏览器打开前需要删除第一行)
./profiler.sh -d 30 -o svg -e cpu 3902 > 3902.svg
7. 在浏览器中打开分析后的svg文件,可以看到调用火焰图,宽的位置表示调用消耗高的位置。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)