Linux如何将进程绑定运行在指定CPU上

Linux如何将进程绑定运行在指定CPU上,第1张

绑定cpu方式:

c语言:

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

shell命令:

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

这是内核文档里对内核参数的解释:

isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler.

Format:

<cpu number>,...,<cpu number>

or

<cpu number>-<cpu number>

(must be a positive range in ascending order)

or a mixture

<cpu number>,...,<cpu number>-<cpu number>

This option can be used to specify one or more CPUs

to isolate from the general SMP balancing and scheduling

algorithms. You can move a process onto or off an

"isolated" CPU via the CPU affinity syscalls or cpuset.

<cpu number>begins at 0 and the maximum value is

"number of CPUs in system - 1".

This option is the preferred way to isolate CPUs. The

alternative -- manually setting the CPU mask of all

tasks in the system -- can cause problems and

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 &

使用top命令,具体用法是 top -H,加上这个选项,top的每一行就不是显示一个进程,而是一个线程。

使用ps命令,具体用法是 ps -xH,这样可以查看所有存在的线程,也可以使用grep作进一步的过滤。

使用ps命令,具体用法是 ps -mq PID,这样可以看到指定的进程产生的线程数目。

更进一步,其实一些系统监控工具,在本质上也是读取的系统产生的文件罢了。

Ubuntu系统是由Linux红帽系统更改而来,Linux系统是多用户多任务的 *** 作系统,当多人登陆时系统会自动分配占用的系统资源,Linux相关的知识点可以百度搜索《Linux就该这么想》了解哦


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/9007439.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存