云容器引擎 CCE-增强型CPU管理策略:验证
验证
以8U32G节点为例,并提前在集群中部署一个CPU request为1,limit为2的工作负载。
- 登录到节点池中的一个节点,查看/var/lib/kubelet/cpu_manager_state输出内容。
cat /var/lib/kubelet/cpu_manager_state
回显如下:
{"policyName":"enhanced-static","defaultCpuSet":"0,2-7","entries":{"6739f6f2-ebe5-48ae-945a-986d5d8919b9":{"container-1":"0-7,10001"}},"checksum":1638128523}
- policyName字段值为enhanced-static代表策略设置成功。
- 优先使用CPU号将10000作为基数,本例中10001即代表容器使用的亲和CPU号为1,0-7代表该Pod中容器可以使用的CPU集合。
- 查看容器的cpuset.preferred_cpus的cgroup设置,输出内容即为优先使用的CPU号。
cat /sys/fs/cgroup/cpuset/kubepods/burstable/pod{pod uid}/{容器id}/cpuset.preferred_cpus
- {pod uid}为Pod UID,可在已通过kubectl连接集群的机器上使用以下命令获取:
kubectl get po {pod name} -n {namespace} -ojsonpath='{.metadata.uid}{"\n"}'
命令中的{pod name}和{namespace}是Pod名称及其所在的命名空间。
- {容器id}需要是完整的容器ID,可在容器运行的节点上通过以下命令获取:
docker节点池:命令中的{pod name}是Pod名称。
docker ps --no-trunc | grep {pod name} | grep -v cce-pause | awk '{print $1}'
containerd节点池:命令中的{pod name}是Pod名称,{pod id}是Pod的ID,{container name}是容器名称。
# 获取Pod ID crictl pods | grep {pod name} | awk '{print $1}' # 获取完整容器ID crictl ps --no-trunc | grep {pod id} | grep {container name} | awk '{print $1}'
完整示例如下:
cat /sys/fs/cgroup/cpuset/kubepods/burstable/pod6739f6f2-ebe5-48ae-945a-986d5d8919b9/5ba5603434b95fd22d36fba6a5f1c44eba83c18c2e1de9b52ac9b52e93547a13/cpuset.preferred_cpus
回显如下,表示优先使用1号CPU。
1
- {pod uid}为Pod UID,可在已通过kubectl连接集群的机器上使用以下命令获取: