
# 如何查看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
   ```
   
   
 
