评估旋转锁数据

旋转锁报表显示有关旋转锁的以下信息:

  • 获取采样率
  • 争用采样率
  • 旋转阈值
  • 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

spinlock