linux之perf(8)annotate标注
Linux之perf(8)annotate标注
Author:Onceday Date:2023年10月12日
漫漫长路,才刚刚开始…
注:该文档内容采用了GPT4.0生成的回答,部分文本准确率可能存在问题。
参考文档:
- Tutorial - Perf Wiki (kernel.org)
- perf-annotate(1) - Linux manual page (man7.org)
文章目录
- Linux之perf(8)annotate标注
- 1. 概述
- 2.选项描述
- 2.1 选项概览
- 2.2 解码指令跟踪数据
1. 概述
perf-annotate命令用于读取perf.data文件(由perf record命令创建)并显示注释后的代码。
该命令读取输入文件并显示注释后的代码版本。如果目标文件具有调试符号,则源代码将与汇编代码一起显示。
如果对象中没有调试信息,则会显示注释后的汇编。
假设你已经使用perf record命令创建了一个perf.data文件,你可以使用perf annotate命令来查看注释的代码:
perf annotate -i perf.data
在这个例子中,perf annotate将从perf.data文件中读取数据,然后显示注释后的代码。
如果你想查看特定符号的注释代码,你可以在命令后面添加符号名。
perf annotate -i perf.data symbol_name
在这个例子中,perf annotate将只显示与symbol_name符号相关的注释代码。
标注汇编指令和源码等功能需要可执行文件携带符号,以及当前环境下存在可执行的obidump/addr2line等工具文件。
2.选项描述
2.1 选项概览
| 选项 | 描述 |
|---|---|
| -i, --input=[file] | 输入文件名。(默认为:perf.data,除非标准输入是一个管道) |
| -d, --dsos=[dso[,dso…]] | 只考虑这些动态共享对象(DSOs)中的符号 |
| -s, --symbol=[symbol] | 要注释的符号 |
| -f, --force | 不进行所有权验证 |
| -v, --verbose | 更详细地显示信息(示例如符号地址等) |
| -q, --quiet | 不显示任何警告或消息(抑制-v) |
| -n, --show-nr-samples | 显示每个符号的样本数量 |
| -D, --dump-raw-trace | 以ASCII格式转储原始跟踪 |
| -k, --vmlinux=[file] | vmlinux文件的路径 |
| –ignore-vmlinux | 忽略vmlinux文件 |
| –itrace | 用于解码指令跟踪数据的选项 |
| -m, --modules | 加载模块符号。警告:仅与-k和LIVE内核一起使用 |
| -l, --print-line | 打印匹配的源代码行(可能比较慢) |
| -P, --full-paths | 不缩短显示的路径名 |
| –stdio | 使用stdio接口 |
| –stdio2 | 使用非交互的stdio2接口,使用TUI格式 |
| –stdio-color=[mode] | 始终,从不或自动,允许通过命令行配置颜色输出,除了通过"color.ui" .perfconfig。使用–stdio-color always即使在重定向到管道或文件时也生成颜色。仅使用–stdio-color等同于使用always. |
| –tui | 使用TUI接口。使用–tui需要tty,如果没有,如当管道到其他命令时,将使用stdio接口。此接口从居中的行开始,TAB/UNTAB在更多样本的行中循环。 |
| –gtk | 使用GTK接口 |
| -C, --cpu=[cpu] | 只报告提供的CPU列表的样本。可以提供多个CPU,作为没有空格的逗号分隔列表:0,1。CPU范围用-指定:0-2。默认报告所有CPU上的样本 |
| –asm-raw | 显示汇编指令的原始指令编码 |
| –show-total-period | 显示总周期数的列 |
| –source | 将源代码与汇编代码交错。默认启用,使用–no-source禁用 |
| –symfs=[directory] | 查找相对于此目录的带有符号的文件 |
| -M, --disassembler-style= | 为objdump设置反汇编样式 |
| –addr2line=[path] | addr2line二进制文件的路径 |
| –objdump=[path] | objdump二进制文件的路径 |
| –prefix=PREFIX, --prefix-strip=N | 从可执行文件中的源文件路径名中删除前N个条目并添加PREFIX。这允许显示在具有不同文件系统布局的系统上编译的源代码 |
| –skip-missing | 跳过无法注释的符号 |
| –group | 一起显示事件组信息 |
| –demangle | 将符号名称解析为人类可读形式。默认启用,使用–no-demangle禁用 |
| –demangle-kernel | 将内核符号名称解析为人类可读形式(用于C++内核) |
| –percent-type | 从以下选择中设置注释百分比类型:global-period, local-period, global-hits, local-hits.local/global关键字设置百分比是否在函数范围(本地)或整个数据(全局)中计算。period/hits关键字设置百分比计算的基础 - 样本期间或样本数量(命中)。 |
| –percent-limit | 在stdio或stdio2上不显示功能,这些功能的开销在该百分比以下(默认:0)。注意,这是关于要显示的函数的选择,而不是函数内的行 |
2.2 解码指令跟踪数据
--itrace:用于解码指令跟踪数据的选项,包括:
i:合成指令事件y:合成周期事件b:合成分支事件(对于Arm SPE,为分支未命中)c:合成分支事件(仅调用)r:合成分支事件(仅返回)x:合成事务事件w:合成ptwrite事件p:合成功耗事件(包括Intel PT的PSB事件)o:合成由于使用aux-output而记录的其他事件(参见perf record)I:合成中断或类似的(异步)事件(例如,Intel PT事件跟踪)e:合成错误事件d:创建调试日志f:合成一级缓存事件m:合成最后一级缓存事件M:合成内存事件t:合成TLB事件a:合成远程访问事件g:合成调用链(与i或x一起使用)G:在现有事件记录上合成调用链l:合成最后一次分支条目(与i或x一起使用)L:在现有事件记录上合成最后一次分支条目s:跳过初始数量的事件q:更快(较少详细)的解码A:近似IPCZ:首选忽略时间戳(所谓的“无时间”解码)
默认情况下,所有事件都是默认的,即与--itrace=iybxwpe相同,但对于perf script,默认为--itrace=ce。
可以指定指令事件的周期(默认为100000,对于perf script默认为1),可以使用以下单位:
i:指令t:ticksms:毫秒us:微秒ns:纳秒(默认)
可以指定指令或事务事件的调用链大小(默认为16,最大为1024)。也可以指定指令或事务事件的最后分支条目数量(默认为64,最大为1024)。
对于选项G和L,也可以指定大小,类似于选项g和l。在x86上,请注意,当数据已经用大PEBS记录时,G和L的工作效果较差。详细信息请参见linkperf:perf-intel-pt[1]手册页。
也可以跳过一开始生成的事件(指令,分支,事务,ptwrite,功耗。这对于忽略初始化代码很有用。--itrace=i0nss1000000跳过第一百万条指令。
‘e’选项可以跟随影响将或将不会报告什么错误的标志。每个标志必须以’+‘或’-'为前缀。标志包括:
o:溢出l:丢失跟踪数据
如果支持,‘d’选项可能会跟随影响将或将不会记录什么调试信息的标志。每个标志必须以’+‘或’-'为前缀。标志包括:
a:所有perf事件e:仅在错误时输出(大小可配置 - 请参见linkperf:perf-config[1])o:输出到stdout
如果支持,'q’选项可以重复以增加效果。要完全禁用解码,请使用--no-itrace。
使用perf annotate指定指令事件的周期:
perf annotate --itrace=i10000
这个命令将设置指令事件的周期为10000。
如果你想跳过初始化代码,你可以使用如下命令:
perf annotate --itrace=i0nss1000000
这个命令将跳过开始的一百万条指令。
使用perf annotate来合成错误事件,并只报告溢出错误:
perf annotate --itrace=e+o
在这个例子中,perf annotate将合成错误事件,并只报告溢出错误。
相关文章:
linux之perf(8)annotate标注
Linux之perf(8)annotate标注 Author:Onceday Date:2023年10月12日 漫漫长路,才刚刚开始… 注:该文档内容采用了GPT4.0生成的回答,部分文本准确率可能存在问题。 参考文档: Tutorial - Perf Wiki (kernel.org)perf…...
【广州华锐互动】VR建筑安全培训体验为建筑行业人才培养提供有力支持
随着建筑行业的快速发展,建筑施工安全问题日益受到广泛关注。然而,传统的安全培训方式往往缺乏实践性和真实性,难以让员工真正掌握安全操作技能。近年来,虚拟现实(VR)技术的广泛应用为建筑施工安全培训提供了新的机遇。 虚拟现实技…...
【Javascript保姆级教程】运算符
文章目录 前言一、运算符是什么二、赋值运算符2.1 如何使用赋值运算符2.2 示例代码12.3 示例代码2 三、自增运算符3.1 运算符3.2 示例代码13.3 示例代码2 四、比较运算符4.1 常见的运算符4.2 如何使用4.3 示例代码14.4 示例代码2 五、逻辑运算符逻辑运算符列举 六、运算符优先级…...
图论与网络优化
2.概念与计算 2.1 图的定义 2.1.1 定义 图(graph) G G G 是一个有序的三元组,记作 G < V ( G ) , E ( G ) , ψ ( G ) > G<V(G),E(G),\psi (G)> G<V(G),E(G),ψ(G)>。 V ( G ) V(G) V(G) 是顶点集。 E ( G ) E(G) E(G) 是边集。 ψ ( G ) \…...
【论文复现】基于多模态深度学习方法的单细胞多组学数据聚类(【生物信息学】实验二:多组学数据融合:scMDC)
目录 一、实验介绍 1. 论文:基于多模态深度学习方法的单细胞多组学数据聚类 Abstract 2. Github链接 二、实验环境 0. 作者要求 1. 环境复现 实验一 实验二(本实验) 2. 库版本介绍 实验一 实验二 3. IDE 三、实验内容 1. 用法…...
mysql按指定字符截取
1、使用SUBSTRING函数进行截取 语法:str是要截取的字符串,pos是起始位置,len是要截取的长度 SUBSTRING(str, pos, len)例子 SELECT SUBSTRING(Hello, World!, 1, 5);返回"Hello"。其中,起始位置为1,截取的…...
搜索引擎-在URL地址栏输入信息,不跳转
在URL地址栏输入信息,不跳转 原因解决待续 原因 因为没有使用某个搜索引擎,无法定位到资源 解决 先打开百度或搜狗其他引擎,在输入内容,跳转成功 待续 ————————————————————— 以上就是今日博客的全部内容…...
10种新型网络安全威胁和攻击手法
2023年,网络威胁领域呈现出一些新的发展趋势,攻击类型趋于多样化,例如:从MOVEit攻击可以看出勒索攻击者开始抛弃基于加密的勒索软件,转向窃取数据进行勒索;同时,攻击者们还减少了对传统恶意软件…...
Elasticsearch:painless script 语法基础和实战
摘要:Elasticsearch,Java script的作用 script是Elasticsearch的拓展功能,通过定制的表达式实现已经预设好的API无法完成的个性化需求,比如完成以下操作 字段再加工/统计输出字段之间逻辑运算定义查询得分的计算公式定义特殊过…...
《数据结构、算法与应用C++语言描述》使用C++语言实现数组双端队列
《数据结构、算法与应用C语言描述》使用C语言实现数组双端队列 定义 队列的定义 队列(queue)是一个线性表,其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾(back或rear),删除元素的那一…...
TikTok Shop新结算政策:卖家选择权加强,电商市场蓄势待发
据悉,从2023年11月1日开始,TikTok Shop将根据卖家的店铺表现来应用3种不同类型的结算期,其中,标准结算期:资金交收期为8个日历日;快速结算期:资金交收期为3个日历日;延长结算期&…...
asp.net特色商品购物网站系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
一、源码特点 asp.net特色商品购物网站系统 是一套完善的web设计管理系统,系统采用mvc模式(BLLDALENTITY)系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 vs2010,数据库为sqlserver2008&a…...
解决一则诡异的javascript函数不执行的问题
有个vue 音乐播放器项目,由于之前腾讯的搜索接口没法用了,于是改成了别家的搜索接口。 但是由于返回数据结构不一样,代码重构的工作量还是挺大的:包括数据请求,数据处理,dom渲染,处理逻辑都进行…...
汽车安全的未来:毫米波雷达在碰撞避免系统中的角色
随着科技的飞速发展,汽车安全系统变得愈加智能化,而毫米波雷达技术正是这一领域的亮点之一。本文将深入探讨毫米波雷达在汽车碰撞避免系统中的关键角色,以及其对未来汽车安全的影响。 随着城市交通的拥堵和驾驶环境的变化,汽车安全…...
体感互动游戏研发虚拟场景3D漫游
体感互动游戏是一种结合虚拟现实(VR)或增强现实(AR)技术的游戏,允许玩家以身体动作和姿势来与游戏互动。这种类型的游戏通常需要特殊的硬件设备,例如体感控制器、摄像头或传感器,以捕捉玩家的动…...
微信小程序获取手机号(2023年10月 python版)[无需订阅]
技术栈: 1. 微信开发者工具中的调试基础库版本:3.1.2。 2. 后台:django。 步骤: 1. 首先在后台django项目的定时任务中增加一个下载access_token函数,并把得到的access_token保存在数据库中(其实随便哪里…...
Linux下设置网关以及网络相关命令
一、临时设置网关 查看当前路由表:route -n设置网关:route add default gw <路由器的网关IP> 注意:系统重启时,这些更改将不生效 二、永久设置网关 列出可用网络连接:nmcli connection show设置网关&#x…...
linux三剑客~sed命令的使用
1.工作原理: sed是一种流编辑器,它是文本处理中非常有用的工具 能够完美的配合正则表达式使用,处理时,把当前处理的行存储在临时缓冲区中,称为模式空间,接着用sed命令处理缓冲区中的内容 处理完成后&…...
virtualBox虚拟机安装多个+主机访问虚拟机+虚拟机访问外网配置
目的:本机安装3个虚拟机 一、虚拟机安装:Oracle VM VirtualBox (https://www.virtualbox.org/)源代码可下载,且免费使用 1、https://www.virtualbox.org/ 进入网站中Download 模块选择与自己电脑系统相应的下载包下载即可 如果安装过程报错如…...
正点原子嵌入式linux驱动开发——Linux按键输入
在前几篇笔记之中都是使用的GPIO输出功能,还没有用过GPIO输入功能,本章就来学习一下如果在Linux下编写GPIO输入驱动程序。正点原子STM32MP1开发板上有三个按键,就使用这些按键来完成GPIO输入驱动程序,同时利用原子操作来对按键值进…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
