10得票1回答
硬件缓存事件和性能分析工具

当我运行perf list命令时,我看到了一堆硬件缓存事件,如下所示: Translated: 当我运行perf list命令时,我看到了一堆硬件缓存事件,如下所示:$ perf list | grep 'cache event' L1-dcache-load-misses ...

10得票2回答
perf会锁定用户空间的互斥锁吗?

摘要: perf lock 是否能够对 pthread_mutex 进行性能分析? 细节: 工具 perf 有一个选项 perf lock。man 手册说:You can analyze various lock behaviours and statistics with this pe...

10得票2回答
能否在C++代码中使用Linux Perf分析器?

我想要测量我的C++代码中某些部分的L1、L2和L3缓存命中/失效率。我不想在整个应用程序中使用Perf。可以将Perf作为库在C++中使用吗?int main() { ... ... start_profiling() // The part I'm inte...

10得票2回答
性能功耗测量:它是如何工作的?

我注意到perf list现在有测量功耗的选项。您可以按照下面的方式使用它: $ perf stat -e power/energy-cores/ ./a.out Performance counter stats for 'system wide': 8.5...

9得票2回答
使用字段分隔符选项获取性能耗时

我有一个解析Linux命令perf输出的程序。它需要使用选项-x,(字段分隔符选项)。我想使用perf提取经过的时间(而不是任务时间或CPU时钟)。但是当我使用-x选项时,在输出中找不到经过的时间,并且我找不到相应的perf事件。以下是示例输出: perf stat ls =========...

9得票2回答
每个mmap/access/munmap有两次TLB缺失

for (int i = 0; i < 100000; ++i) { int *page = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP...

9得票1回答
什么原因导致DWARF perf调用栈无法展开?

在通过perf record --call-graph dwarf生成并由perf script打印的回溯中,大约有5%的调用栈地址是错误的,即无法执行展开。一个例子如下: my_bin 770395 705462.825887: 3560360 cycles: 7f...

9得票1回答
查找线程瓶颈并使用perf进行壁钟优化

使用perf record采样CPU周期对于查找优化候选项是有用的,如果核心利用率大致保持不变。但对于具有多个阶段且并行性不同的代码,计数CPU周期将强调高度并行的阶段,同时低估影响墙时的顺序或有限并行性阶段。简而言之,天真的perf使用可能会突出阿姆达尔定律的错误方面。 因此,问题是如何让...

9得票1回答
perf_event_open 溢出信号

我想要计算一段代码的(大致)指令数量。此外,我希望在特定数量的指令之后接收一个信号。 为此,我使用perf_event_open提供的溢出信号行为。 我正在使用manpage提出的第二种方式来实现溢出信号: 引用: 信号溢出 可以设置事件以在越过阈值时传递信号。信号处理程序是使用poll...

9得票2回答
如何提高缓存未命中率的实例?

我正在尝试编写一个示例程序,它的高缓存未命中率。我想我可以尝试按列访问矩阵,如下所示: #include <stdlib.h> int main(void) { int i, j, k; int w = 1000; int h = 1000; ...