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核心上运行。
|