Linux下CPU内核隔离与分核

最近因为程序需要高效和实时性,所以我把程序迁移到了Linux下,并对程序进行分核处理。遇到了一些问题,记录下来。

首先需要在Linux下进行内核隔离。在终端中输入一下指令,可查看电脑CPU有几个核。以我的电脑为例有8个核(CPU从0开始计)。

ls /sys/devices/system/cpu/

在终端中输入以下指令

sudo vi /etc/default/grub

接下来需要将你想要隔离的核心写入到文件中,比如我想要隔离0-3,将isolcpus=0,1,2,3写入到文件中,然后保存。

文件修改完毕,输入以下指令更新grub

sudo update-grub

重启电脑检查是否生效

cat /proce/cmdline

如果你的程序指向分配一个核心的话,直接使用teskset命令即可(这里我使用的是核心0)。

sudo taskset -c 0 ./yourProgram

但是我的程序需要用到多个核心,这时候如果我直接使用下面的指令发现我的程序分配的还是只有一个核心。

sudo taskset -c 0,1,2,3 ./yourProgram

然后我去网上查找了一些资料,找到了解决办法。来源kernel - Taskset not working over a range of cores in isolcpus - Server Fault

sudo chrt -r 1 taskset -c 0,1,2,3 ./yourProgram

这里的解决方法也存在着一定的问题,因为使用chrt -r将0,1,2,3这几个核心的调度策略改为了轮转调度策略,这将增加这几个核心中内核的CPU使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yjf~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值