Linux下进程与cpu绑定,缓解响应延迟问题

Linux下进程与cpu绑定,可以有效缓解延迟问题,如下图:(延迟较小的原因是对Linux进行了实时性修改,Preempt Rt补丁包组入,下图在同负载情况下测试,利用stress工具,CPU 99%负载,MEM 65%负载。)
修改前:5个实时进程正常启动,6个cpu共同运行,最大延迟125微秒。修改后:5个实时进程分别启动,并且每个实时进程绑定一个cpu运行,最大延迟49微秒。Linux下进程与CPU绑定方法:
1、在代码中设置:
参考:https://blog.youkuaiyun.com/listener51/article/details/82426128

#define _GNU_SOURCE
#include <sched.h>
#include <unistd.h>
#include <sys/syscall.h>

void setAffinity_CPU(pid_t tid, int coreindex) {
cpu_set_t cst;
CPU_ZERO(&cst);
CPU_SET(coreindex, &cst);
sched_setaffinity(tid, sizeof(cst), &cst);
}

void main(int argc, char **argv) {
int coreindex = 3;
pid_t tid = null;

coreindex = atoi(argv[0]);
tid = syscall(SYS_gettid);
setAffinity_CPU(tid, coreindex); 
}

2、命令设置:
参考:https://zhidao.baidu.com/question/2078642319114620948.html
#taskset
-p, 设定一个已存在的pid,而不是重新开启一个新任务
-c, 指定一个处理,可以指定多个,以逗号分隔,也可指定范围,如:2,4,5,6-8。
1,切换某个进程到指定的cpu上

taskset -cp 3 13290

2,让某程序运行在指定的cpu上

taskset -c 1,2,4-7 tar jcf test.tar.gz test

需要注意的是,taskset -cp 3 13290在设定一个已经存在的pid时,子进程并不会继承父进程的,
因此像tar zcf xxx.tar.gz xxx这样的命令,最好在启动时指定cpu,如果在已经启动的情况下,则需要指定tar调用的gzip进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值