我尝试使用'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} - 事件tx-abort
perf trace --pid {24265} --event {tx-abort}
perf trace --pid {24265} --event {'tx-abort'}
perf trace --pid {'24265'} - 事件tx-abort
perf trace --pid {'24265'} - event {tx-abort}
perf trace --pid {'24265'} - event {'tx-abort'}
所有错误后果都是“解析要追踪的目标的问题,检查您的选项”。 有没有办法让perf跟踪按预期运行?
答案 0 :(得分:0)
问题不是参数语法,你的第一行应该没问题。首先,检查tx-abort
是否列出perf list
,以查看系统是否通常支持perf trace
。然后可能会发生错误,因为指定的pid不存在。
TSX事件是 PMU事件。与系统调用或跟踪点相反,不是单个事件在软件中进行检测,但在性能监视单元中有一个硬件计数器,它计算这些事件并在一定量的事件后触发中断。对每个事件采取样本通常不适用于PMU事件。我怀疑这就是为什么它不适用于最初用于系统调用的perf trace
,即使文档对于支持哪种类型的事件有点模糊。
注意我可以重现它不起作用,但我得到一个“无效的参数”。 perf record
不支持PMU事件,这是我的一点推测。
英特尔在analyzing TSX with perf上提供了大量文档,其中提供了有关如何将{tx事件与USER_CONTACTS(user_id, contact_id)
一起使用的示例和说明。