在我的Ubuntu機器上,正在運行的默認內核映像是爲smp(CONFIG_SMP=y
)構建的。但這臺機器只有1個CPU。spin_lock和spin_unlock是否會損害單CPU機器上SMP內核的性能?
在單處理器內核上,與smp內核不同,spin_lock/unlock
爲空函數。 那麼spin_lock()
和spin_unlock()
如何在此設置中運行?
由於這樣的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