Oracle® Solaris Studio 12.4:性能分析器教程

退出打印视图

更新时间: 2014 年 12 月
 
 

关于同步跟踪

通过插入用于同步的各种库函数(例如 mutex_lock()pthread_mutex_lock()sem_wait() 等)来实现同步跟踪。将跟踪 pthread 和 Oracle Solaris 同步调用。

目标程序调用这些函数中的一个函数时,数据收集器将拦截该调用。将捕获当前时间、锁的地址以及一些其他数据,然后插入例程调用实际库例程。实际库例程返回时,数据收集器再次读取时间并计算结束时间与开始时间之间的差值。如果该差值超过用户指定的阈值,将记录该事件。如果时间未超过阈值,则不记录该事件。在以上任一情况下,实际库例程的返回值都将返回到调用方。

通过使用 collect 命令的 -s 选项,可以设置用于确定是否记录事件的阈值。如果使用性能分析器收集实验,可以在 "Profile Application"(分析应用程序)对话框中将阈值指定为 "Synchronization Wait Tracing"(同步等待跟踪)的 "Minimum Delay"(最小延迟)。可以将阈值设置为微秒数或设置为关键字 calibrateon。使用 calibrateon 时,数据收集器确定其获取无争用互斥锁所花费的时间并将阈值设置为该时间值的五倍。阈值指定为 0all 将导致记录所有事件。

在本教程中,将记录两个实验中的同步等待跟踪,一个实验具有校准的阈值,一个实验具有零阈值。这两个实验还包括时钟分析。