1. 程式人生 > >如何讓程序執行在指定的cpu上

如何讓程序執行在指定的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“親和力”

注:圖片來自網路