Linux下判断cpu物理个数,几核,是超线程还是多核心

目前intel新的多核心cpu都会在后面显示具体的型号数字,例如:
model name : Intel(R) Xeon(R) CPU           X3230   @ 2.66GHz
    说明是 Xeon 3230的cpu,而不显示型号的具体数字的,大部分都是奔腾的CPU。很多主机商都骗人,用奔腾的cpu,却说是多核心的CPU。
    探针看到的数据:
类型:Intel(R) Xeon(TM) CPU 2.80GHz 缓存:1024 KB
类型:Intel(R) Xeon(TM) CPU 2.80GHz 缓存:1024 KB
类型:Intel(R) Xeon(TM) CPU 2.80GHz 缓存:1024 KB
类型:Intel(R) Xeon(TM) CPU 2.80GHz 缓存:1024 KB
    没有具体的型号,缓存1M,一般都是奔腾系列的cpu,或者是intel假双核的cpu,具体要根据上面说的去判断。新的多核心cpu都能看到具体的型号。另外多核心的xeon的CPU,一般主频都不高,达到2.8和3.0的只有很少的几个高端CPU型号,一般主机商不会用这么好的。

    一些操作系统的最新版本已经更新了 /proc/cpuinfo 文件,以支持多路平台。如果您的系统中的 /proc/cpuinfo 文件能够正确地反映出处理器信息,那么就不需要执行上述步骤。反之,可采用本文中的信息进行解释。

    /proc/cpuinfo 文件包含系统上每个处理器的数据段落。/proc/cpuinfo 描述中有 6 个条目适用于多内核和超线程(HT)技术检查:vendor id, processor, physical id, core id, siblings 和 cpu cores。

vendor id     如果处理器为英特尔处理器,则字符串是 GenuineIntel。
processor     包括这一逻辑处理器的唯一标识符。
physical id   包括每个物理封装的唯一标识符。
core id       保存每个内核的唯一标识符。
siblings      列出了位于相同物理封装中的逻辑处理器的数量。
cpu cores     包含位于相同物理封装中的内核数量。

1. 拥有相同 physical id 的所有逻辑处理器共享同一个物理插座,每个 physical id 代表一个唯一的物理封装。
2. Siblings 表示位于这一物理封装上的逻辑处理器的数量,它们可能支持也可能不支持超线程(HT)技术。
3. 每个 core id 均代表一个唯一的处理器内核,所有带有相同 core id 的逻辑处理器均位于同一个处理器内核上。简单的说:“siblings”指的是一个物理CPU有几个逻辑CPU,”cpu cores“指的是一个物理CPU有几个核。
4. 如果有一个以上逻辑处理器拥有相同的 core id 和 physical id,则说明系统支持超线程(HT)技术。
5. 如果有两个或两个以上的逻辑处理器拥有相同的 physical id,但是 core id 不同,则说明这是一个多内核处理器。cpu cores 条目也可以表示是否支持多内核。

    不应该按照flags里是否有 ht 标志来判断系统是否有超线程能力,而应该:
如果“siblings”和“cpu cores”一致,则说明不支持超线程,或者超线程未打开。
如果“siblings”是“cpu cores”的两倍,则说明支持超线程,并且超线程已打开。

    例如,如果系统包含两个物理封装,每个封装中又包含两个支持超线程(HT)技术的处理器内核,则 /proc/cpuinfo 文件将包含此数据。(注:数据并不在表格中。)

processor     0 4 2 6 1 5 3 7
physical id   0 0 0 0 1 1 1 1
core id       0 0 1 1 2 2 3 3
siblings      4 4 4 4 4 4 4 4
cpu cores     2 2 2 2 2 2 2 2

此例说明:

1)一个物理封装有四个内核,即有4个逻辑处理器。

2)一个内核上有2个不同的processer,即系统支持超线程技术(HT)。

3)cpu cores条目为2,而siblings的数目却是4,故支持超线程技术(4/2=2>1)。

4)值得注意的是physical id和core id的编号可能是也可能不是连续的。系统上有两个物理封装并不罕见,而且physical id可能等于0和3。

    可通过如下方法查询CPU情况

    1. 逻辑CPU个数:

# cat /proc/cpuinfo | grep “processor” | wc -l

    2. 物理CPU个数:
# cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l

    3. 每个物理CPU中Core的个数:
# cat /proc/cpuinfo | grep “cpu cores” | wc -l

    是否为超线程?
如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。

    4. 每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
# cat /proc/cpuinfo | grep “siblings”

你可能感兴趣的:(Linux下判断cpu物理个数,几核,是超线程还是多核心)