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特定代码是否会对性能产生影响?
答
是的(可能没有)。
是: 答:旋转锁定/解锁将运行锁定和解锁的实际代码,因为编译时编译器不知道是否要在具有一个或多个CPU的计算机上运行它。尽管你有一个CPU,但如果你使用线程,你可能仍然想使用它。
可能编号: 我在猜你在问,因为你不需要使用线程来锁定你需要的部分,而你只有一个CPU。在这种情况下,旋转锁定永远不会旋转。所以性能开销可以忽略不计。
答
当前的Linux内核包含一个补丁,您可以在谷歌中使用术语“SMP替代品”。简而言之,在引导过程中,如果内核检测到它在单处理器机器上运行,则自旋锁功能会被热插拔,而不带操作。
这属于超级用户 – Amirshk 2009-10-29 17:49:24
我同意。这绝对听起来对我来说是超级用户。 – 2009-10-29 17:51:30
从编程的角度编辑这个问题! – 2009-10-29 18:01:13