ubuntu 20隔离cpu,让某些线程独享cpu

第一步:编辑grub配置文件

sudo gedit /etc/default/grub

在这里插入图片描述
修改第10和11行的GRUB_CMDLINE_LINUX[_DEFAULT]

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ioslcpus=0,1,2,3"
GRUB_CMDLINE_LINUX="ioslcpus=0,1,2,3"

如果GRUB_CMDLINE_LINUX内容本来不为空,则在原来的内容后面加上一个空格,再写"ioslcpus=0,1,2,3"。
这里的意思是隔离cpu0,1,2,3,也就是系统不会把线程调度到这4个cpu中。除非用户指定。
保存修改

第二步:更新grub

sudo update-grub

sudo grub-mkconfig -o /boot/grub/grub.cfg

这两个命令执行一个就行,当然都执行也不会有问题。

第三步:重启并验证是否成功

查看当前启动命令

cat /proc/cmdline

查看进程1的可运行CPU

taskset -cp 1

在这里插入图片描述

把线程搬运到指定cpu的方法(可以是被隔离的cpu)

c++代码

编译时,要加上编译参数 -lpthread


/*
把当前线程绑定到@cpu_num中。cpu_num从0开始引索
*/
void tie_self_thread_to_cpu(int cpu_num)
{
    cpu_set_t mask;
    CPU_ZERO(&mask);
    CPU_SET(cpu_num, &mask); //指定该线程使用的CPU
    if (pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) < 0) 
    {
        perror("pthread_setaffinity_np");
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值