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

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

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

由于这样的smp特定的代码是否有任何性能影响?

目前的Linux内核包含一个补丁,你可以谷歌的术语“SMP替代品”。 简而言之,在引导过程中,如果内核检测到它在单处理器机器上运行,则自旋锁函数将被热修补为无操作。

是(可能不是)。

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

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