如何记录进程/文件的所有内存访问?

时间:2014-04-06 17:13:53

标签: linux caching testing memory benchmarking

为了测试缓存系统,我需要特定进程的内存访问(读取和写入)列表。缓存代码用verilog编写。我的应用程序是用于媒体处理,但是我也对其他应用程序开放。到目前为止,我一直在用于PNG解码的C ++代码中添加地址引用(这里可用http://lodev.org/lodepng/)...

这是一个非常繁琐的过程,我正在寻找替代方案。我甚至尝试过像简单标量这样的基准测试以及阅读故障转储,但无济于事......

提前致谢!

2 个答案:

答案 0 :(得分:1)

只要您在x86上运行,可能值得花时间研究一下英特尔Pin

他们的手册an example如何使用Pin来检测二进制文件以生成内存跟踪。

答案 1 :(得分:0)

查看https://lwn.net/Articles/257209/

一个工具是Cachegrindvalgrind的一部分)。它很慢,但可以告诉你有关内存访问的确切统计信息,因为它模拟了虚拟处理器上的整个程序。

另一个工具是Oprofile。它是一个使用统计抽样来获取数据的内核模块。它不那么准确,但重量要轻得多。