google CPU Profiler 二进制数据文件格式

11 篇文章 0 订阅

原文地址:http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile-fileformat.html

本文主要是对CPU Profiler工具产生的二进制数据文件进行的说明。源代码位于下载的profiler源文件包的src/profiler.cc中。

CPU Profile 的数据文件结构

每个profile数据文件包含四部分:

文件头部,profile 记录, 文件尾部,映射对象列表

二进制数据以名为slots的术语表示,对于32位应用程序slots为4bytes,对于64位应用程序slots则为8bytes。数据在文件中存储的方式则为

本地二进制顺序(big-endian 或者 little-endian)

文件头部(binary header)

下面是文件头部的结构定义,由profiler进行填充:

slotdata
0header count (0; must be 0)
1header slots after this one (3; must be >= 3)
2format version (0; must be 0)
3sampling period, in microseconds
4padding (0)

作为比较下面给以little-endian为例给出了32位和64位的表示方式:

 hdr counthdr wordsversionsampling periodpad
32-bit or 64-bit (slots)030100000
32-bit (4-byte words in file)0x000000x000030x000000x027100x00000
64-bit LE (4-byte words in file)0x00000 0x000000x00003 0x000000x00000 0x000000x02710 0x000000x00000 0x00000

对于32位和64位的应用程序其binary header的slots值是不变了,profiler工具会自动检测文件内容,并根据头文件word field和

期望位置来判断是32位还是64位程序

数据记录(binary profile record)

record记录格式为:

slotdata
0sample count, must be >= 1
1number of call chain PCs (num_pcs), must be >= 1
2 .. (num_pcs + 1)call chain PCs, most-recently-called function first.

一个record的总长为2+num_pcs。一个profile工具可能会产生多个具有相同调用链的record,在这种情况下分析工具应该能够统计

出具有相同调用链的record总数

注意:当遇到调用栈的入口地址为0时,某些分析工具会自动中断

e.g. 5 3 0xa0000 0xc0000 0xe0000

本例中在PC 0xa0000处采样5次,0xa0000被0xc0000调用,0xc0000被0xe0000调用

文件尾部(binary trailer)

trailer包含3个slot,并具有固定的值

slotvalue
00
11
20


可以理解为采用了0次,调用长度为1,调用起始地址为0

映射对象列表(list of mapped objects)

紧接着trailer文件由一系列的映像对象组成,这些对象是一些由换行符分割的文本对象

每一行是下列两种格式中的一种:

Build specifier, 以"build="作为开端.

e.g. build=/path/to/binary
Mapping line from ProcMapsIterator::FormatLine.

e.g.   40000000-40015000 r-xp 00000000 03:01 12845071   /lib/ld-2.3.2.so
无法识别行则会被自动忽略掉

当处理mapping line时如果出现了$build后面跟着非字符和下划线的字符,则会被最后一个build specifier替换


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值