以一台 Linux 服务器为例。这台 Linux 包括两颗 Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz CPU, 单颗 CPU 包括 10 个 cpu core, 使用超线程包含 20 个逻辑 cpu core, 具体的官方介绍: E5-2630 V4。
下面让我们通过 Linux 的命令来查找对应的参数,看看是否符合官方的介绍,主要是查看 /proc/cpuinfo 的信息获得。
CPU型号
cat /proc/cpuinfo | grep 'model name' | sort | uniq
model name : Intel(R) Xeon(R) Gold 5218R CPU @ 2.10GHz
CPU颗数
实际 Server 中插槽上的 CPU 个数,物理 cpu 数量,可以数不重复的 physical id 个数。
cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
2
CPU物理核数
每个cpu对应的物理核心数
grep 'cpu cores' /proc/cpuinfo|uniq
cpu cores : 20
逻辑CPU数 siblings
grep siblings /proc/cpuinfo |uniq
siblings : 40
超线程
#1 查看lscpu
Thread(s) per core: 2
#2 查看/proc/cpuinfo 的物理核数和逻辑核数
如果“siblings”和“cpu cores”一致,则说明不支持超线程,或者超线程未打开。如果“siblings”是“cpu cores”的两倍,则说明支持超线程,并且超线程已打开。如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。
逻辑CPU核数
一般情况,我们认为一颗 cpu 可以有多核,加上 intel 的超线程技术 (HT), 可以在逻辑上把一个物理线程模拟出两个线程来使用,使得单个核心用起来像两个核一样,以充分发挥 CPU 的性能。
逻辑 CPU 数量 = 物理 cpu 数量 x cpu cores 这个规格值 x 2(如果支持并开启超线程)。
cat /proc/cpuinfo |grep "processor"|wc -l
80
逻辑cpu数=物理cpu数物理cpu核数(逻辑CPU数/CPU物理核数)=220(40/20)