2018年10月12日 星期五

False Sharing

定義

False Sharing指的是在多核心的環境下,由於多個CPU使用到相同的記憶體區塊,造成CPU在執行運算時,為了安全取得共用記憶體時,需要額外進行同步的動作而造成的效能損秏。
上面說的記憶體區塊的意思是指:CPU在取得需要的記憶體時,會連同目標記憶體的鄰近記憶體都會一併取入。
在這種情況下,程式碼中雖然明確指定要特定的記憶體,但Windows核心會"好心"的一同載入,而造成其他CPU要取用的記憶體被拿走而需要等待。

解法

  1. 讓變數在記憶體中的位置不要那麼近,這樣在某個CPU取特定變數時,就不會將其他CPU要用的變數也一併讀入。

沒有留言:

張貼留言