- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux的系统级性能剖析工具-perf-1
Linux 的系统级性能剖析工具‐perf
(一)
承刚
TAOBAO Kernel Team
chenggang.qin@
前言
在软件规模庞大与硬件成本相对廉价的时代,系统级性能分析和优化常被开
发与测试人员忽视。但是随着虚拟化和云计算时代的到来,对计算资源按需付费
的盈利模式要求系统软件与应用软件的开发者们必须对硬件资源的使用效率精
益求精。在嵌入式领域更是如此。而且在互联网企业中,应用程序的性能提升对
节约服务器成本来说至关重要。由于服务器集群异常庞大,软件性能的些许提升
都有可能带来成本的大幅降低[1] 。系统级性能优化是提升程序性能的重要步骤。
但是,目前针对系统级性能优化的参考资料很稀缺,开发与测试人员往往不了解
系统级性能优化的意义和方法。
系统级性能优化是指为了提高应用程序对操作系统资源与硬件资源的使用
效率,或者为了提高操作系统对硬件资源的使用效率而进行的代码优化。通过提
高对操作系统资源与硬件资源的利用率,使得应用程序与基础软硬件平台具有更
好的交互性,往往可以显著提升应用程序的执行速度和稳定性。系统级性能优化
通常包括2 个阶段,分别是性能剖析(performance profiling)和代码优化。性能
剖析阶段的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码。代码优
化阶段的目标是针对具体的性能问题而优化代码与编译选项,以改善软件性能。
在代码优化阶段往往需要凭借开发者的经验,编写简洁高效的代码,甚至在汇编
语言级别合理使用各种指令,合理安排各种指令的执行顺序。而在性能剖析阶段,
则需要借助于现有的profiling 工具,如perf ,VTune ,Oprofile 等。其中perf 相比
较于其它工具而言,具有特殊的优势。它不仅开源,而且内置于内核源码树。在
如今upstream kernel 的开发中,perf 是发展较快的领域之一。淘宝内核组也介入
了perf 的开发工作。
本文是系统级性能分析系列文章的第一篇,主要介绍性能分析工具perf 的
使用方法。后续还会有介绍系统级性能分析方法以及代码优化方法的文章。
第一章 Perf 简介
1.1 perf 的基本原理
Perf 是内置于Linux 内核源码树中的性能剖析(profiling)工具。它基于事件
采样原理,以性能事件为基础,支持针对处理器相关性能指标与操作系统相关性
能指标的性能剖析。可用于性能瓶颈的查找与热点代码的定位。
我们先通过一个例子来看看perf 究竟能干什么。程序[code1]是一个简单的
计算pi 的计算密集型程序。很显然,[code1]的热点在函数do_pi() 中。
[code1]
#include stdio.h
#include math.h
#include sys/types.h
#include linux/unistd.h
int do_pi(){
double mypi,h,sum,x;
long long n,i;
n = 5000000;
h = 1.0 / n;
sum=0.0;
for (i = 1; i = n; i+=1 ) {
x = h * (i ‐ 0.5);
sum += 4.0 / (1.0 + pow(x,2));
}
mypi = h * sum;
文档评论(0)