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

时间:2009-10-29 17:45:38

标签: linux linux-kernel spinlock

在我的Ubuntu机器上,正在运行的默认内核映像是为smp(CONFIG_SMP=y)构建的。但是这台机器只有1个CPU。

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

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

2 个答案:

答案 0 :(得分:3)

当前的Linux内核包含一个补丁,您可以使用术语“SMP替代”进行谷歌搜索。简而言之,在引导期间,如果内核检测到它正在单处理器计算机上运行,​​则自旋锁功能将使用no-ops进行热修补。

答案 1 :(得分:0)

是(可能没有)。

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

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

相关问题