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

vin*_*rak 8 linux linux-kernel spinlock

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

在单处理器内核上,与smp内核不同,spin_lock/unlock是空函数.那么这个设置的表现spin_lock()spin_unlock()行为如何呢?

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

Roe*_*rel 0

是的(也可能不是)。

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

可能不会:我猜你问这个问题是因为你没有将线程用于需要锁定的部分,而且你只有一个 CPU。在这种情况下,自旋锁永远不会进入自旋状态。所以性能开销可以忽略不计。