开源无线网络-OpenXG

标题: 设置进程CPU亲和性,隔离CPU资源 [打印本页]

作者: Haiwen    时间: 2023-6-22 21:54
标题: 设置进程CPU亲和性,隔离CPU资源
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核心上运行。






欢迎光临 开源无线网络-OpenXG (http://bbs.openxg.org.cn/) Powered by Discuz! X3.2