学习笔记 -- C++性能评估工具Perf

news2025/1/21 22:00:14

Installation

sudo apt update
sudo apt install linux-tools-common

查看你的内核:

uname -r

我的输出:

$ uname -r
5.15.0-67-generic

安装对应的 tools:

sudo apt install linux-tools-5.15.0-67-generic

Implementation

1、Perf List 状态参数列表

run perf list 得到可检测的状态(stat)参数列表, 包括硬件(Hardware)和软件(Software)的

List of pre-defined events (to be used in -e):
  cpu-cycles OR cycles                               [Hardware event]
  stalled-cycles-frontend OR idle-cycles-frontend    [Hardware event]
  stalled-cycles-backend OR idle-cycles-backend      [Hardware event]
  instructions                                       [Hardware event]
  cache-references                                   [Hardware event]
  cache-misses                                       [Hardware event]
  branch-instructions OR branches                    [Hardware event]
  branch-misses                                      [Hardware event]
  bus-cycles                                         [Hardware event]

  cpu-clock                                          [Software event]
  task-clock                                         [Software event]
  page-faults OR faults                              [Software event]
  minor-faults                                       [Software event]
  major-faults                                       [Software event]
  context-switches OR cs                             [Software event]
  cpu-migrations OR migrations                       [Software event]
  alignment-faults                                   [Software event]
  emulation-faults                                   [Software event]

  L1-dcache-loads                                    [Hardware cache event]
  L1-dcache-load-misses                              [Hardware cache event]
  L1-dcache-stores                                   [Hardware cache event]
  L1-dcache-store-misses                             [Hardware cache event]
  L1-dcache-prefetches                               [Hardware cache event]
  L1-dcache-prefetch-misses                          [Hardware cache event]
  L1-icache-loads                                    [Hardware cache event]
  ...

2、PERF usage Modes: Counting and Sampling

PERF 支持两种使用模式:计数(Counting)和采样(Sampling)。

计数Counting模式:将指定的监测事件计数,计数值可以是每进程/线程或整个系统的,最终得到监测事件的总计数,不涉及与时间相关的测量。
Counting方式的优点是只需要在事件发生时记录一下计数器即可,因此对系统的性能影响较小。但它并不能告诉我们事件的时间分布情况,因此不能得到事件的节奏信息,例如事件发生的频率随时间的变化情况等。

采样Sampling模式:定期对正在运行的线程/进程进行抽样,以获得事件发生的时间、持续时间、事件发生的上下文等信息。它利用计时器在一段时间内定期采样正在执行的线程/进程状态,其采样率(weight)越高,则可以发现更多的事件,得到更加准确的监测结果。
Sampling方式的优点是可以得到时间信息,便于分析性能瓶颈与更好地理解系统软硬件之间的交互。

2.1 Implement of Counting mode

可以使用perf stat命令来获取counting mode下的统计信息,例如:

perf stat -e cpu-cycles instructions L1-dcache-load-misses ./a.out

如果你在运行一些 perf 命令时遇到下面问题:
在这里插入图片描述

命令行运行:

sudo gedit /proc/sys/kernel/perf_event_paranoid  # 内容改成 -1
sudo gedit /etc/sysctl.conf # 末尾加入 kernel.perf_event_paranoid = -1

2.2 Implement of Sampling

# sampling mode
perf record -e cpu-clock instructions L1-dcache-load-misses -F 1000 ./a.out
perf report # 查看采样结果

其中 -F 用以指定采样频率

或者

# sampling mode
perf record -e cpu-clock instructions L1-dcache-load-misses  -c 100000 ./a.out
perf report # 查看采样结果

其中 -C 100000 代表固定采样周期为100,000 个 cpu-cycles。

如果未设置采样频率或采样周期,默认采样频率为1000Hz。

2.3 Ratios and rates

由于原始事件信息不容易直接反应代码性能。 比如52,202,548 次cache-miss 代表什么样的性能?因此使用比率(Ratio)通常比单一原始事件计数更清晰。
如下是一些常用的用于评估性能的比率参数:
在这里插入图片描述

Reference

Installing and Using Perf in Ubuntu and CentOS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/434320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch 人工智能研讨会:1~5

原文:The Deep Learning with PyTorch Workshop 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心…

vmware 打开报错

Error: VMware Workstation failed? I downloaded ccleaner to free up my ram and to get rid of some junk files. I ran ccleaner, tried to start my vmware and I got the error message “VMware Workstation failed to start the VMware Authorization Service. You ca…

WPS两次变身:超级会员+超级表格,完美逆袭,这次再也不输office

WPS会员变“超级会员” WPS宣布会员服务升级,将原有的“WPS会员”、“稻壳会员”及“超级会员”进行合并,推出“WPS超级会员”,提供了Pro和基础两个版本套餐。 过去被吐槽的“套娃式”收费被整合,你可以根据日常办公和专业办公的…

数据结构——AVL树

AVL树 概念节点定义插入旋转左单旋与右单旋双旋转 验证AVL树删除(了解) 概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。 因此…

抛弃丑陋的try-catch,优雅处理异常

随着业务逻辑变得越来越复杂,我们在编写代码时会遇到各种异常情况,这时就需要使用try-catch语句来捕获异常并进行处理。但是,大量的try-catch语句会让代码变得臃肿,不易维护,因此,我们需要一种优雅的方式来…

UDS统一诊断服务【六】访问时序参数0X83服务

文章目录 前言一、访问时序参数服务介绍二、数据格式2.1 请求报文2.2 子功能2.3 响应 三、举例 前言 本文介绍UDS统一诊断服务的访问时序参数0X83服务,希望能对你有所帮助 一、访问时序参数服务介绍 这个服务我目前在项目中没怎么用到过,先来看看ISO14…

【三十天精通Vue 3】第十三天 Vue 3 的插件详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 引言一、插件概述1.1 插件简介1.2 插件的使用1.3 插件的分类 二、…

五、vue基础-指令之v-bind

一、v-bind 前面要讲的一系列指令,主要是将值插入到模板内容中。 但是,除了内容需要动态来决定外,某些属性我们也希望动态来绑定。 比如动态绑定a元素的href属性;比如动态绑定img元素的src属性; 绑定属性我们使用v-…

智能电网中针对DOS和FDIA的弹性分布式EMA(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 ​智能电网是一种典型的信息物理融合系统,也是关系国民经济发展和国家安全的重大关键基础设施,其安全稳定运行至关重要。近年来…

java某百货店POS积分管理系统_积分点更新生成以及通票回收处理

百货店是生活中不可缺少的一部分,为了给顾客提供更方便的服务平台以及更好的服务质量,而设计了POS积分管理系统。百货店通过点积分的管理获得顾客更好的信誉,增加客户流量,获得更多的利益。在百货店经营的过程中,每天的…

软考 软件设计师上午题面向对象

面向过程和面向对象 省略面向对象可以省略过程,复杂事情简单化 类 类是对象的抽象,对象是类的实例 一般类是交通工具。特殊类是轮船飞机。因为他们是特殊的佳通工具,一个天上的一个海上的 对象 属性别名状态成员变量,方法也叫…

K_A31_002 基于STM32等单片机驱动315MHZ收发模块 串口显示

K_A31_002 基于STM32等单片机驱动315MHZ收发模块 串口显示 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明原理:对应程序: 四、部分代码说明1、接线引脚定义1.1、STC89C52RC315MHZ收发模块1.2、STM32F103C8T6315MHZ收发模块 五、基础知识学习与相关…

通过Salesforce考试 (考证)后,如何在Trailhead上验证和维护证书?

随着Salesforce产品家族的不断壮大,学习者可以考的认证也在不断增多。从十几年前的几个认证,增长到现在的40多个认证。 在获得Salesforce认证之后,除了要将其放在LinkedIn和Trailblazer.me个人资料中,还有一种官方途径可以让其他…

靶机精讲之pwnOS1.0解法二

主机发现 基于前一解法 复现找到的漏洞文件利用文件 应该要想到如何利用ssh 构造利用语句 authorized_keys文件获取 访问免登录文件失败 敏感文件泄露库 发现敏感文件的经验(精) 按ctrlf搜索 .ssh 免密公钥 已经拿到公钥的数据 用公钥信息破解出私钥…

Redis入门介绍+linux安装

Redis是什么 Redis 是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value(键值对)数据库,并提供多种语言的…

【HTML5】HTML5 多媒体标签 ① ( audio 音频标签 | 音频标签常见属性值设置 | 音频标签默认代码设置 | 音频标签设置多种类型音频文件 )

文章目录 一、HTML5 多媒体标签二、音频标签三、音频标签代码示例 ( 默认操作 )四、音频标签代码示例 ( 插入 mp3 / ogg 两种格式的音频 ) 一、HTML5 多媒体标签 传统 HTML 开发中 , 如果想要向网页中嵌入音频和视频 , 需要 使用 Flash 浏览器插件才能实现 ; 在 HTML5 中 , 使…

“智慧金融”精细化客户服务+营销获客

在新兴金融产品与智能服务创新科技手段的不断推动下,我国金融行业的发展已经实现由“金融信息化”向“智慧金融”的阶级跨越。金融行业在客户服务、业务流程、业务开拓等方面已得到全方位的“数智化”提升,实现了“AI金融”客户服务、风控、营销获客的智…

基于禅道二开领导报表

上周开会的时候公司项目总监说感觉最近开发人员很轻松,工作量不饱和。支付力度不够。 做为开发负责人,对项目总监这个说法我肯定需要给予响应,不然老板也在场,后续项目想要加资源啥的都无法解释。 关注我的人知道,之前…

客流统计分析系统增强售楼处、4S店飞单管理能力

客流统计分析系统可以为售楼处和4S店提供有效的飞单管理能力,使其能够更好地管理客户信息和提高销售效率。首先,客流统计分析系统可以对售楼处和4S店的客流进行实时监控和分析。通过使用摄像头、人脸识别等技术,可以对进店的客户进行统计和分…

whisper技术导读2

1、数据处理 根据最近利用互联网上的网络规模文本来训练机器学习系统的趋势,我们采用了一种极简的方法来进行数据预处理。与语音识别方面的许多工作相比,我们训练Whisper模型在没有任何显著标准化的情况下预测转录本的原始文本,依靠序列到序列…