Linux操作系统的CPU信息被保存在/proc/cpuinfo文件中,该文件描述中有以下 6 个条目可以详细的显示CPU的数目,每个CPU的核数以及每个CPU是否适用于多内核和超线程技术(HT)(超线程技术可以把一个物理线程模拟出两个逻辑线程来用,充分发挥CPU性能,意思是一个核心可以有多个线程)。
processor:逻辑处理器的唯一标识符,逻辑处理器可以这样理解,一般情况,一颗cpu可以有多核,利用Intel的HT技术可以在逻辑
上再分一倍数量的CPU的核出来。
physical id:物理CPU的唯一标识符,物理CPU就是硬件上真实存在的CPU。
core id:一个物理CPU上的每个内核的唯一标识符,不同物理CPU的core id可以相同,因为每个CPU上的core id都从0开始标识。 一个内核就是一个线程,有了HT技术后,一个内核可以有多个线程。
siblings:位于同一个物理封装(即物理CPU)中的逻辑处理器的数量。它们可能支持也可能不支持超线程(HT)技术。
cpu cores:位于同一个物理封装中的内核数量,即一块物理CPU上面能处理数据的芯片组的数量。
vendor id:如果处理器为英特尔处理器,则 该条目对应的字符串是 GenuineIntel。
一般来说,根据服务器的CPU是否支持超线程技术,可有以下公式:
物理CPU个数 × 每颗物理CPU核数(即cpu cores)= 逻辑CPU的个数 ————不支持HT
物理CPU个数 × 每颗物理CPU核数(即cpu cores)× 2 = 逻辑CPU的个数 ————支持HT
从公式中可以看出,若服务器CPU不支持HT,则会有cpu cores = siblings。
判断CPU是否64位,检查cpuinfo中的flags区段,看是否有lm标识(lm是long mode的缩写)。
一些查看命令:
查看物理CPU的个数 :# grep 'physical id' /proc/cpuinfo | sort -u | wc -l
查看cpu cores:# grep 'cpu cores' /proc/cpuinfo | sort -u
查看逻辑CPU的个数:# grep 'processor' /proc/cpuinfo | sort -u | wc -l
查看服务器所有CPU详细内容:# cat /proc/cpuinfo