云容器引擎 CCE-增强型CPU管理策略:验证

时间:2024-05-31 08:37:38

验证

以8U32G节点为例,并提前在集群中部署一个CPU request为1,limit为2的工作负载。

  1. 登录到节点池中的一个节点,查看/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集合。

  2. 查看容器的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

support.huaweicloud.com/usermanual-cce/cce_10_0552.html