如何讓程序執行在指定的cpu上
1、在linux下修改程序的“cpu親和力”
taskset是LINUX提供的一個命令(ubuntu系統可能需要自行安裝,schedutils package)。他可以讓某個程式執行在某個(或)某些CPU上。
以下均以redis-server舉例。
1)顯示程序執行的CPU
命令taskset -p 21184
顯示結果:
pid 21184's current affinity mask: ffffff
注:21184是redis-server執行的pid
顯示結果的ffffff實際上是二進位制24個低位均為1的bitmask,每一個1對應於1個CPU,表示該程序在24個CPU上執行
2)指定程序執行在某個特定的CPU上
命令taskset -pc 3 21184
顯示結果:
pid 21184's current affinity list: 0-23
pid 21184's new affinity list: 3
注:3表示CPU將只會執行在第4個CPU上(從0開始計數)。http://write.blog.csdn.net/postedit?ticket=ST-133194-dCdOr36vRfv7GrhbyGZf-passport.csdn.net
3)程序啟動時指定CPU
命令taskset -c 1 ./redis-server ../redis.conf
結合這上邊三個例子,再看下taskset的manual,就比較清楚了。
OPTIONS
-p, --pid
operate on an existing PID and not launch a new task
-c, --cpu-list
specify a numerical list of processors instead of a bitmask. The list may contain multiple items, separated by comma, and ranges. For example, 0,5,7,9-11.
2、配置nginx繫結cpu
在conf/nginx.conf中
worker-processes 1;
指一個cpu,如有4個u的話,為worker-processes 3;worker-cpu-affinity 0010 0100 1000,分別程式碼u 2、3、4的核心
重啟nginx後,3個程序各自用各自的程序。注:此nginx.conf配置引數網上資料
3、刨根問底
4、windows下修改cpu“親和力”
注:圖片來自網路