一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术 ,所以您的电脑是双核的。
一 概念
① 物理CPU
实际Server中插槽上的CPU个数
物理cpu数量,可以数不重复的 physical id 有几个
② 逻辑CPU
Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. 它是用来存储cpu硬件信息的
信息内容分别列出了processor 0 – n 的规格。这里需要注意,如果你认为n就是真实的cpu数的话, 就大错特错了
一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来
逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht)
备注一下:Linux下top查看的CPU也是逻辑CPU个数
③ CPU核数
一块CPU上面能处理数据的芯片组的数量、比如现在的i5 760,是双核心四线程的CPU、而 i5 2250 是四核心四线程的CPU
物理CPU、物理核和逻辑核的区分
之前看到一篇关于cpu load Average:CPU平均负载值的文章,想起之前的在物理核,逻辑核上面的问题,这里留下点Memory。
CPU Load Average是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。其实我们一般使用的vmstat中有瞬时的cpu队列数参考。
回到重点物理CPU、物理核和逻辑核
物理CPU(即板子上插了多少个宏观的CPU芯片)、物理核(CPU中包含的物理内核个数)以及逻辑核(用SMT技术将物理核虚拟而成的逻辑处理单元)的判断依据:
在/proc/cpuinfo文件的条目中:
1.有多少个不同的physical id就有多少个物理CPU。
2.cpu cores记录了对应的物理CPU(以该条目中的physical id标识)有多少个物理核。
3.siblings记录了对应的物理CPU(以该条目中的physical id标识)有多少个逻辑核。
通过执行以下命令,可以得到物理CPU数目及各自包含多少个物理核:
cat /proc/cpuinfo | grep -E "physical id|cpu cores" | sed 'N;s/\n/ /' | sort | uniq
假设输出如下,则表示有两个物理CPU,各自包含4个物理核:
physical id : 0 cpu cores : 4
physical id : 1 cpu cores : 4
通过执行以下命令,可以得到物理CPU数目及各自包含多少个逻辑核
cat /proc/cpuinfo | grep "physical id" | sort | uniq -c
假设输出如下,则表示有两个物理CPU,各自包含8个逻辑核
8 physical id : 0
8 physical id : 1