perf使用示例2

简介: perf使用示例2 性能调优工具如 perf,Oprofile 等的基本原理都是对被监测对象进行采样,最简单的情形是根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文。

perf使用示例2

性能调优工具如 perfOprofile 等的基本原理都是对被监测对象进行采样,最简单的情形是根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文。假如一个程序 90% 的时间都花费在函数 foo() 上,那么 90% 的采样点都应该落在函数 foo() 的上下文中。运气不可捉摸,但我想只要采样频率足够高,采样时间足够长,那么以上推论就比较可靠。因此,通过 tick 触发采样,我们便可以了解程序中哪些地方最耗时间,从而重点分析。

稍微扩展一下思路,就可以发现改变采样的触发条件使得我们可以获得不同的统计数据:

以时间点 ( tick) 作为事件触发采样便可以获知程序运行时间的分布。

以 cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在哪些程序代码中。如此等等。

1.Perf listperf 事件

不同的系统会列出不同的结果,在 2.6.35 版本的内核中,该列表已经相当的长,但无论有多少,我们可以将它们划分为三类:

Hardware Event 是由 PMU 硬件产生的事件,比如 cache 命中,当您需要了解程序对硬件特性的使用情况时,便需要对这些事件进行采样;

Software Event 是内核软件产生的事件,比如进程切换,tick 数等 ;

Tracepoint event 是内核中的静态 tracepoint 所触发的事件,这些 tracepoint 用来判断程序运行期间内核的行为细节,比如 slab 分配器的分配次数等。

2.Perf stat

使用 -e 选项来查看感兴趣的特殊的事件。

$perf stat ./t1

3.perf top

Perf top 用于实时显示当前系统的性能统计信息。该命令主要用来观察整个系统当前的状态,比如可以通过查看该命令的输出来查看当前系统最耗时的内核函数或某个用户进程。

默认为cpu,还可以通过添加 -e 选项,列出造成其他事件的 TopN 个进程 / 函数。比如 -e cache-miss,用来看看谁造成的 cache miss 最多。

4.perf report

perf record -e cpu-clock ./t1 or perf record -e cpu-clock -g ./t1

perf report

5.示例

分支预测失败案例:

//test.c

#include <stdio.h>

#include <stdlib.h>

void foo()

{

int i,j;

for(i=0; i< 10; i++)

j+=2;

}

int main(void)

{

int i;

for(i = 0; i< 100000000; i++)

foo();

return 0;

}

原文

http://www.ibm.com/developerworks/cn/linux/l-cn-perf1/

目录
相关文章
|
机器学习/深度学习 缓存 网络安全
服务器中的conda环境
服务器中的conda环境
1942 1
AutoJs4.1.0实战教程---抖音极速版
AutoJs4.1.0实战教程---抖音极速版
1100 0
|
算法 Linux 开发者
GitHub Copilot 使用技巧之快捷键大全
GitHub Copilot 使用技巧之快捷键大全
1621 0
|
9月前
|
SQL 人工智能 Apache
字节跳动:Apache Doris + AI 一站式融合数据引擎的探索与实践
随着人工智能技术在业务中的渗透,我们逐渐意识到:AI 不仅是提升效率的工具,更是重构数据处理与消费方式的核心驱动力。在这一背景下,我们思考:**能否构建一款「AI + Data」一站式融合的数据引擎?** 它不仅能够统一处理文本、音视频等非结构化数据与传统结构化数据,还能为算法工程师提供流畅的数据开发体验,实现数据处理与 AI 模型无缝衔接,并能确保数据处理负载与在线服务负载完全隔离。这是 2024 年末启动 DataMind 项目的初衷。
623 0
字节跳动:Apache Doris + AI 一站式融合数据引擎的探索与实践
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
11月前
|
供应链 搜索推荐 数据可视化
做定制化系统开发,几千预算够不够?
中小企业数字化转型常因预算有限陷入两难:传统定制开发动辄数十万,免费模板又无法满足个性化需求。低代码平台的出现打破了这一困局——通过拖拽式操作,无需编程基础,数千元即可快速搭建专属系统。以低代码开发平台为例,年费低至672元,支持多端适配、数据集成与功能扩展,无隐性成本,助力企业低成本实现CRM、ERP、OA等系统定制,真正实现“花小钱,办大事”。
538 7
|
开发工具
如何修改Vscode查看源代码管理版本变动文件的查看方式
这篇文章介绍了如何在VSCode中通过源代码管理插件修改查看源代码版本变动文件的方式,提供了树形视图和列表视图两种查看方法,并说明了如何通过设置选项来切换查看方式,帮助用户根据自己的喜好更高效地查看和管理代码变动。
如何修改Vscode查看源代码管理版本变动文件的查看方式
|
Java 关系型数据库 MySQL
JVM深入原理(六)(二):双亲委派机制
自定义类加载器打破双亲委派机制的方法:复写ClassLoader中的loadClass方法常见问题:要加载的类名如果是以java.开头,则会抛出安全性异常加载自定义的类都会有一个共同的父类Object,需要在代码中交由父类加载器去加载自定义类加载器不手动指定parent会默认指定应用类加载两个自定义类加载器加载同一个类会被认为是两个对象,只有相同的类加载器+想通的类限定名才会被认为是一个对象。
497 0
|
算法 安全 大数据
【算法备案新风向】个人信息保护合规审计来了!关键点全解读
国家网信办发布《个人信息保护合规审计管理办法》,自2025年5月1日起施行。该办法适用于所有在中国境内处理个人信息的主体,特别是处理超1000万人信息的企业需每两年审计一次。触发审计情形包括重大风险、侵害个人权益或大规模信息泄露。企业可自行或委托专业机构审计,报告需报送相关部门。违规将依据《个人信息保护法》处理,严重者追究刑事责任。此举旨在保护个人隐私、规范企业运营,提升公众信任。企业和个人应积极响应,共同营造安全可信的数字环境。
|
缓存 小程序 API
微信小程序页面导航与路由:实现多页面跳转与数据传递
本文深入探讨微信小程序的页面导航与路由机制,介绍多种页面跳转方式如`wx.navigateTo`、`wx.redirectTo`、`wx.switchTab`等,并讲解通过URL、全局变量和事件传递数据的方法。结合案例实现多页面跳转与数据传递,帮助开发者掌握这一重要技能。

热门文章

最新文章