学会使用perf性能分析工具(含移植到arm-linux开发板)

news/2024/11/8 20:28:33/

文章目录

  • 一、在ubuntu中使用apt包下载Perf
  • 二、使用源码安装Perf,并移植到arm-linux环境下
  • 三、使用perf
  • 四、Perf的功能介绍

系统:Ubuntu18.04系统
内核版本:5.4.0-150-generic(通过uname -r查看)

一、在ubuntu中使用apt包下载Perf

输入perf命令,提示:

Command 'perf' not found, but can be installed with:apt install linux-tools-common
Please ask your administrator.

按照提示安装linux-tools-common:

sudo apt-get install linux-tools-common

查看perf -v,提示:

WARNING: perf not found for kernel 5.4.0-150You may need to install the following packages for this specific kernel:linux-tools-5.4.0-150-genericlinux-cloud-tools-5.4.0-150-genericYou may also want to install one of the following packages to keep up to date:linux-tools-genericlinux-cloud-tools-generic

由于linux有不同的发行版本,内核工具也不同,提示的意思是可以下载特定的内核版本下的tools,根据命令行的提示,使用uname -r 查看内核版本,并下载

sudo apt-get install linux-tools-5.4.0-150-generic

再次执行perf -v可以得到当前版本

perf version 5.4.233

参考博文:Perf的安装与简单使用

二、使用源码安装Perf,并移植到arm-linux环境下

perf是一种系统级性能分析工具,它涉及内核调用,所以安装需要知道内核版本。查看arm-linux平台的内核的版本,到官网上去下载特定的内核源码

在开发板终端输入

uname -r
5.4.31

去官网上下载内核源码,可以手动下载,也可以使用wget,以下操作在ubuntu平台

  • Linux内核源码下载网站:Index of /sites/ftp.kernel.org/pub/linux/kernel/ (sjtu.edu.cn) 或者 Index of /kernel/linux/kernel/

  • wget下载,例如:wget http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/linux-5.4.31.tar.gz

下载完毕之后,解压内核源代码

tar -zxvf linux-5.4.31.tar.gz

进入如下目录

cd linux-5.4.31/tools/perf/

修改Makefile.conf文件,添加LIBC_SUPPORT := 1

在这里插入图片描述

源码级安装,如有些依赖包没有安装,得安装一下,Perf源码安装的依赖:ubuntu源码安装性能分析工具perf - 知乎 (zhihu.com)

make -j4 && make install

当前文件夹生成perf应用,

file perf

输出结果:
在这里插入图片描述

将编译得到的应用发送到开发板上,运行成功

在这里插入图片描述

如果遇到其他问题可以参考博文:
linux perf arm,perf arm交叉编译

perf使用的博文:
perf性能分析工具使用分享
打卡不停更#Linux perf工具使用
perf学习-linux自带性能分析工具

三、使用perf

编写示例程序

#include <stdio.h>
void print(void)
{int i = 0;while(1){i++;}
}
int main ()
{print();return 0;
}

编译目标位可执行文件

gcc -g test.c -o test

使用perf分析性能

perf stat test

出现报错

Error:
You may not have permission to collect stats.Consider tweaking /proc/sys/kernel/perf_event_paranoid,
which controls use of the performance events system by
unprivileged users (without CAP_SYS_ADMIN).The current value is 3:-1: Allow use of (almost) all events by all usersIgnore mlock limit after perf_event_mlock_kb without CAP_IPC_LOCK
>= 0: Disallow ftrace function tracepoint by users without CAP_SYS_ADMINDisallow raw tracepoint access by users without CAP_SYS_ADMIN
>= 1: Disallow CPU event access by users without CAP_SYS_ADMIN
>= 2: Disallow kernel profiling by users without CAP_SYS_ADMINTo make this setting permanent, edit /etc/sysctl.conf too, e.g.:kernel.perf_event_paranoid = -1

根据提示到指定文件夹中查找该变量,发现没有,经过百度后替换perf_event_paranoid文件夹内容为-1,注意修改内核文件要加sudo
在这里插入图片描述
参考博文:perf have no permission to collect stats

重新执行

perf stat test

输出结果如下

Performance counter stats for 'test':0.74 msec task-clock                #    0.484 CPUs utilized          0      context-switches          #    0.000 K/sec                  0      cpu-migrations            #    0.000 K/sec                  58      page-faults               #    0.079 M/sec                  <not supported>      cycles                                                      <not supported>      instructions                                                <not supported>      branches                                                    <not supported>      branch-misses                                               0.001520723 seconds time elapsed0.001628000 seconds user0.000000000 seconds sys

四、Perf的功能介绍

可以使用许多 perf 命令来获取有关 CPU 使用情况、内存使用情况、I/O 使用情况等信息

>$ perf --helpusage: perf [--version] [--help] [OPTIONS] COMMAND [ARGS]The most commonly used perf commands are:annotate        Read perf.data (created by perf record) and display annotated codearchive         Create archive with object files with build-ids found in perf.data filebench           General framework for benchmark suitesbuildid-cache   Manage build-id cache.buildid-list    List the buildids in a perf.data filec2c             Shared Data C2C/HITM Analyzer.config          Get and set variables in a configuration file.data            Data file related processingdiff            Read perf.data files and display the differential profileevlist          List the event names in a perf.data fileftrace          simple wrapper for kernel's ftrace functionalityinject          Filter to augment the events stream with additional informationkallsyms        Searches running kernel for symbolskmem            Tool to trace/measure kernel memory propertieskvm             Tool to trace/measure kvm guest oslist            List all symbolic event typeslock            Analyze lock eventsmem             Profile memory accessesrecord          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 outputstat            Run a command and gather performance counter statistics  #可以查看指定命令的CPU和内存使用情况test            Runs sanity tests.timechart       Tool to visualize total system behavior during a workloadtop             System profiling tool.version         display the version of perf binaryprobe           Define new dynamic tracepointstrace           strace inspired toolSee 'perf help COMMAND' for more information on a specific command.

https://blog.csdn.net/qq_38131812/article/details/123048333

https://zhuanlan.zhihu.com/p/498100484


http://www.ppmy.cn/news/273791.html

相关文章

华尔街新风向:多基金失英伟达机会

在过去一年多的美联储暴力加息周期中&#xff0c;科技成长股一直不怎么受到主流投资者待见&#xff0c;但面对今年美股“人工智能涨个不停”的局面后&#xff0c;过去两周里大量的知名基金都在撒开脚丫子狂追高速狂飙的“英伟达列车”。 根据监管文件显示&#xff0c;包括道富…

机器人军团防护罩_《复联3》瓦坎达防御暴露致命缺陷,钢铁侠军团可以轻松突破!...

看过《复仇者联盟3》的观众一定会对当中的瓦坎达大战记忆犹新&#xff0c;瓦坎达拥有非常强大的防御系统&#xff0c;其防护罩可以抵御绝大多数外来的袭击&#xff0c;但在《复联3》中&#xff0c;为了保证幻视的安全&#xff0c;防护罩被开启&#xff0c;瓦坎达军队与外星物种…

复仇者联盟3观后感

《复仇者联盟3&#xff1a;无限战争》是由漫威电影制作的的科幻片。该片由安东尼罗素、乔罗素执导&#xff0c;小罗伯特唐尼、乔什布洛林、克里斯埃文斯、克里斯海姆斯沃斯、斯嘉丽约翰逊、马克鲁法洛等主演&#xff0c;于2018年4月27日在美国上映&#xff0c;2018年5月11日在中…

人人都是钢铁侠,超级盔甲问世

“救火英雄”消防员出入火场非常危险&#xff0c;而带着又多又重的救火装备更使得行动难度加倍。据香港《文汇报》5月28日引述英国《每日邮报》报道&#xff0c;澳洲墨尔本华裔设计师肯陈设计出一副能加强力量的“超级盔甲“&#xff0c;能将盔甲本身重量及负载重量转移到地面&…

《复联4》| 生活需要漫威这块糖

戳蓝字“CSDN云计算”关注我们哦&#xff01; 漫威电影宇宙&#xff0c;历时11年&#xff0c;经历了21部电影&#xff0c;终于迎来了最终章。有人问如果没看过复联1、2、3可以去看吗&#xff1f;只看过钢铁侠没接触过复联可以去看吗&#xff1f;......看当然是可以看的&#xf…

超人:钢铁之躯 Man of Steel (2013)

超人钢铁之躯 Man of Steel (2013) Man of Steel 导演: 扎克施奈德 编剧: 大卫S高耶 / 克里斯托弗诺兰 / 乔舒斯特 / 杰里西格尔 主演: 亨利卡维尔 / 艾米亚当斯 / 迈克尔珊农 / 凯文科斯特纳 / 戴安琳恩 / 罗素克劳 / 克里斯托弗米洛尼 / 安婕特拉乌 / 劳伦斯菲什伯恩 / 阿耶莱…

复仇者联盟与IntelliJ IDEA也很配哦

点击蓝色“程序猿DD”关注我哟 加个“星标”&#xff0c;不忘签到哦 之前转载过几位网友推荐的一些关于IntelliJ IDEA的插件。其中有一款插件几乎每位网友都会推荐它&#xff0c;我也一直在使用&#xff0c;那就是&#xff1a;Background Image Plus。该插件并不同于其他的效率…