使用async-profiler工具分析spark executor性能

举报
养猪技术专家 发表于 2020/05/19 17:40:36 2020/05/19
【摘要】 Async-profiler可以观测运行程序中每一段代码所占用的cpu的时间和比例,从而可以分析并找到项目中占用cpu时间最长的代码片段,优化热点代码,达到优化内存的效果。它具有特定于HotSpot的API,以收集堆栈跟踪并跟踪内存分配,探查器可与基于HotSpot JVM的OpenJDK,Oracle JDK和其他Java运行时一起使用。
  1. 下载安装包:https://github.com/jvm-profiling-tools/async-profiler

  2. 根据实际情况选择版本,这里我选择 Linux x64 (glibc): async-profiler-1.7.1-linux-x64.tar.gz

  3. 解压发送到spark各个节点的统一位置,权限可以改为777

  4. 各个节点执行

    echo 1 > /proc/sys/kernel/perf_event_paranoid

    echo 0 > /proc/sys/kernel/kptr_restrict

  5. 找到executor进程CoarseGrainedExecutorBackend所在pid,假如这里为3902

  6. 执行脚本运行分析命令,这里分析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文件,可以看到调用火焰图,宽的位置表示调用消耗高的位置。

image.png


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。