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

Linux平台可将进程绑定到指定CPU上,实现负载均衡。

可通过系统命令taskset实现,也可通过编码调用系统接口函数实现(都可指定自己和其他进程)。

1. 系统命令实现(taskset)

1) 查看cpu核数

cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l

2) 查看进程绑定在哪个cpu

taskset -cp 进程PID

3) 绑定进程到cpu

taskset -cp cpu核序号 进程PID

51a6bfacf80a3d0cf2ecc13d1f32219f.png

4) 再次查看,进程已经绑定到2上:

635d587e93fa399ff2556ea8b508fa67.png

2. C++代码实现

1) 获得CPU核数

#include

//获得cpu总核数,索引从0开始

int getCpuCoreCount()

{

return sysconf(_SC_NPROCESSORS_CONF);

}

2) 进程绑定到CPU

#include

//把进程分配到某个cpu上(从0开始,小于cpu核数-1)

//大于等于0成功

int cpuSetByPID(int pid, unsigned int cpu)

{

cpu_set_t mask;

CPU_ZERO(&mask); //清空集合(掩码)

CPU_SET(cpu, &mask); //把cpu序号加入到集合

//把pid运行在mask所设定的CPU上

int ret = sched_setaffinity(pid, sizeof(mask), &mask);

printf(“sched_setaffinity(%d,%d)ret = %d\n”,pid<=0?getpid():pid, cpu, ret);

//成功返回值是0

return ret;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值