physical id是Linux系统中/proc/cpuinfo文件里的关键字段,用于唯一标识物理CPU封装(Socket),是区分系统中多个物理CPU的核心属性。
physical id的本质是物理CPU的“身份证号”:每个插在主板CPU插槽上的物理CPU都有一个独一无二的physical id值(通常从0开始递增)。即使某颗物理CPU内部有多个核心(Core)或线程(Thread),它们的physical id都相同。
/proc/cpuinfo中不同physical id的数量,可直接得出系统安装的物理CPU个数(命令:cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l)。cpu cores(单颗物理CPU的核心数)、siblings(单颗物理CPU的逻辑CPU数)等字段,可判断CPU是否支持超线程技术(Hyper-Threading)。例如,若siblings值是cpu cores的2倍,则说明开启了超线程。top命令结合-P参数查看逻辑CPU的归属),合理分配多线程任务,避免单个物理CPU过载。processor是逻辑CPU的编号(从0开始),同一物理CPU内的所有逻辑CPU(包括核心和线程)共享相同的physical id,但processor值不同。core id是单颗物理CPU内核心的编号(从0开始),相同physical id下,不同core id代表不同的物理核心;若core id重复且siblings大于cpu cores,则说明开启了超线程(即一个核心对应多个逻辑线程)。siblings表示单颗物理CPU上的逻辑CPU数量。若siblings等于cpu cores,则未开启超线程;若siblings大于cpu cores,则开启了超线程。假设某系统的/proc/cpuinfo中,physical id有0、1两个值,cpu cores为4,siblings为8:
cpu cores=4);siblings=8 > cpu cores=4,说明每颗物理CPU有8个逻辑CPU,即每个核心对应2个线程)。