spin_lock和spin_unlock是否会损害单CPU机器上SMP内核的性能?

问题描述:

在我的Ubuntu机器上,正在运行的默认内核映像是为smp(CONFIG_SMP=y)构建的。但这台机器只有1个CPU。spin_lock和spin_unlock是否会损害单CPU机器上SMP内核的性能?

在单处理器内核上,与smp内核不同,spin_lock/unlock为空函数。 那么spin_lock()spin_unlock()如何在此设置中运行?

由于这样的smp特定代码是否会对性能产生影响?

+1

这属于超级用户 – Amirshk 2009-10-29 17:49:24

+0

我同意。这绝对听起来对我来说是超级用户。 – 2009-10-29 17:51:30

+0

从编程的角度编辑这个问题! – 2009-10-29 18:01:13

是的(可能没有)。

是: 答:旋转锁定/解锁将运行锁定和解锁的实际代码,因为编译时编译器不知道是否要在具有一个或多个CPU的计算机上运行它。尽管你有一个CPU,但如果你使用线程,你可能仍然想使用它。

可能编号: 我在猜你在问,因为你不需要使用线程来锁定你需要的部分,而你只有一个CPU。在这种情况下,旋转锁定永远不会旋转。所以性能开销可以忽略不计。

当前的Linux内核包含一个补丁,您可以在谷歌中使用术语“SMP替代品”。简而言之,在引导过程中,如果内核检测到它在单处理器机器上运行,则自旋锁功能会被热插拔,而不带操作。