使用每個CPU資料的原因

2022-09-04 21:54:12 字數 727 閱讀 6680

使用每個cpu資料具有不少好處。首先是減少了資料鎖定。因為按照每個cpu訪問每個cpu資料的邏輯,你可以不需要任何鎖。記住「只有這個處理器可以訪問這個資料」的規則純粹是乙個程式設計約定。你需要確保本地處理器只會訪問它自己唯一的資料。系統本身並不存在任何措施禁止你從事欺騙活動。

第二個好處是使用每個cpu資料可以大大減少快取失效。失效發生在處理器試圖使它們的快取保持同步時。如果乙個處理器操作某個資料,而該資料又存放在其它處理器快取中,那麼存放該資料的那個處理器必須清理或者重新整理自己的快取。持續不斷的快取失效稱為快取抖動,這樣對系統效能影響頗大。使用每個cpu資料將使得快取影響降至最低,因為理想情況下只會訪問自己的資料。percpu介面快取-對齊(cache-align)所有資料,以便確保在訪問乙個處理器資料時,不會將另乙個處理器的資料帶入同乙個快取線上。

綜上所述,使用每個cpu資料會省去許多(或最小化)資料上鎖,它唯一的安全要求就是要禁止核心搶占。而這個代價相比上鎖要小的多,而且介面會自動幫你完成這個步驟。每個cpu資料在中斷上下文或程序上下文使用都很安全。但要注意,不能在訪問每個cpu資料過程中睡眠——否則,你就可能醒來後已經到了其它處理器上了。

目前並不要求必須使用每個cpu的新介面。只要你禁止了核心搶占,用手動方法(利用我們原來討論的陣列)就很好,但是新介面在將來更容易使用,而且功能也會得到長足優化。如果確實決定在你的核心中使用每個cpu資料,請考慮使用新介面。但我要提醒的是——新介面並不向後相容以前的核心。

找出程式cpu使用率高的原因

確定是cpu過高 使用top觀察是否存在cpu使用率過高現象 找出執行緒 對cpu使用率過高的程序的所有執行緒進行排序 ps h e o pid,tid,pcpu,cmd sort pcpu grep 得到如下結果,其中執行緒2909使用了7.8 的cpu.2907 2913 0.0 2907 29...

找出程式cpu使用率高的原因

確定是cpu過高 使用top觀察是否存在cpu使用率過高現象 找出執行緒 對cpu使用率過高的程序的所有執行緒進行排序 ps h e o pid,tid,pcpu,cmd sort pcpu grep 得到如下結果,其中執行緒2909使用了7.8 的cpu.2907 2913 0.0 2907 29...

造成高CPU消耗的原因

1.索引的缺失 根據執行計畫以及追蹤,確定缺少的索引,新增索引 2.統計資訊過時 統計資訊過時,執行計畫就會不是最優的,可能產生大量的表掃瞄,需要更新統計資訊 update statistics table or indexed view name 3.where子句中使用函式 where 子句中使...