同步等待跟踪数据

另请参见

为何收集同步等待跟踪数据?

如果某个用 C、C++ 或 Fortran 编写的多线程程序中出现性能问题,则可能是由于同步延迟导致的。收集同步数据有助于识别发生延迟的位置和延迟的时间。

如果您具有记录下来的计时数据并可以看到“用户锁定”度量或“其它等待时间”度量的有效值,这表示您的程序可能会有同步延迟。

收集器如何收集同步等待跟踪数据?

收集器通过在实时例程中插入包装器例程,跟踪线程同步例程调用中的实时延迟。如果延迟超过预先确定的阈值,事件将被记录。每个数据点包含延迟开始和结束的时间戳、处理器 ID、锁定地址、线程 ID 和在延迟结束时运行的 LWP。

在性能分析器中可以看到哪些同步度量?

同步等待跟踪数据将被转换为以下度量:

度量 定义
同步延迟事件计数 延迟超出阈值的事件数
同步等待时间 等待调用同步例程所花费的时间。只有等待时间大于阈值的事件才会被算入此合计中。

如何设置延迟阈值?

阈值可以设置为以毫秒为单位的时间值,或通过校准测试确定。在校准测试中,将调用没有任何同步延迟的同步例程。校准的阈值是这些调用的平均时间乘以任意因子。在收集同步数据时,这是缺省选项。

如果您要记录真正延迟的事件,请选择 [校准]。如果您要记录所有同步事件而不考虑延迟时间,请将阈值设置为零。

同步等待跟踪数据收集的限制是什么?

除非已经预装入收集器库 libcollector.so,否则您不能在已经运行的程序中收集同步等待跟踪数据。有关详细信息,参见在正运行的进程上收集性能数据

无法记录 JavaTM 监视器的跟踪数据。

有关详细信息,参见《程序性能分析工具》手册。

另请参见
收集性能数据

找到要找的内容了吗?如未找到,请将您的意见通过电子邮件发送至 docfeedback@sun.com。
法律声明