这是命令 perf-record,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
perf-record - 运行命令并将其配置文件记录到 perf.data
概要
PERF 记录 [-e | --event=EVENT] [-l] [-a]
PERF 记录 [-e | --event=EVENT] [-l] [-a] — [ ]
商品描述
此命令运行一个命令并从中收集性能计数器配置文件到
perf.data - 不显示任何内容。
然后可以稍后检查此文件,使用 PERF 报告.
配置
...
您可以在 shell 中指定的任何命令。
-e,--事件=
选择 PMU 事件。 选择可以是:
· 一个象征性的事件名称(使用 PERF 名单 列出所有事件)
· rNNN 形式的原始 PMU 事件(eventsel+umask),其中 NNN 是十六进制
事件描述符。
· 象征性形成的 PMU 事件,如 pmu/参数1=0x3,参数2/ 协调 param1, param2,
等被定义为 PMU 的格式
/sys/bus/event_sources/devices/ /格式/*。
· 象征性形成的事件,如 pmu/config=M,config1=N,config3=K/
其中 M、N、K 是数字(十进制、十六进制、八进制格式)。 可接受
'config'、'config1' 和 'config2' 中的每一个的值由
/sys/bus/event_sources/devices/ 中的相应条目/格式/*
param1 和 param2 被定义为 PMU 的格式:
/sys/bus/event_sources/devices/ /格式/*
还有一些参数没有在 .../ /格式/*。
这些参数可用于重载每个事件的默认配置值。
这是参数列表。
- 'period':设置事件采样周期
- 'freq':设置事件采样频率
- 'time':禁用/启用时间戳。 可接受的值为 1
启用时间戳。 0 表示禁用时间戳。
默认值为1。
- '调用图':禁用/启用调用图。 可接受的 str 为“fp”
FP 模式,“dwarf”代表 DWARF 模式,“lbr”代表 LBR 模式和
“否”禁用调用图。
- 'stack-size':矮人模式的用户堆栈大小
注意:如果用户明确设置了与参数冲突的选项,
由 params 设置的值将被覆盖。
· 硬件断点事件的形式 \mem:addr[/len][:access] 地址在哪里
你想闯入的内存地址。 access 是内存访问类型
(read, write, execute) 它可以按如下方式传递: \内存:地址[:[r][w][x]]. 连是
断点将覆盖的范围,指定地址的字节数。
如果您想在 0x1000 中分析读写访问,只需设置 内存:0x1000:rw。 如果
你想在 [0x1000~1008) 中分析写访问,只需设置 内存:0x1000/8:w.
· 由一对大括号(“{event1,event2,...}”)包围的一组事件。 每个
事件用逗号分隔,组应该被引用以防止外壳
解释。 您还需要在“性能报告”上使用 --group 来查看组事件
在一起。
--过滤器=
事件过滤器。 此选项应遵循选择跟踪点的事件选择器 (-e)
事件。 多种的 - 筛选 选项组合使用 &&.
--排除性能
不要记录由 perf 本身发出的事件。 此选项应遵循事件选择器
(-e) 选择跟踪点事件。 它添加了一个过滤器表达式 普通_pid !=
$PERFPID 到过滤器。 如果其他 - 筛选 存在,新的过滤器表达式将是
与他们结合 &&.
-a, --all-cpus
来自所有 CPU 的系统范围的集合。
-p,--pid=
在现有进程 ID(逗号分隔列表)上记录事件。
-t,--tid=
在现有线程 ID(逗号分隔列表)上记录事件。 此选项还禁用
默认继承。 通过添加 --inherit 启用它。
-u,--uid=
在 uid 拥有的线程中记录事件。 姓名或号码。
-r,--实时=
使用此 RT SCHED_FIFO 优先级收集数据。
--无缓冲
无需缓冲即可收集数据。
-c,--计数=
要采样的事件周期。
-o,--输出=
输出文件名。
-i, --no-继承
子任务不继承计数器。
-F,--频率=
在这个频率上配置文件。
-m,--mmap-pages=
mmap 数据页的数量(必须是 XNUMX 的幂)或附加的大小规范
单位字符 - B/K/M/G。 大小四舍五入为最接近页面的 XNUMX 次方
价值。 另外,通过添加逗号,AUX 区域跟踪的 mmap 页数可以是
指定的。
- 团体
将所有事件放在一个事件组中。 这在 --event 选项之前并保持不变
仅用于向后兼容。 见--事件。
-g
启用调用图(堆栈链/回溯)记录。
--调用图
设置和启用调用图(堆栈链/回溯)记录,意味着 -g。 默认是
“fp”。
允许指定“fp”(帧指针)或“dwarf”
(DWARF 的 CFI - 调用帧信息)或“lbr”
(硬件最后分支记录设施)作为收集方法
用于显示调用图的信息。
在某些系统中,使用 gcc 构建二进制文件
--fomit-frame-pointer,使用“fp”方法会产生假
调用图,使用“dwarf”(如果可用)(perf 工具链接到
应改用 libunwind 或 libdw 库)。
使用“lbr”方法不需要任何编译器选项。 它
将从硬件 LBR 寄存器生成调用图。 这
主要限制是它仅适用于新的英特尔
平台,例如 Haswell。 它只能获取用户调用链。 它
不能同时与分支堆栈采样一起使用。
使用“dwarf”记录时,perf 还会记录(用户)堆栈转储
采样时。 堆栈转储的默认大小为 8192(字节)。
用户可以通过在逗号后传递大小来更改大小,例如
“--call-graph 矮人,4096”。
-q, --安静
不要打印任何消息,这对脚本很有用。
-v,--详细
更详细(显示计数器打开错误等)。
-s,--统计
记录每个线程的事件计数。 使用它 PERF 报告 -T 查看值。
-d,--数据
记录示例地址。
-T,--时间戳
记录示例时间戳。 使用它 PERF 报告 -D 查看时间戳,对于
实例。
-P, --期间
记录采样周期。
-n, --无样本
不要采样。
-R,--原始样本
从所有打开的计数器收集原始样本记录(跟踪点计数器的默认值)。
-C,--cpu
仅在提供的 CPU 列表中收集样本。 可以提供多个 CPU 作为一个
没有空格的逗号分隔列表:0,1。 CPU 的范围用 -: 0-2 指定。 在
开启继承模式的每线程模式(默认),样本仅在
线程在指定的 CPU 上执行。 默认是监视所有 CPU。
-N, --no-buildid-cache
不要更新 buildid 缓存。 这在以下情况下节省了一些开销
perf.data 文件(包括 buildid)中的信息就足够了。
-G 名称,..., --cgroup 名称,...
仅在名为“name”的容器(cgroup)中监控。 此选项仅在
每 CPU 模式。 必须挂载 cgroup 文件系统。 所有线程属于
容器“名称”在受监控的 CPU 上运行时受到监控。 多个 cgroup
可以提供。 每个cgroup应用到对应的事件上,即第一个cgroup
到第一个事件,第二个 cgroup 到第二个事件,依此类推。 可以提供一个
使用例如 -G foo,,bar 清空 cgroup(始终监视)。 Cgroups 必须有
相应的事件,即它们总是指之前在命令中定义的事件
线。
-b,--分支-任何
启用已采取的分支堆栈采样。 可以对任何类型的分支进行采样。 这是一个
--branch-filter any 的快捷方式。 有关更多信息,请参阅 --branch-filter。
-j,--分支过滤器
启用已采取的分支堆栈采样。 每个样本捕获一系列连续采集
分支。 每个样本捕获的分支数量取决于底层
硬件、感兴趣的分支类型和执行的代码。 有可能
选择通过启用过滤器捕获的分支类型。 以下过滤器是
定义:
· any:任何类型的分支
· any_call:任何函数调用或系统调用
· any_ret:任意函数返回或系统调用返回
· ind_call:任何间接分支
· call:直接调用,包括far(to/from kernel)调用
· u:仅当分支目标在用户级别时
· k:仅当分支目标在内核中时
· hv:仅当目标处于管理程序级别时
· in_tx:仅当目标处于硬件事务中时
· no_tx:仅当目标不在硬件事务中时
· abort_tx:仅当目标是硬件事务时才中止
· cond:条件分支
该选项至少需要 any、any_call、any_ret、ind_call 中的一种分支类型,
条件。 权限级别可以省略,在这种情况下,权限级别
关联的事件应用于分支过滤器。 内核 (k) 和管理程序 (hv)
特权级别取决于权限。 对多个事件进行采样时,分支
为所有采样事件启用堆栈采样。 采样的分支类型是
所有事件都一样。 必须将各种过滤器指定为逗号分隔列表:
--branch-filter any_ret,u,k 请注意,此功能可能不适用于所有
处理器。
- 重量
启用加权采样。 每个样品记录一个额外的重量,可以
与 weight 和 local_weight 排序键一起显示。 这目前适用于 TSX
在现代 Intel CPU 上以精确模式中止事件和一些内存事件。
- 交易
记录交易相关事件的交易标志。
--每线程
使用每线程 mmap。 默认情况下,会创建每个 CPU 的 mmap。 此选项覆盖
并使用每线程 mmap。 这样做的副作用是继承是自动的
禁用。 如果与 -a 或 -C 选项结合使用,则 --per-thread 将被忽略并显示警告。
-D,--延迟=
启动程序后,在测量前等待毫秒。 这有助于过滤掉
程序的启动阶段,这通常是非常不同的。
-I,--intr-regs
在中断时捕获机器状态(寄存器),即每个计数器溢出时
样本。 捕获的寄存器列表取决于架构。 此选项已关闭
默认。 可以使用符号名称选择要采样的寄存器,
例如在 x86、ax、si 上。 要列出可用的寄存器,请使用 --intr-regs=\?。 命名
寄存器,传递一个逗号分隔的列表,例如 --intr-regs=ax,bx。 登记表
依赖于架构。
- 运行时间
记录读取事件的运行和启用时间 (:S)
-k, --clockid
设置时钟 id 以用于 perf_event_type 记录中的各种时间字段。
见clock_gettime()。 特别是 CLOCK_MONOTONIC 和 CLOCK_MONOTONIC_RAW 是
支持,某些事件也可能允许 CLOCK_BOOTTIME、CLOCK_REALTIME 和 CLOCK_TAI。
-S, --快照
选择 AUX 区域跟踪快照模式。 此选项仅对 AUX 区域有效
追踪事件。 可选地,每个快照要捕获的字节数可以是
指定的。 在快照模式下,仅当信号 SIGUSR2 为
接收。
--proc-map-超时
在处理预先存在的线程 /proc/XXX/mmap 时,可能需要很长时间,因为
该文件可能很大。 在这种情况下需要暂停。 此选项设置时间
出限制。 默认值为 500 毫秒。
--开关事件
记录上下文切换事件,即 PERF_RECORD_SWITCH 类型的事件或
PERF_RECORD_SWITCH_CPU_WIDE。
--clang-路径
用于编译 BPF 脚本的 clang 二进制文件的路径。
--clang-opt
编译 BPF 脚本时传递给 clang 的选项。
使用 onworks.net 服务在线使用 perf-record