我想知道我怎么能监控旋转锁。在我的客户端,我们有cpu软锁故障,如果我理解的话,spinlock可能是原因之一。
不同的团队使用该服务器进行预测建模,使用R、Python和SAS,这意味着我们经常有许多未监管的进程并行运行,可能存在多处理漏洞。
监视自旋锁的数量,或者更好地监视使用它们的进程,可能有助于验证或使它们失效,从而导致频繁的故障(过去3周中有5次)。
有什么办法监视他们吗?如果没有,我们怎么知道是什么导致了这些软性锁?
发布于 2016-05-31 14:02:15
如果自旋锁位于用户空间,则很可能无法监视它们。一些软件将跟踪自旋锁定时间,并提供一种提取它的方法。您可以使用可运行进程的计数通过代理进行监视。如果有多个进程处于可运行状态,则会增加此值。
一个行为良好的程序会在短时间内放弃它的自锁。如果自旋锁没有成功,它将抢占和等待锁。如果您的程序行为不佳,则在频繁自旋锁定时,它将提高CPU利用率.
在这种情况下,记录系统状态随时间的推移是有用的。sar可以在后台定期运行记录数据。这在像您这样的情况下是有用的,因为您可以检查导致失败的趋势。有些工具将提供图形输出,但我发现查看原始数据更有用。
还有一些工具可以将正在进行的使用直接记录到rrd (循环数据库)文件中,并绘制结果。这些对趋势分析很有用。
如果这些是批处理或批处理类程序,您可能希望动态地使用最多CPU的程序。有各种程序可以监视资源利用率和调整优先级,这样资源占优势就不会影响其他用户的性能。
https://unix.stackexchange.com/questions/286616
复制相似问题