linux x86 性能调试记录

介绍了Intel的turbostat工具,用于监控x86 CPU的频率与能耗,并介绍了如何通过perf c2c功能诊断多线程应用中的CacheLine伪共享问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

频率
urbostat是intel针对自己的x86 CPU,做的一个CPU频率、能耗监控的用户态程序,位于linux代码的tools/power/x86/turbostat目录下,编译也很简单,可以直接在这个目录下make,就生成二进制文件了。

这个工具在监控cpu运行频率方面有很大用途。

cache伪共享
当应用在 NUMA 环境中运行,或者应用是多线程的,又或者是多进程间有共享内存,满足其中任意一条,那么这个应用就可能因为 Cache Line 伪共享而性能下降。

但是,要怎样才能知道一个应用是不是受伪共享所害呢?Joe Mario 提交的 patch 能够解决这个问题。Joe 的 patch 是在 Linux 的著名的 perf 工具上,添加了一些新特性,叫做 c2c, 意思是“缓存到缓存” (cache-2-cache)。

Redhat 在很多 Linux 的大型应用上使用了 c2c 的原型,成功地发现了很多热的伪共享的 Cache Line。 Joe 在博客里总结了一下 perf c2c 的主要功能:

发现伪共享的 Cache Line
谁在读写上述的 Cache Line,以及访问发生处的 Cache Line 的内部偏移
这些读者和写者分别的 pid, tid, 指令地址,函数名,二进制文件
每个读者和写者的源代码文件,代码行号
这些热点 Cache Line 上的,load 操作的平均延迟
这些 Cache Line 的样本来自哪些 NUMA 节点, 由哪些 CPU 参与了读写
perf c2c 和 perf 里现有的工具比较类似:

先用 perf c2c record 通过采样,收集性能数据
再用 perf c2c report 基于采样数据,生成报告
如果想了解 perf c2c 的详细使用,请访问: PERF-C2C(1)

这里还有一个完整的 perf c2c 的输出的样例。

最后,还有一个小程序的源代码,可以产生大量的 Cache Line 伪共享,用以测试体验: Fasle sharing .c src file

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值