我是靠谱客的博主 大意外套,最近开发中收集的这篇文章主要介绍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 与 perf的java代理用法简介perf不能查看java进程的信息所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部