主机系统进程驱逐 和 容器绑核 操作步骤
-
避免os进程影响,使系统进程调度在 0,1 CPU
-
验证CPU独占性能,将工具亲和到空闲的 CPU上
具体步骤
1. 使用isolatecpu, 隔离 OS进程
首先,看不做隔离的 OS进程下,系统CPU情况
$ top
top - 16:51:37 up 1:17, 4 users, load average: 6.32, 6.15, 5.93
Tasks: 209 total, 3 running, 152 sleeping, 0 stopped, 0 zombie
%Cpu0 : 7.1 us, 8.0 sy, 0.3 ni, 92.9 id, 0.4 wa, 1.0 hi, 0.3 si, 0.0 st
%Cpu1 : 3.4 us, 9.7 sy, 0.7 ni, 90.8 id, 0.8 wa, 0.7 hi, 0.7 si, 0.0 st
%Cpu2 : 6.1 us, 7.8 sy, 0.5 ni, 94.2 id, 0.5 wa, 0.1 hi, 0.3 si, 0.0 st
%Cpu3 : 4.4 us, 6.9 sy, 0.6 ni, 96.0 id, 0.2 wa, 0.4 hi, 0.4 si, 0.0 st
系统调用到每个核上,系统侵占5%最有
隔离系统进展步骤:
$ vi /etc/default/grub
#添加isolcpus=2,3此配置
GRUB_CMDLINE_LINUX="isolcpus=2,3 crashkernel=auto rhgb quiet"
#加载配置
$ grub2-mkconfig -o /boot/grub2/grub.cfg
#重启Node节点 reboot
$ reboot
查看系统进程驱逐情况:
$ top
top - 16:57:37 up 1:23, 4 users, load average: 67.96, 45.76, 23.38
Tasks: 212 total, 2 running, 157 sleeping, 0 stopped, 0 zombie
%Cpu0 : 7.7 us, 82.6 sy, 0.0 ni, 8.7 id, 0.3 wa, 0.7 hi, 0.0 si, 0.0 st
%Cpu1 : 11.6 us, 82.5 sy, 0.0 ni, 5.0 id, 0.0 wa, 0.7 hi, 0.3 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
确认: 2,3核 已空闲
更改容器启动步骤
方式一: 根据现有容器通过taskset
进行绑核 (性能压测使用)
crictl ps
查询 containerid
; 在通过containerid
获得 pid
; 在通过taskset
进行进程绑核
$ crictl ps
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID
0820e507c2478 9aec5c5fe4ba9 56 minutes ago Running dlam-1 0 d54a862d48bf7
# 通过 0820e507c2478 查询到 pid是 67614
$ ps aux | grep "0820e507c2478"
root 67614 0.0 0.0 112848 8684 ? Sl 16:04 0:00 /usr/bin/containerd-shim-runc-v1 -namespace k8s.io -id 0820e507c247875ccd684d75e07670a40257b3bfae44ce272d8d1cb4d7cfd137 -address /run/containerd/containerd.sock
root 186345 0.0 0.0 112740 2420 pts/4 S+ 17:02 0:00 grep --color=auto 0820e507c2478
# 通过 pid 67614 查询当前绑核情况
$ taskset -c -p 67614
pid 67614's current affinity list: 0,1
# 将 pid 67614 绑定 到 2,3 核上
$ taskset -pc 2,3 67614
pid 67614's current affinity list: 0,1
pid 67614's new affinity list: 2,3
方式二: 更改kubelet config yaml (商业化正式上线)
$ vi /var/lib/kubelet/config.yaml
# 添加以下命令
cpuManagerPolicy: static
reservedSystemCPUs: 0-1 #预留出0,1给 linux os
$ systemctl status kubelet
$ systemctl stop kubelet
$ rm -rf /var/lib/kubelet/cpu_manager_state
$ systemctl start kubelet
注意: 方案1⃣️: 可以只保留被测试Pod; 方案2⃣️:node节点上的其他pod 都会 绑定到2,3核;
「如果这篇文章对你有用,请随意打赏」
如果这篇文章对你有用,请随意打赏
使用微信扫描二维码完成支付