系统级性能分析工具perf的安装与使用

介绍

安装环境:Ubuntu16.04 + kernel 4.4.30

系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化。
性能剖析的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码。
代码优化的目标是针对具体性能问题而优化代码或编译选项,以改善软件性能。

在性能剖析阶段,需要借助于现有的profiling工具,如perf等。在代码优化阶段往往需要借助开发者的经验,编写简洁高效的代码,甚至在汇编级别合理使用各种指令,合理安排各种指令的执行顺序。

perf是一款Linux性能分析工具。Linux性能计数器是一个新的基于内核的子系统,它提供一个性能分析框架,比如硬件(CPU、PMU(Performance Monitoring Unit))功能和软件(软件计数器、tracepoint)功能。
通过perf,应用程序可以利用PMU、tracepoint和内核中的计数器来进行性能统计。它不但可以分析制定应用程序的性能问题(per thread),也可以用来分析内核的性能问题,当然也可以同事分析应用程序和内核,从而全面理解应用程序中的性能瓶颈。

使用perf,可以分析程序运行期间发生的硬件事件,比如instructions retired、processor clock cycles等;也可以分析软件时间,比如page fault和进程切换。

perf是一款综合性分析工具,大到系统全局性性能,再小到进程线程级别,甚至到函数及汇编级别。

安装

有几个方法可以尝试一下:
一、

  1. 终端进入/usr/src目录,获取源代码
	sudo apt-get install linux-sources

会安装上如下两个文件
在这里插入图片描述

  1. 在终端输入perf,会提示程序尚未安装可以用一下命令安装
	sudo apt install linux-tools-common
  1. 再次输入perf,提示如下
    在这里插入图片描述

    然后安装所需东西即可。

	apt-get install linux-tools-4.4.30-4.4.30

二、

  1. 终端进入/usr/src目录,获取源代码
	sudo apt-get install linux-sources

会安装上如下两个文件
在这里插入图片描述

  1. 进入 /usr/src/linux-source-4.4.0/linux-source-4.4.0/tools/perf
    make
    make install
    如图,在这两个过程中会提示需要什么package,然后将他们安装上就可以了,然后make,make install 成功就可以了。
    在这里插入图片描述
    三、
    我在4.4.30的内核上面没装成功。按着第一种方法来我无法定位软件包linux-tools-4.4.30-4.4.30,然后按着第二种方法来我也无法安装slang-devel or libslang-dev软件包。然后我用前面两种方法换了好几个源都不行的情况下,我选择了自己在网上下载对应自己内核的perf安装包。perf-4.4.30-2.mga5.x86_64.rpm。

    然后将该rpm转化为deb文件,安装成功即可
    其实前面两种办法都大同小异,就是需要安装一些依赖包。这两种办法我都装不上的缘故,估计是内核不支持的原因。

使用

  1. perf --help之后可以看到perf的二级命令。

    annotate Read perf.data (created by perf record) and display annotated code
    |archive | Create archive with object files with build-ids found in perf.data file
    bench General framework for benchmark suites
    buildid-cache Manage build-id cache.
    buildid-list List the buildids in a perf.data file
    data Data file related processing
    diff Read perf.data files and display the differential profile
    evlist List the event names in a perf.data file
    inject Filter to augment the events stream with additional information
    kmem Tool to trace/measure kernel memory properties
    kvm Tool to trace/measure kvm guest os
    list List all symbolic event types
    lock Analyze lock events
    mem Profile memory accesses
    record Run a command and record its profile into perf.data
    report Read perf.data (created by perf record) and display the profile
    sched Tool to trace/measure scheduler properties (latencies)
    script Read perf.data (created by perf record) and display trace output
    stat Run a command and gather performance counter statistics
    test Runs sanity tests.
    timechart Tool to visualize total system behavior during a workload
    top System profiling tool.
    trace strace inspired tool
    probe Define new dynamic tracepoints

  2. 全局性概况
    perf list查看当前系统支持的性能事件;
    perf bench对系统性能进行摸底;
    perf test对系统进行健全性测试;
    perf stat对全局性能进行统计;

  3. 全局细节
    perf top可以实时查看当前系统进程函数占用率情况;
    perf probe可以自定义动态事件;

  4. 特定功能分析
    perf kmem针对slab子系统性能分析;
    perf kvm针对kvm虚拟化分析;
    perf lock分析锁性能;
    perf mem分析内存slab性能;
    perf sched分析内核调度器性能;
    perf trace记录系统调用轨迹;

  5. 最常用功能perf record,可以系统全局,也可以具体到某个进程,更甚具体到某一进程某一事件;可宏观,也可以很微观。
    pref record记录信息到perf.data;
    perf report生成报告;
    perf diff对两个记录进行diff;
    perf evlist列出记录的性能事件;
    perf annotate显示perf.data函数代码;
    perf archive将相关符号打包,方便在其它机器进行分析;
    perf script将perf.data输出可读性文本;

  6. 可视化工具perf timechart
    perf timechart record记录事件;
    perf timechart生成output.svg文档;

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: perf是一个流行的系统性能分析工具,它可以帮助用户监测系统资源的使用情况,找出程序的性能瓶颈,提高程序的运行效率。perf具有以下几个特点: 第一,perf可以监控CPU、内存、硬盘I/O、网络等系统资源的使用情况,通过分析这些数据,可以找到程序的瓶颈所在。 第二,perf支持多种测量模式,包括采样模式、跟踪模式、事件计数模式等,方便用户根据自己的需要进行性能分析。 第三,perf可以和其他一些工具结合使用,如火焰图、Callgrind等,可以更加直观地展示程序的性能瓶颈,便于用户找到问题。 第四,perf对于内核开发人员也十分有用,可以帮助他们在开发过程中找到内核的性能问题,优化内核代码。 总之,perf是一款功能强大的性能分析工具,可以帮助用户在开发过程中找到程序的性能问题,提高程序的运行效率。 ### 回答2: perf是一款开源的系统性能分析工具,它可以帮助开发者实现对Linux系统性能分析和优化。perf可以测量和记录CPU的使用率、缓存的效率、内存的占用、磁盘I/O的读写速度等关键性能指标。 perf具有很强的功能,如事件计数器、系统调用跟踪、板载性能监视器等。使用perf分析工具来优化代码是极为有效的,而且很容易实现。perf的操作简单易学,它使用命令行用户界面,可以轻松地探测出代码中的性能削弱点。 除此之外,perf还提供了分析结果保存、数据可视化和报告生成等功能,这些功能将有助于关键的性能指标的更好的整理和分析perf还支持监视多线程程序,可以帮助开发人员分析并发应用程序的性能瓶颈。 总的来说,perf是一款非常强大的系统性能分析工具,它可以帮助开发人员进行更加高效、精确地性能分析。相比于其他分析工具perf性能表现更加稳定,且支持多种类型的分析,因此成为了许多开发人员在Linux系统上进行性能测试和优化的首选工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值