我是靠谱客的博主 大意外套,这篇文章主要介绍perf 与 perf的java代理用法简介perf不能查看java进程的信息,现在分享给大家,希望可以做个参考。

perf top

默认情况下perf top是无法显示信息的,需要sudo perf top或者echo -1 > /proc/sys/kernel/perf_event_paranoid(在Ubuntu16.04,还需要echo 0 > /proc/sys/kernel/kptr_restrict)。

perf top -g -p PID(查看进程号是PID的进程的cpu占用信息,加-g参数可以打印详细堆栈信息)

即可以正常显示perf top如下:

第一列:符号引发的性能事件的比例,指占用的cpu周期比例。

第二列:符号所在的DSO(Dynamic Shared Object),可以是应用程序、内核、动态链接库、模块。

第三列:DSO的类型。[.]表示此符号属于用户态的ELF文件,包括可执行文件与动态链接库;[k]表述此符号属于内核或模块。

第四列:符号名。有些符号不能解析为函数名,只能用地址表示。

进入perf top后,需要查看堆栈信息,或选择指定进程等操作可输入?查看手册

 

perf不能查看java进程的信息

缺失Java函数信息的原因:

  • JVM内部即时编译器JIT,不会公开传统的符号表供系统分析器读取
  • JVM默认使用帧指针寄存器(x86-64上的RBP)作为通用寄存器,与传统的栈不同

为了使java进程可以用上perf,此时需要用到perf代理:perf-map-agent

  • 确保JDK版本Java 8 update 60 build 19及以上,该版本添加了-XX:+PreserveFramePointer选项的支持
  • 安装perf-map-agent步骤
sudo bash
yum -y install cmake
export JAVA_HOME=/path-to-your-new-jdk8
cd /destination-for-perf-map-agent  # I use /usr/lib/jvm
git clone --depth=1 https://github.com/jvm-profiling-tools/perf-map-agent
cd perf-map-agent
cmake .
make

最后

以上就是大意外套最近收集整理的关于perf 与 perf的java代理用法简介perf不能查看java进程的信息的全部内容,更多相关perf内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(124)

评论列表共有 0 条评论

立即
投稿
返回
顶部