16得票1回答
只显示带有Perf annotate的源代码

我正在使用Perf进行一些性能测试实验。 然而,我想要针对特定的代码区域知道结果,并且在这种情况下,查看每行源代码(在此情况下为C/C++)的结果(百分比)将简化任务。 perf annotate 有一个视图,其中它显示ASM+源代码,并且还有选择关闭显示源代码的选项。我想知道如何完成此选...

15得票1回答
为什么Perf和Papi在L3缓存引用和缺失方面给出不同的值?

我正在开展一个项目,需要实现一个已被理论证明与缓存友好的算法。简单来说,如果输入为N,而B是每次出现缓存未命中时在缓存和RAM之间传输的元素数,则该算法将需要O(N/B)次访问RAM。 我想证明这确实是实际情况下的行为。为了更好地了解如何测量各种与缓存相关的硬件计数器,我决定使用不同的工具。其...

14得票1回答
如何解释perf iTLB-loads,iTLB-load-misses?

我有一个测试用例要观察性能,它是通过iTLB加载和iTLB加载不命中来实现的 perf stat -e dTLB-loads,dTLB-load-misses,iTLB-loads,iTLB-load-misses -p 22479 并获得输出: 进程ID“22479”的性能计数器统计信息...

14得票3回答
在Docker容器中运行Linux Perf工具是否可行?

我尝试在容器中运行以下命令,遇到了下面的问题,可能是由于“-moby”内核版本引起的。我们能否获得一个没有单词“-moby”的docker镜像,而不是在Linux内核版本中出现它。 我尝试在安装 Ubuntu 的虚拟机上安装 Linux perf 工具,并成功了。 #docker run ...

14得票4回答
如何在C/C++应用程序中分析内存访问所花费的时间?

一个应用程序中的函数耗费的总时间可以分为两个组成部分: 实际计算所花费的时间(Tcomp) 内存访问所花费的时间(Tmem) 通常,性能分析器会提供函数耗费的总时间估计。是否可能根据上述两个部分(Tcomp和Tmem)获得耗费时间的估计值?

13得票2回答
为什么性能测试中有如此高的上下文切换?

我试图理解Linux的perf,但发现了一些非常令人困惑的行为: 我编写了一个简单的多线程示例,其中一个线程针对每个核心进行绑定;每个线程在本地运行计算,并且彼此不通信(请参见下面的test.cc)。我认为这个示例应该有非常低的上下文切换甚至为零。然而,使用Linux的perf来分析示例时显...

13得票3回答
从C程序中测量页面错误。

我正在比较几个系统调用,其中我从/向内存读写。是否有定义的API来测量C中的页面错误(页面进出)? 我找到了这个库libperfstat.a,但它是为AIX而设计的,我找不到任何适用于Linux的东西。 编辑: 我知道在Linux中有time和perf-stat命令,只是探索是否有任何可供...

13得票1回答
性能分析工具显示的函数名是被混淆过的

我想尝试使用perf来对一些程序进行性能分析,这是我在CppCon 2015上看到this演讲后想尝试的。我下载了与该演讲中使用的Google基准库相同的版本,使用适当的开关编译我的程序,并将其链接到该库,然后使用perf记录运行情况。报告选项给出了以下内容: 如您所见,函数名并不是很易...

12得票1回答
简单的CPU绑定循环中的Perf过度计数:神秘的内核工作?

我已经使用Linux perf 一段时间来进行应用程序分析。通常,被分析的应用程序非常复杂,因此人们往往只是简单地接受报告的计数器值,只要与基于第一原理的预期相差不大就行了。 然而,最近我对一些微不足道的64位汇编程序进行了分析——足够微不足道,以至于可以几乎精确地计算出各种计数器的预期值,...

12得票2回答
如何在 Docker 容器内的 Linux Perf 工具中启用调试符号?

我正在使用基于“ubuntu”标签的Docker容器,并且无法使Linux Perf工具显示调试符号。 以下是我演示问题的步骤。 首先,我启动一个容器,这里使用交互式shell。 $ docker run -t -i ubuntu:14.04 /bin/bash 然后从容器提示符处安...