在TQ2440上运行perf,生成Flame Graph

参考

http://www.cnblogs.com/helloworldtoyou/p/5585152.html

http://blog.csdn.net/mtofum/article/details/44108601

平台

TQ2440

Linux-4.10.17

概述

Perf是Linux kernel自带的系统性能优化工具。Perf在Linux源码中的位置是linux-4.10.17/tools/perf,编译perf之前需要先交叉编译zlib和elfutils。

正文

1、交叉编译zlib

zlib可以到http://www.zlib.net/下载,我下载的版本是zlib-1.2.11。 下面是编译脚本:

#!/bin/bash

export CC=arm-linux-gcc

.././../Third_Part/Zlib/zlib-1.2.11/configure     --prefix=`pwd`
make
make install

2、交叉编译elfutils

elfutils可以到http://www.linuxfromscratch.org/blfs/view/svn/general/elfutils.html下载,我下载的版本是elfutils-0.170 下面是编译脚本:

export LDFLAGS=-L/home/pengdonglin/disk_ext/TQ2440/zlib/lib
export CPPFLAGS=-I/home/pengdonglin/disk_ext/TQ2440/zlib/include
export LIBS=-lz
../configure --host=arm-linux --prefix=`pwd`
make
make install

编译完成后,将生成的libelf相关动态库拷贝到交叉编译工具链的libc下,对于TQ2440使用的是armv4版本,所以拷贝到如下目录:arm-2014.05/arm-none-linux-gnueabi/libc/armv4t/lib/

3、编译perf

进入linux-4.10.17/tools/perf,然后修改目录下的Makfile:

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 32a64e6..dd85078 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -1,3 +1,7 @@
+export EXTLIBS =--static -lelf -lebl -L/home/pengdonglin/disk_ext/TQ2440/zlib/lib -L/home/pengdonglin/disk_ext/TQ2440/elfutils-0.170/build/lib
+export ARCH=arm
+export CROSS_COMPILE=arm-linux-
+
 #
 # This is a simple wrapper Makefile that calls the main Makefile.perf
 # with a -j option to do parallel builds

然后在linux-4.10.17/tools/perf执行make,最后就会在该目录下编译生成一个名为perf的文件。

4、配置内核,支持perf

配置内核,使能下面两个配置。

CONFIG_PERF_EVENTS=y
CONFIG_HW_PERF_EVENTS=y

然后重新编译内核,用新的内核启动板子。

5、测试

按照https://github.com/brendangregg/FlameGraph上面的说明尝试生成一个火焰图

我用telnet登录板子,然后使用tinyplay播放一首wav音乐,对应的进程号是1021

然后在板子上使用下面的perf命令收集数据:

perf record -F 180 -p 1021 -g -- sleep 120

收集完成之后,会在当前目录下生成一个perf.data的文件,再在板子上执行下面的命令:

perf script > out.perf

这个命令根据perf.data生成out.perf文件,紧接着在PC机上使用stackcollapse-perf.pl将out.perf转成out.folded:

~/disk_ext/FlameGraph/stackcollapse-perf.pl out.perf > out.folded

最后利用flamegraph.pl将out.folded转成kernel.svg:

~/disk_ext/FlameGraph/flamegraph.pl out.folded > kernel.svg

用浏览器打开生成的kernel.svg文件:

完。

时间: 2024-10-10 18:16:32

在TQ2440上运行perf,生成Flame Graph的相关文章

perf + Flame Graph火焰图分析程序性能

1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果: usage: perf [--version] [--help] [OPTIONS] COMMAND [ARGS] The most commonly used perf commands are: annotate Read perf.data (created by perf record)

【转】利用xcode生成的app生成可以在iphone和itouch上运行的ipa安装包

转载地址:http://blog.csdn.net/yohunl/article/details/5971252 在编译好的真机版目录下的.app文件,至于生成真机可以运行的app的方法,有两种方式,一种是交99美元获得一个证书,另外一种是破解的方式,在此不再详述,本文假设你已经生成了真机上可以运行的app包了(app包实际上是一个文件夹) 假设此安装包的名称是 hello.app,点击右键,选择 显示包内容,这样就可以打开这个hello.app文件夹了,在此文件夹中有一个info.plist文

Delphi XE2 生成的.exe 在未安装有Delphi的电脑上运行提示 “丢失 rtl160.bpl”

解决方案: XE2中加入了多平台的概念,默认的Release模式,也是带包编译,带运行时库的,所以,需要手工设置一下工程选项: 打开工程以后,Project-->Options-->左侧树列表选中C++ Linker-->右侧上方的Target选择Release configuration 下的 32-bit Windows platform-->取消 Link with Dynamic RTL 的对钩-->左侧树列表选中 Packages 下的 Runtime Packag

利用xcode生成的app生成可以在iphone和itouch上运行的ipa安装包

在编译好的真机版目录下的.app文件,至于生成真机可以运行的app的方法,有两种方式,一种是交99美元获得一个证书,另外一种是破解的方式,在此不再详述,本文假设你已经生成了真机上可以运行的app包了(app包实际上是一个文件夹) 假设此安装包的名称是 hello.app,点击右键,选择 显示包内容,这样就可以打开这个hello.app文件夹了,在此文件夹中有一个info.plist文件,打开它,新增加一个名为 SignerIdentity的key字段,内容为Apple iPhone OS App

如何使用CLI命令在输入文件参数上运行Python脚本来生成输出文件

如何使用CLI命令在输入文件参数上运行Python脚本来生成输出文件. 根据我的理解,analysis.py是python脚本,-s和-p是分别包含Sales.csv和Products.csv中的csv数据的变量名. 在analysis.py中,我如何接受存储在-s和-p中的两个CSV,然后创建一个名为SalesReport.csv的输出? 我是否会创建一个名为SalesReport.csv的空白csv文件,然后将分析的数据写入文件? 或者命令行是否会使用存储在sales-report变量中的数

VS2013生成Release版本MFC程序在其他机器上运行

对于自己机器安装了VS开发环境,生成MFC的exe文件能够在自己机器上运行,复制到其他目标机器可能出现不能运行的情况.下面就个人经历将发布的两中情况简要说明. 1.工程属性中:配置属性-常规,MFC使用类型选择“在共享的DLL中使用MFC”:C/C++ - 代码生成-MFC的使用 选择“多线程DLL(/MD)”这种情况下,若直接将exe文件放到目标机器运行,则需要目标机器安装相应的开发平台.或者将生成exe程序的依赖dll文件复制到目标机器的程序运行目录下:若用到第三方库,也要复制相应的dll文

VS2010生成的文件在别的机器上运行提示“丢失MSVCR100D.dll”<转>

用vs2010编写的程序经常会发生的一个问题.在自己的机器上运行的好好的,但是在别的机器上就会发生没有找到MSVCR100D.dll.这是 个很头疼的问题.对于一些代码量几百行的小程序,我不可能要求其他电脑也一定要配有MSVCR100D.dll这个dll.当然解决方法也有,但是我也不 可能要求所有的电脑都装上.net framwork 2.0.微软又给CSer们出了个难题. 解决方法: 在vs2010下,按ALT+F7,打开工程属性–>配置属性–>C/C++–>代码生成–>运行时库

使用Flame Graph进行系统性能分析

关键词:Flame Graph.perf.perl. FlameGraph是由BrendanGregg开发的一款开源可视化性能分析工具,形象的成为火焰图. 从底向上像火苗一样逐渐变小,也反映了相互之间的包含关系,下面的框条包含上面内容. 经过FlameGraph.git处理,最终生成矢量SVG图形,可以形象的看出不同部分占用情况,以及包含与被包含情况. 除了反应CPU使用情况的CPU FlameGraph,还有几种Flame Graph:Memory Flame Graph.Off-CPU Fl

u-boot-2015.01在tq2440上的初步移植

作者: 彭东林 邮箱: [email protected] QQ:   405728433 开发板:     tq2440 工具:       Win7 + VMware + Debian6 U-boot版本: u-boot-2015.01 Linux版本:  天嵌自带的 linux-2.6.30.4 GCC版本:     gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176)   之前由于移植过u-boot-2014.04到tq2440上,现在移植u-