linux绑定进程到指定cpu

来源:互联网 发布:python快速排序 编辑:程序博客网 时间:2024/05/20 20:23

方法之一:

top -p `pidof 进程名称`

方法之二:
top -p `ps h -o pid -C 进程名称`

如果还要查看此进程下的各线程,可用如下:
top -H -p `pidof process`


----------------------------------------------我是分割线------------------------------------------

top实时显示进程在那个cpu上:

(1)top

(2)按 "1" 实时显示cpu信息

(3)按 "f" 进入显示配置文件设置

(4)选中 "P", 空格或者"d", q或者esc退出在最后显示cpu



----------------------------------------------我是分割线--------------------------------------------

绑定cpu方式:


C语言:

sched_setaffinity(0, sizeof(mask), &mask)

shell命令:

在grup启动时传给内核参数: isolcpus=2-15, 这里表示隔离第3到16个CPU, Linux程序只跑在第一和第二个CPU上, 空闲的CPU我们可以指定跑进程了.
这是内核文档里对内核参数的解释:

  1. isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler.
  2.                         Format:
  3.                         <cpu number>,...,<cpu number>
  4.                         or
  5.                         <cpu number>-<cpu number>
  6.                         (must be a positive range in ascending order)
  7.                         or a mixture
  8.                         <cpu number>,...,<cpu number>-<cpu number>

  9.                         This option can be used to specify one or more CPUs
  10.                         to isolate from the general SMP balancing and scheduling
  11.                         algorithms. You can move a process onto or off an
  12.                         "isolated" CPU via the CPU affinity syscalls or cpuset.
  13.                         <cpu number> begins at 0 and the maximum value is
  14.                         "number of CPUs in system - 1".

  15.                         This option is the preferred way to isolate CPUs. The
  16.                         alternative -- manually setting the CPU mask of all
  17.                         tasks in the system -- can cause problems and
  18.                         suboptimal load balancer performance.
linux nice 命令详解

  功能说明:设置优先权。

  语  法:nice [-n <优先等级>][--help][--version][执行指令]

  补充说明:nice指令可以改变程序执行的优先权等级。

  参  数:-n<优先等级>或-<优先等级>或--adjustment=<优先等级>  设置欲执行的指令的优先权等级。等级的范围从-20-19,其中-20最高,19最低,只有系统管理者可以设置负数的等级。
            --help  在线帮助。
            --version  显示版本信息。


linux renice 命令详解

  功能说明:调整优先权。

  语  法:renice [优先等级][-g <程序群组名称>...][-p <程序识别码>...][-u <用户名称>...]

  补充说明:renice指令可重新调整程序执行的优先权等级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。等级范围从-20--19,只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。
  参  数:
  -g <程序群组名称>  使用程序群组名称,修改所有隶属于该程序群组的程序的优先权。
  -p <程序识别码>  改变该程序的优先权等级,此参数为预设值。
  -u <用户名称>  指定用户名称,修改所有隶属于该用户的程序的优先权。


taskset设定cpu亲和力,cpu亲和力是指
CPU调度程序属性关联性是“锁定”一个进程,使他只能在一个或几个cpu线程上运行。  对于一个给定的系统上设置的cpu。给定CPU亲和力和进程不会运行在任何其他CPU。  注意,Linux调度器还支持自然CPU关联:(不能让这个cpu只为这一个进程服务)
这里要注意的是我们可以把某个程序限定在某一些CPU上运行,但这并不意味着该程序可以独占这些CPU,其实其他程序还是可以利用这些CPU运行。如果要精确控制CPU,taskset就略嫌不足,cpuset才是可以

-a, --all-tasks 操作所有的任务线程-p, --pid 操作已存在的pid-c, --cpu-list 通过列表显示方式设置CPU
(1)指定1和2号cpu运行25718线程的程序
taskset -cp 1,2 25718

(2),让某程序运行在指定的cpu上 taskset -c 1,2,4-7 tar jcf test.tar.gz test
(3)指定在1号CPU上后台执行指定的perl程序
taskset –c 1 nohup perl pi.pl &


---------------------------------------------我是分割线-------------------------------

将某程序绑定cpu:

c语言可以指定进程或者线程绑定

shell可以先进/var/run/**.pid取得进程pid,然后绑定进程到cpu

或者直接使用taskset –c 绑定指定程序名

0 0
原创粉丝点击