perf相关内容
使用perf record对CPU周期进行采样对于查找内核利用率大致恒定的优化候选者非常有用。但是,对于具有多个并行度不同的阶段的代码,计算CPU周期将非常强调并行阶段,而不强调影响墙时间的顺序或有限并行阶段。简而言之,简单使用Perf可能会突出显示amdahl's law 的错误分支 因此,问题是如何让perf record/perf report找到缩短运行时间的优化候选者,可以是一致并行
..
较新的Linux内核有一个可调的sysfs/proc/sys/kernel/perf_event_paranoid,允许用户为非根用户调整perf_events的可用功能,数字越大越安全(提供的功能相应较少): 从kernel documenation我们可以看到各种值的以下行为: PERF_EVENT_PARANOID: 控制非特权用户对Performance Events系统的使
..
我尝试从容器中给出以下命令并发现以下问题,可能是因为“-moby"内核版本.我们不能在 linux 内核版本中获得一个没有“-moby"字样的 docker 镜像吗? 我尝试在具有 ubuntu 的 VM 上安装 linux perf 工具,它工作正常. #docker run -t -i ubuntu:14.04/bin/bashroot@214daea94f4f:/# 性能警告:未找到
..
我有一些 Python 代码想用 perf 进行调试.为此,我想使用子流程.以下命令返回进程的指令相关信息,直到通过 Ctrl^C 退出命令. perf stat -p 现在,我想在后台的 Python 代码中运行它,直到我希望能够终止它的操作并打印命令输出.表达我的意思: x = subprocess.call(["perf","stat","-p",str(GetMyProcessID
..
Brendan Gregg 曾使用 Linux 的 perf 实用程序为 c/c++、jvm 代码、nodejs 代码等生成火焰图. Linux 内核本身是否理解堆栈跟踪?我在哪里可以阅读更多关于工具如何能够内省进程的堆栈跟踪的信息,即使进程是用完全不同的语言编写的? 解决方案 Gregg 在 perf 中有关于堆栈跟踪的简短介绍:http://www.brendangregg.co
..
我正在尝试使用 linux perf 工具在特定功能期间监控性能统计数据. 我按照 https://perf.wiki.kernel.org/index.php/Jolsa_Features_Togle_Event#Example_-_using_u.28ret.29probes"/perf.wiki.kernel.org/index.php/Jolsa_Features_Togle_Eve
..
我试图了解 perf record 的 -c 和 -F 选项的真正作用,但我无法解释我所看到的.我正在运行这些命令: perf record -a -F 睡觉 1 和 perf record -a -c ;睡觉 1 尝试频率和计数的不同值.我得到的结果是以下 在第一个表中我设置了频率,在第二个表中设置了计数.频率和计数如何影响事件的数量?我认为事件的数量与频率和计数无关,但显然事实并
..
根据 perf 教程,perf stat 应该报告缓存使用硬件计数器未命中.但是,在我的系统(最新的 Arch Linux)上,它没有: [joel@panda goog]$ perf stat ./hash'./hash' 的性能计数器统计信息:869.447863 task-clock # 0.997 CPUs92 次上下文切换 # 0.106 K/秒4 cpu-migrations # 0
..
我读了一篇有趣的论文,题为“A High-Resolution Side-Channel Attack on Last-Level Cache",想找出我自己机器的索引哈希函数——即 Intel Core i7-7500U (Kaby Lake架构)——遵循这项工作的指导. 为了对哈希函数进行逆向工程,论文提到的第一步是: for (n=16; ; n++){//在第一次运行时忽略任何未
..
我对性能事件 cache-misses 和 L1-icache-load-misses,L1-dcache-load-misses,LLC-load-misses 感到困惑.当我尝试 perf stat 所有这些时,答案似乎不一致: %$: sudo perf stat -B -e cache-references,cache-misses,cycles,instructions,branch,
..
我尝试使用 Brendan Gregg 描述的 Linux perf_events 进行一些 nodejs 分析 此处. 工作流程如下: 使用 --perf-basic-prof 运行节点 >0.11.13,这会创建 /tmp/perf-(PID).map 文件,其中 JavaScript 符号映射是 使用 perf record -F 99 -p `pgrep -n node` -
..
我正在玩这个答案中的代码,稍微修改了一下: 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 我得到的结果与该答案中的静态分
..
我试图在我的设备上使用 perf 和 AMD cpu,但我真的找不到任何关于如何获取的信息,比如说,cache-misses 来自 AMD.我读到您需要编写 -e rNNN,其中 NNN 是事件的十六进制代码,但我没有找到任何表格或要查看的内容那些代码.你能帮我解决这个问题吗,因为互联网上似乎根本没有信息!实际上,在 perf 的手册中有一些链接,但它们无效:( 解决方案 检查 perf
..
我目前正在 ARM 处理器上对基于 linux 的软件本身进行优化.这些优化主要以 ARM 和 ARM NEON 函数的形式进行. 为了对软件进行概要分析,我使用了性能记录和火焰图,但是,一旦我介绍了汇编函数,它们就不会堆叠在调用它们的函数之上,而是看似随机的位置. 因此,我的问题是,我应该在我的函数中包含哪些内容,以便它们在调用堆栈中正确显示. 有一个稍微相关的话题,但没有给出
..
我运行以下调用 perf_event_open 系统调用的程序:Linux sama-desktop 3.18.0-20-rpi2 #21-Ubuntu SMP PREEMPT Sun Apr 5 01:56:02 UTC 2015 armv7l armv7l armv7l GNU/Linux 程序: #define _GNU_SOURCE 1#include #include #incl
..
第一件事: Alpine 3.9.0 版 perf[来自:http://dl-cdn.alpinelinux.org/高山/边缘/测试] 4.18.13 Docker 18.09.3 版本 774a1f4 我的 Dockerfile 来自 alpine:latest# 设置工作目录为/app工作目录/应用程序/# 安装requirements.txt中指定的任何需要的包运行是 |
..
我有一个执行指针追踪的程序,我正在尝试优化指针尽可能地追逐循环.我注意到 perf record 检测到函数 myFunction() 中约 20% 的执行时间用于执行跳转指令(用于在特定值后退出循环已阅读). 注意事项: 指针追踪路径可以轻松放入 L1 数据缓存 使用 __builtin_expect 来避免分支错误预测的成本没有明显效果 perf record 有以下输出:
..
是否有 Windows 等效的 linux 命令“perf stat"?例如查看前端停顿、缓存未命中和其他性能计数器数据? 解决方案 发现这个问题的一些人可能实际上是在寻找 xperf,或者可以下载的替代它的新 ETW 东西此处.
..
我想获取测试程序中内存读写指令的百分比,最好是动态的.除了计算 gdb asm 转储中的指令(无论如何都是静态的)之外,还有没有更简单的方法来获取它?Valgrind 提供总堆使用量.Perf 有一些不错的功能,但不支持 WSL.Pin 有说明count 功能,但我不确定它是否支持 WSL. 解决方案 (更新:据报道 PIN 在 WSL 下不起作用.但它不需要性能计数器,因此它在 VM 或
..
我使用的系统是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' 的性
..