开源无线网络-OSRAN

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1346|回复: 0
打印 上一主题 下一主题

设置进程CPU亲和性,隔离CPU资源

[复制链接]

38

主题

38

帖子

166

积分

注册会员

Rank: 2

积分
166
跳转到指定楼层
楼主
发表于 2023-6-22 21:54:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. CPU亲和性常用命令
Linux操作系统会将进程在不同的CPU上进行调度,从而充分利用CPU资源。程序进程绑定CPU亲缘性,将会使得进程只能在指定的cpu上进行调度或者运行。
查看当前可被调度的CPU核心(即查看进程号为1的进程可以被调度的核心):
taskset -cp 1
以上表示各进程可以在CPU 0-7上进行调度。(本机有8个CPU核)
启动应用时,指定CPU的亲和性:
taskset -c 0,1 vim # 此处以vim程序为例
以上操作指定了vim启动时可用的cpu为核0,1;
程序启动后,限制进程可调度的cpu核心,如下:
sudo taskset -cp 2,3 30865 # 2,3 为新指定的CPU核心,30865为进程id
以上操作虽然能够绑定进程与CPU核的亲和性,但进程对CPU核并不是独享,在程序使用时间片结束时,会让出资源。
2. 设置进程对CPU的独占
设置对CPU独占,可以在系统启动时,指定隔离的CPU。需要说明的是这种情况下,其实只是在用户空间对CPU进行了隔离,但在内核层面,CPU仍是共享的。
(1)修改grub的启动参数
在/etc/default/grub启动命令中增加isolcpus参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=0,1"
这里表示0和1两个CPU核心被隔离;也可以添加到 GRUB_CMDLINE_LINUX中。
(2)更新grub.cfg 文件
常用的方法为:sudo update-grub
如果提示update-grub找不到,可以使用以下命令安装:
sudo apt install --reinstall grub
也可以使用下面的方法:
sudo grub-mkconfig -o /etc/grub2-efi.cfg
不同版本的linux上述grub文件的位置可能不一样,例如ubuntu下可能在/boot/grub/grub.cfg,可以在系统里面检索一下该配置文件位置。为避免grub出问题,可以再替换之后备份一下原本的grub.cfg文件。
(3)指定进程在隔离CPU上运行
系统重启后,如果查看pid=1能够调度的CPU核,会发现只能在0和1之外的核上进行调度。
接下来可以将需要保障性能的进程指定到0和1核心上运行。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|OpenXG  

Copyright © 2001-2013 Comsenz Inc.Template by Comsenz Inc.All Rights Reserved.

Powered by Discuz!X3.2

快速回复 返回顶部 返回列表