文档首页/ 云容器引擎 CCE/ 常见问题/ 工作负载/ 调度策略/ 如何查看Pod是否使用CPU绑核?
更新时间:2024-07-02 GMT+08:00

如何查看Pod是否使用CPU绑核?

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

  1. 登录到节点池中的一个节点,查看/var/lib/kubelet/cpu_manager_state输出内容。

    cat /var/lib/kubelet/cpu_manager_state

    回显如下:

    {"policyName":"static","defaultCpuSet":"0,2-3","entries":{"c1fcd22d-8a83-4aef-a27a-4c037e482b16":{"container-1":"1"}},"checksum":1500530529}

    policyName字段值为static代表策略设置成功。

  2. 查看容器的cpuset.preferred_cpus的cgroup设置,输出内容即为优先使用的CPU号。

    cat /sys/fs/cgroup/cpuset/kubepods/pod{pod uid}/{容器id}/cpuset.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/podc1fcd22d-8a83-4aef-a27a-4c037e482b16/5cb15f55f429e4496172bef05994477caa96e0ca468563208695c1ad5cc141e0/cpuset.cpus

    回显如下,表示绑定1号CPU。

    1