perf相关内容

使用Perf查找线程瓶颈并优化占用时间

使用perf record对CPU周期进行采样对于查找内核利用率大致恒定的优化候选者非常有用。但是,对于具有多个并行度不同的阶段的代码,计算CPU周期将非常强调并行阶段,而不强调影响墙时间的顺序或有限并行阶段。简而言之,简单使用Perf可能会突出显示amdahl's law 的错误分支 因此,问题是如何让perf record/perf report找到缩短运行时间的优化候选者,可以是一致并行 ..
发布时间:2022-03-23 18:59:12 服务器开发

PERF_EVENT_PARANOID==1实际上对x86 PERF施加了什么限制?

较新的Linux内核有一个可调的sysfs/proc/sys/kernel/perf_event_paranoid,允许用户为非根用户调整perf_events的可用功能,数字越大越安全(提供的功能相应较少): 从kernel documenation我们可以看到各种值的以下行为: PERF_EVENT_PARANOID: 控制非特权用户对Performance Events系统的使 ..
发布时间:2022-03-23 18:46:30 其他开发

是否可以在 docker 容器中运行 linux perf 工具

我尝试从容器中给出以下命令并发现以下问题,可能是因为“-moby"内核版本.我们不能在 linux 内核版本中获得一个没有“-moby"字样的 docker 镜像吗? 我尝试在具有 ubuntu 的 VM 上安装 linux perf 工具,它工作正常. #docker run -t -i ubuntu:14.04/bin/bashroot@214daea94f4f:/# 性能警告:未找到 ..
发布时间:2022-01-24 21:12:30 服务器开发

返回输出之前在后台运行的 Python 子进程

我有一些 Python 代码想用 perf 进行调试.为此,我想使用子流程.以下命令返回进程的指令相关信息,直到通过 Ctrl^C 退出命令. perf stat -p 现在,我想在后台的 Python 代码中运行它,直到我希望能够终止它的操作并打印命令输出.表达我的意思: x = subprocess.call(["perf","stat","-p",str(GetMyProcessID ..
发布时间:2022-01-18 16:17:42 服务器开发

linux 的 perf 实用程序如何理解堆栈跟踪?

Brendan Gregg 曾使用 Linux 的 perf 实用程序为 c/c++、jvm 代码、nodejs 代码等生成火焰图. Linux 内核本身是否理解堆栈跟踪?我在哪里可以阅读更多关于工具如何能够内省进程的堆栈跟踪的信息,即使进程是用完全不同的语言编写的? 解决方案 Gregg 在 perf 中有关于堆栈跟踪的简短介绍:http://www.brendangregg.co ..
发布时间:2022-01-04 22:41:27 其他开发

linux perf 记录:计数(-c)和频率(-F)选项之间的差异

我试图了解 perf record 的 -c 和 -F 选项的真正作用,但我无法解释我所看到的.我正在运行这些命令: perf record -a -F 睡觉 1 和 perf record -a -c ;睡觉 1 尝试频率和计数的不同值.我得到的结果是以下 在第一个表中我设置了频率,在第二个表中设置了计数.频率和计数如何影响事件的数量?我认为事件的数量与频率和计数无关,但显然事实并 ..
发布时间:2021-12-30 16:31:53 服务器开发

在 Intel Kaby Lake 架构上获取最后一级缓存未命中数的确切代码是什么

我读了一篇有趣的论文,题为“A High-Resolution Side-Channel Attack on Last-Level Cache",想找出我自己机器的索引哈希函数——即 Intel Core i7-7500U (Kaby Lake架构)——遵循这项工作的指导. 为了对哈希函数进行逆向工程,论文提到的第一步是: for (n=16; ; n++){//在第一次运行时忽略任何未 ..
发布时间:2021-12-20 11:26:48 C/C++开发

了解 lfence 对具有两个长依赖链的循环的影响,以增加长度

我正在玩这个答案中的代码,稍微修改了一下: BITS 64全局 _start节.text_开始:mov ecx, 1000000.环形:;T 是用 CLI 定义的符号 (-DT=...)TIMES T imul eax, eax围栏TIMES 刺激 edx, edx十二月循环mov eax, 60 ;sys_exit异或edi,edi系统调用 没有 lfence 我得到的结果与该答案中的静态分 ..
发布时间:2021-12-08 11:27:05 其他开发

AMD 性能事件

我试图在我的设备上使用 perf 和 AMD cpu,但我真的找不到任何关于如何获取的信息,比如说,cache-misses 来自 AMD.我读到您需要编写 -e rNNN,其中 NNN 是事件的十六进制代码,但我没有找到任何表格或要查看的内容那些代码.你能帮我解决这个问题吗,因为互联网上似乎根本没有信息!实际上,在 perf 的手册中有一些链接,但它们无效:( 解决方案 检查 perf ..
发布时间:2021-11-27 11:34:26 其他开发

用于获取正确调用堆栈的 ARM 标头

我目前正在 ARM 处理器上对基于 linux 的软件本身进行优化.这些优化主要以 ARM 和 ARM NEON 函数的形式进行. 为了对软件进行概要分析,我使用了性能记录和火焰图,但是,一旦我介绍了汇编函数,它们就不会堆叠在调用它们的函数之上,而是看似随机的位置. 因此,我的问题是,我应该在我的函数中包含哪些内容,以便它们在调用堆栈中正确显示. 有一个稍微相关的话题,但没有给出 ..
发布时间:2021-11-17 22:02:49 其他开发

为什么在执行指针追逐时这条跳转指令如此昂贵?

我有一个执行指针追踪的程序,我正在尝试优化指针尽可能地追逐循环.我注意到 perf record 检测到函数 myFunction() 中约 20% 的执行时间用于执行跳转指令(用于在特定值后退出循环已阅读). 注意事项: 指针追踪路径可以轻松放入 L1 数据缓存 使用 __builtin_expect 来避免分支错误预测的成本没有明显效果 perf record 有以下输出: ..
发布时间:2021-09-29 19:35:13 其他开发

如何通过获取指令类型细分来表征工作负载?

我想获取测试程序中内存读写指令的百分比,最好是动态的.除了计算 gdb asm 转储中的指令(无论如何都是静态的)之外,还有没有更简单的方法来获取它?Valgrind 提供总堆使用量.Perf 有一些不错的功能,但不支持 WSL.Pin 有说明count 功能,但我不确定它是否支持 WSL. 解决方案 (更新:据报道 PIN 在 WSL 下不起作用.但它不需要性能计数器,因此它在 VM 或 ..

ubuntu 12.10 perf stat <不支持>周期

我使用的系统是ubuntu-12.10-desktop-amd64 我通过安装 perf apt-get install linux-tools linux-tools-common linux-tools-3.5.0-40 当我使用 perf list 时,它会按预期列出所有事件.但是当我使用perf stat时,结果似乎异常 perf stat ls 结果是: 'ls' 的性 ..
发布时间:2021-09-12 18:56:26 其他开发