C 將程序執行在指定的CPU上

2021-07-15 03:49:07 字數 490 閱讀 7226

方法:

setprocessaffinitymask(handle,dword);

其中,第乙個引數為程序控制代碼。

如果要知道當前執行緒的控制代碼,可以通過函式:getcurrentthread()得到。否則,在建立多執行緒的時候,也同樣可以得到建立的執行緒的控制代碼。

第二個引數為mask,可取值為0~2^31(32位)和0~2^63(64位),每一位代表每乙個cpu是否使用。

比如,你要指定程序到第0個cpu上,則mask=0×01

第1個cpu:mask=0×02

第2個cpu:mask=0×04 (注意不是0×03)

第3個cpu:mask=0×08

以此類推。

如果要指定多個cpu:

比如第0、1個:mask=0×03

第1、2個:mask=0×06

以此類推。

如果cpu個數不足,則會進行取模操作。比如一共4個cpu,則mask=0×0010則和0×01一樣。

讓程序執行在指定的CPU

我的linode十分繁忙,在跑一些密集運算元據庫的rake任務時尤其如此。但我觀察發現,linode伺服器的4核cpu,只有第1個核心 cpu 0 非常忙,其他都處於idle狀態。不了解linux是如何排程的,但在linode的這種狀態下,顯然有優化的餘地。除了處理正常任務,cpu 0還需要處理各種...

linux下讓程序執行在指定的cpu上

最近負責的svr壓力比較大,業務邏輯有點複雜,能優化的地方已經全部優化了,目前每秒3k次,cpu負載還是比較高 top看一下,4核的cpu負載不是太均衡,打算考慮一下將業務程序指定到3個cpu上執行,另外乙個cpu專門負責處理網路收發包 打算嘗試一下,如果還是不行,再過段時間,訪問量再增加的話,就要...

linux下讓程序執行在指定的cpu上

最近負責的svr壓力比較大,業務邏輯有點複雜,能優化的地方已經全部優化了,目前每秒3k次,cpu負載還是比較高 top看一下,4核的cpu負載不是太均衡,打算考慮一下將業務程序指定到3個cpu上執行,另外乙個cpu專門負責處理網路收發包 打算嘗試一下,如果還是不行,再過段時間,訪問量再增加的話,就要...