0

我尝试使用 'perf trace' 命令在特殊线程中跟踪 tsx abort。但是我在参数上遇到错误。我认为可能正确并尝试过的所有命令都在下面。

perf trace --pid 24265 --event tx-abort

perf trace --pid 24265 --event {tx-abort}

perf trace --pid 24265 --event {'tx-abort'}

perf trace --pid {24265} --event tx-abort

perf trace --pid {24265} --event {tx-abort}

perf trace --pid {24265} --event {'tx-abort'}

perf trace --pid {'24265'} --event tx-abort

perf trace --pid {'24265'} --event {tx-abort}

perf trace --pid {'24265'} --event {'tx-abort'}

所有错误提示都是“解析要跟踪的目标时出现问题,请检查您的选项”。

有什么方法可以让性能跟踪按预期运行?

4

1 回答 1

0

问题不在于参数语法,您的第一行应该没问题。首先,检查是否tx-abort由 , 列出perf list,以查看您的系统是否普遍支持它。那么这个错误可能是因为指定的pid不存在而发生的。

TSX 事件是PMU 事件。与系统调用或跟踪点相反,不是在软件中检测单个事件,而是在性能监控单元中有一个硬件计数器,用于对这些事件进行计数并在一定数量的事件后触发中断。对于 PMU 事件,对每个事件进行抽样通常是不可行的。我怀疑这就是为什么它不适用于perf trace最初用于系统调用的 .

注意我可以重现它不起作用,但我得到一个“无效参数”。不支持 PMU 事件是perf trace我的一些猜测。

英特尔有一个关于使用 perf 分析 TSX的广泛文档,其中提供了有关如何使用 tx 事件的示例和解释perf record

于 2017-12-05T14:09:01.127 回答