自定义旋转锁参数

默认情况下,系统针对每 1000 次非争用获取记录一个旋转锁事件,针对每个争用获取记录一个旋转锁事件。 旋转锁数据收集支持三个参数,用于自定义数据收集。 若要设置旋转锁收集参数,请使用以下命令。

xperf -setspinlocksample [spin_threshold] [acquire_sample_rate] [contention_sample_rate]

参数

spin_threshold
旋转锁检测提供跟踪争用严重的锁的功能。 这是通过设置高旋转阈值实现的。 如果锁旋转小于此阈值,则不记录旋转锁事件。 例如,如果此值为 1,则每次尝试获取锁时,将获取一个旋转锁事件。 如果此值为 10,则每 10 次尝试获取锁时,将记录一个旋转锁事件。 默认值为 1。

acquire_sample_rate
跟踪期间记录旋转锁事件的采样率。 例如,如果此值为 1000,则针对每 1000 次非冲突事件获取记录一个旋转锁事件。 默认值为 1000。

contention_sample_rate
发生冲突时记录旋转锁事件的速率。 例如,如果此值为 100,则针对每 100 次旋转锁冲突记录一个旋转锁事件。 默认值为 1。

注解

当系统重启时,旋转锁收集参数将恢复为默认值。 为确保有效的数据收集,请始终在启动事件数据收集之前查询或设置旋转锁参数。

示例

下面的示例演示如何查询当前值。

xperf -spinlock

以下示例将旋转阈值设置为 1,将获取采样率设置为 1000,将旋转锁争用采样率设置为 100。

xperf -setspinlocksample 1 1000 100

此查询针对上一个示例中设置的值返回以下结果。

Current Spinlock Spin Threshold = 1
Current Spinlock Acquire Sample Rate = 1000
Current Spinlock Contention Sample Rate = 100

spinlock