CPU 绑核
约 297 字小于 1 分钟
CPU 绑核
背景:算法集群,跑的应用为CPU 密集型应用,k8s 原来的 CPU调度算法为 CFS(基于时间片的),会产生限流,从而影响性能,影响 响应时间,所有改为 CPU 绑核
内核启动 NUMA
修改 /etc/default/grub
中numa=off
改为numa=on
重新生成grub.cfg
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
重启检验
shutdown -r now
lscpu | grep NUMA
k8s 绑核配置步骤
前提条件
- k8s 1.18 版本以上
1) 修改 kubelet 配置文件(Node 节点)
vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
,修改前后对比
9a10,11
> ExecStartPre=/usr/bin/mkdir -p /sys/fs/cgroup/cpuset/system.slice/kubelet.service
> ExecStartPre=/usr/bin/mkdir -p /sys/fs/cgroup/hugetlb/system.slice/kubelet.service
11c13,14
< ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
---
> #ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
> ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --kube-reserved=cpu=2,memory=250Mi --cpu-manager-policy=static --feature-gates=CPUManager=true --topology-manager-policy=single-numa-node
2)删除旧的 CPU 管理器状态文件
rm -f /var/lib/kubelet/cpu_manager_state
3)重启 kubelet
systemctl daemon-reload
systemctl restart kubelet
验证 pod 是否绑核成功
1)将 工作负载 设置为 Guaranteed Pod, 即 设置limit 和 request ,并相等,CPU 为整数
2)验证
docker inspect xxx | grep Cpuset
参考链接: