评估旋转锁数据
旋转锁报表显示有关旋转锁的以下信息:
- 获取采样率
- 争用采样率
- 旋转阈值
- CPU 数
- CPU 速度,以兆赫为单位
- 跟踪长度,以纳秒为单位
- 跟踪长度,以周期为单位
旋转锁报表的各个部分
报表的下面几个部分显示了配置文件时间段内的旋转锁使用情况。
各个旋转锁
每个旋转锁都是单独显示的。 旋转锁的排序顺序是“最热”旋转锁排在最前面。 通常,通过查看前几个旋转锁就可以确定旋转锁瓶颈。
对于每个旋转锁,显示以下信息:
- 锁的类型
- 锁的内核地址
- 锁的符号(请注意,动态创建的旋转锁没有符号)
摘要报表部分
摘要报表包含以下信息:
- 获取锁所用的 CPU 时间的百分比
- 锁争用所用的 CPU 时间的百分比
- 锁获取率
- 冲突率
- 旋转率
- 争用率,已采样且已规范化
报表的最后两个部分是由于中断而跳过的事件和释放函数。
由于中断而跳过的事件
旋转锁保持期间可能会发生中断。 发生这种情况时,中断处理时间将包含在旋转锁保持时间中,旋转锁保持时间显得非常长。 Xperf 在计算旋转锁保持时间时,不包括在处理中断时保持的旋转锁事件。
Events skipped due to interrupts
一行显示了不包含在计算中的事件数。 此数字通常非常小。
释放函数
可以从不同的代码路径获取或释放旋转锁。 报表末尾显示了旋转锁的释放函数的列表。 该列表按旋转锁保持时间进行排序。 此外,还显示了有关特定释放函数的其他信息,例如获取或争用。
示例
下面的示例展示了如何获取旋转锁数据的摘要。
xperf -i example.etl -symbols -o example.txt -a spinlock -summary
下面的示例展示了如何限制返回到五个最活跃旋转锁的记录数。
xperf -i example.etl -symbols -o example.txt -a spinlock -summary -counts 5