Haiwen 发表于 2023-6-22 21:54:51

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

1. CPU亲和性常用命令Linux操作系统会将进程在不同的CPU上进行调度,从而充分利用CPU资源。程序进程绑定CPU亲缘性,将会使得进程只能在指定的cpu上进行调度或者运行。查看当前可被调度的CPU核心(即查看进程号为1的进程可以被调度的核心):taskset -cp 1
https://pic1.zhimg.com/80/v2-1c4499934c472a23bdcdbaa5b3b63464_720w.webp以上表示各进程可以在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
https://pic1.zhimg.com/80/v2-b032e1f258b186334ea085f10f396c84_720w.webp以上操作虽然能够绑定进程与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核心上运行。
页: [1]
查看完整版本: 设置进程CPU亲和性,隔离CPU资源