如何仅使用英特尔 Pin 检测 SPEC CPU2006 的实际基准测试?

How do I instrument only the actual benchmark of SPEC CPU2006 with Intel's Pin?

我一直在尝试使用 Intel 在 Ubuntu 上的 Pin 检测 SPEC CPU2006 基准测试。我有一个带有简单缓存模拟器的 Pintool,可以计算读取和写入。当 运行 在 'runspec -nonreportable' 命令上使用 Pintool 进行特定基准测试时,我得到了我想要的数据。但是,不同基准测试的结果几乎完全不同。我的 pintool 似乎不是问题,因为它看起来可以在其他应用程序上正常工作。我怀疑结果是由于 Pintool 正在检测包括基准设置在内的所有内容。

我之前所做的只是 运行在 运行spec 命令上使用 pintool。在使用 运行spec 之前,我还尝试使用“--action build”和“--action setup”来减少开销,但看起来 运行s 大部分都是相同的设置.我知道 SPEC CPU 2006 中有监控挂钩,我可以在开始基准测试之前 运行 附加命令,我想我可能会在某种程度上使用这些挂钩,但我知道确定如何。也许 'monitor_wrapper' 钩子最合适?也许我可以以某种方式获取 pid,并在基准测试开始时将我的 pintool 附加到正确的进程?非常感谢我能得到的任何帮助!

您可能只是在检测 runspec 本身,它 运行 在创建另一个进程的进程中,其中基准为 运行。您有两个选择:要么告诉 Pin 跟随子进程(使用 -follow_execv 选项),要么在创建基准时直接将 Pin 注入基准进程(通过 运行 使用 specinvoke 而不是 runspec).