我想知道如何监控自旋锁。在我的客户中,我们遇到了 cpu 软锁定故障,如果我理解得很好的话,自旋锁可能是一个原因。
不同的团队使用该服务器使用 R、Python 和 SAS 进行预测建模,这意味着我们经常有许多并行运行的无监督进程,可能带有多处理库。
监控自旋锁的数量,或者更好的是,监控哪些进程使用了它们,可能有助于验证或取消它们作为我们频繁失败的原因(过去 3 周有 5 次失败)。
有什么办法可以监控他们吗?如果不是,我们怎么知道是什么导致了这些软锁定?
答案1
如果自旋锁位于用户空间,您可能无法监视它们。一些软件会跟踪自旋锁时间并提供提取它的方法。您可以使用可运行进程的计数通过代理进行监控。如果您有许多进程处于可运行状态,则该值应该会增加。
一个表现良好的程序会在短时间内放弃它的自旋锁。如果自旋锁不成功,它将抢占并等待锁。如果您的程序表现不佳,频繁自旋锁定时会增加 CPU 利用率。
在这种情况下,随着时间的推移记录系统状态会很有用。 sar
可以在后台运行定期记录数据。这对于像您这样的情况很有用,因为您可以检查导致失败的趋势。有些工具可以提供图形输出,但我发现查看原始数据更有用。
还有一些工具可以将持续使用情况直接记录到rrd
(循环数据库)文件中并绘制结果图表。这些对于趋势分析很有用。
如果这些是批处理或类批处理程序,您可能希望使用最多 CPU 的动态良好程序。有多种程序可用于监视资源利用率并调整优先级,以便资源占用不会影响其他用户的性能。