為什麼要大費周章的給我們的程式指定cpu呢?要想弄明白這個問題首先需要明白幾個概念。
cpu的親和性, 就是程序要在指定的 cpu 上盡量長時間地執行而不被遷移到其他處理器,也稱為cpu關聯性;再簡單的點的描述就是將制定的程序或執行緒繫結到相應的cpu上;在多核執行的機器上,每個cpu本身自己會有快取,快取著程序使用的資訊,而程序可能會被os排程到其他cpu上,如此,cpu cache命中率就低了,當繫結cpu後,程式就會一直在指定的cpu跑,不會由作業系統排程到其他cpu上,效能有一定的提高。
軟親和性(affinity):就是程序要在指定的 cpu 上盡量長時間地執行而不被遷移到其他處理器,linux 核心程序排程器天生就具有被稱為 軟 cpu 親和性(affinity) 的特性,這意味著程序通常不會在處理器之間頻繁遷移。這種狀態正是我們希望的,因為程序遷移的頻率小就意味著產生的負載小。
硬親和性(affinity):簡單來說就是利用linux核心提供給使用者的api,強行將程序或者執行緒繫結到某乙個指定的cpu核執行。這就是我們所要做的。
如果你比作業系統更了解自己的程式,為了避免排程器愚蠢的排程你的程式,或是為了在多執行緒程式中避免快取失效造成的開銷,你可能會希望這樣做。
未完待續:
Linux下設定程序使用指定核的CPU
一 原因 我們不能任由作業系統負載均衡,因為我們自己更了解自己的程式,所以,我們可以手動地為其分配cpu核,而不會過多地占用cpu0,或是讓我們關鍵程序和一堆別的程序擠在一起。二 檢視方法 1 檢視程序pid,如檢視dotnet程序的pid 2 檢視程序pid 30093執行所使用的cpu 4核的話...
redis程序繫結指定的CPU核
0 檢視某服務的pid ps aux grep redis1 顯示程序執行的cpu 命令 taskset p 21184顯示結果 pid 21184 s current affinity mask ffffff 注 21184是redis server執行的pid 顯示結果的ffffff實際上是二進...
linux繫結程序到指定cpu
方法之一 top p pidof 程序名稱 方法之二 top p ps h o pid c 程序名稱 如果還要檢視此程序下的各執行緒,可用如下 top h p pidof process 我是分割線 top實時顯示程序在那個cpu上 1 top 2 按 1 實時顯示cpu資訊 3 按 f 進入顯示配...