如何知道Intel TSX目前被其他进程使用?



是否有一种方法可以知道事务是否正在从另一个进程/程序使用英特尔TSX处理?

比如说,如果我想从一个应用程序监视Intel TSX的行为。这可能吗?

TSX事务非常短,并且没有任何其他cpu可见的标志。它基本上都在CPU核心内部,其影响是如何/何时/以什么方式响应MESI请求以共享缓存线。时间效应可能与普通争用难以区分。

在较长的时间尺度上,另一个进程可以使用HW性能计数器(例如通过Linux的perf_event_open)来跟踪TSX活动,例如rtm_retired.startrtm_retired.commit来计算启动和提交的事务数量。(HLE也有类似的事件,但不幸的是,由于微码更新,HLE似乎已经消失,甚至不能选择启用。)

TSX的大多数性能事件都是关于中止和可能导致中止的事情,因为这是你在分析一个你已经知道使用TSX的应用程序时想要寻找的东西。

最新更新