指定某个cpu只运行指定进程的做法

转载 2011年01月08日 00:13:00

 

 

进程与cpu 绑定需要做四件事:

 

 

一、把指定cpu 从平衡算法剔除。

二、把指定cpu 上所有的中断请求搬到其他cpu

三、把指定cpu 上的所有的进程搬到其他cpu

四、把指定进程到绑定到指定cpu

 

 

一、把指定cpucpu 平衡算法剔除,机器启动后,用户进程自动不会在指定cpu 上运行。 做法如下:

/boot/grub/grub.conf 文件里的root=LABEL=/  后面添加 isolcpus=cpu 号列表

cpu 号从0 开始,多个cpu 号之间用“,” 分隔,例:isolcpus=1

isolcpus=4,5,6


二、把指定cpu 上所有的中断请求搬到其他cpu ,做法如下:

修改/proc/irq/ 中断号/smp_affinity 文件的内容。

内容00000001 表示该中断请求在cpu0 上运行,

内容00000003 表示该中断请求在cpu0cpu1 上运行,

 

三、 把指定cpu 上的所有的进程(指定进程除外)搬到其他cpu ,做法如下:

taskset -pc cpu 列表 pid.

例:taskset -pc 1 pid.

taskset -pc 1,2 pid.

taskset -pc 1-4 pid.

在这个过程中,我们主要把系统进程搬到了其他cpu 上。

查看某个进程绑定在哪个cpu 上可以执行taskset -p pid.

输出的mask 值:1 表示运行在cpu0 上,3 表示运行在cpu0cpu1 上。

 

 

四、把我们的指定进程搬到指定cpu ,做法参考三。

 

 

注:

1 、子进程会继承父进程的cpu 信息,分配到cpu0cpu1 上运行的进程产生的子进程也会被分配到cpu0cpu1.

2taskset  可以用c 函数sched_setaffinity 和 sched_getaffinity 代替

3 、查看进程当前运行在哪个cpu 上,可以执行ps -eo pid,args,psr

4、taskset --help

 

[root@gc13 partitionTLB]# taskset --help
taskset (util-linux 2.13-pre7)
usage: taskset [options] [mask | cpu-list] [pid | cmd [args...] ]
set or get the affinity of a process

  -p, --pid                  operate on existing given pid
  -c, --cpu-list             display and specify cpus in list format
  -h, --help                 display this help
  -v, --version              output version information

The default behavior is to run a new command:
  taskset 03 sshd -b 1024
You can retrieve the mask of an existing task:
  taskset -p 700
Or set it:
  taskset -p 03 700
List format uses a comma-separated list instead of a mask:
  taskset -pc 0,3,7-11 700
Ranges in list format can take a stride argument:
  e.g. 0-31:2 is equivalent to mask 0x55555555

 

相关文章推荐

如何指定CPU只运行特定任务,linux中断interrupt

在某些情况下一台服务器可能配有多个处理器,需要保留一些处理器让其仅仅处理分配给他们的应用程序。系统内部的其它程序和中断就由剩下的处理器里处理。这可以用于某些具有高度时间敏感型的应用程序。    第...

linux CPU隔离和进程调度优先级设置

CPU隔离和进程调度优先级设置的相关知识: 1.  uboot 启动参数中增加 ”isolcpus=1“  , 计数从0开始      表示隔离第2个CPU, 系统启动后,程序不能在第2个CPU上...
  • wdsfup
  • wdsfup
  • 2015-12-30 11:52
  • 3430

isolcpus功能与使用

isolcpus功能与使用介绍 isolcpus功能存在已久,笔者追溯v2.6.11(2005年)那时内核就已经存在了isolcpus功能。根据kernel-parameters.txt 上的解释,”...

Linux的CPU资源调优

一)中断的CPU亲和性   我们可以调整中断到某个CPU上,这样可以让CPU更有效的利用起来.   首先关闭掉irqbalance服务,如下: /etc/init.d/irqbalance ...

linux下让进程运行在指定的cpu上

最近负责的svr压力比较大,业务逻辑有点复杂,能优化的地方已经全部优化了,目前每秒3k次,cpu负载还是比较高 top看一下,4核的cpu负载不是太均衡,打算考虑一下将业务进程指定到3个cpu上运行,...

为什么SpinLock的实现中应该加上PAUSE指令?

当spinlock执行lock()获得锁失败后会进行busy loop(参考这段代码),不断检测锁状态,尝试获得锁。这么做有一个缺陷:频繁的检测会让流水线上充满了读操作。另外一个线程往流水线上丢入一个...
  • maray
  • maray
  • 2013-04-03 17:49
  • 1963

操作系统研究该走向何方?

操作系统研究该走向何方? 拼性能?至少在单核或小数量多核(NR_CORE  拼稳定性?这个概念其实很虚,一方面稳定性依赖于上层应用特征,另一方面依赖于底层硬件质量。可以做的有二:其一是写好代码,可惜这...
  • maray
  • maray
  • 2010-01-05 17:44
  • 891

用户态多线程实现的基本原理

本文参考了用户态非抢占式线程库实现一文以及GNU Pth。前者是一种用户态线程库的简单实现,属于一个很好的demo,后者就是大家熟知的Pthread的用户态实现,比较完善。 Keywords: Use...
  • maray
  • maray
  • 2009-12-05 14:12
  • 6392

为什么使用spinlock的时候不能睡眠

跟踪一下spin_lock(&mr_lock)的实现#define spin_lock(lock) _spin_lock(lock)#define _spin_lock(lock) __LOCK(lo...
  • maray
  • maray
  • 2009-12-10 17:36
  • 3202

pthread_mutex_t 变量不建议做复制操作

参考:http://stackoverflow.com/questions/6310746/initializing-pthread-mutexes 下面的操作通常是不建议的: static pt...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)