方法:
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專門負責處理網路收發包 打算嘗試一下,如果還是不行,再過段時間,訪問量再增加的話,就要...