Linux查看物理CPU个数核数逻辑CPU个数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux查看物理CPU个数核数逻辑CPU个数相关的知识,希望对你有一定的参考价值。

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l


# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq


# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l


查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c


查看内存信息
# cat /proc/meminfo

 

  最近在研究Linux系统负载的时候,接触到一些关于CPU信息查看的知识,和大家分享一下。通过对/proc/cpuinfo文件中的参数的分析,也学到了不少东西。

 

  在Linux操作系统中,CPU的信息在启动过程中被装载到虚拟目录/proc下的cpuinfo文件中,可通过cat /proc/cpuinfo查看一下:

 

 

 

 

 

 

上图是本人电脑的CPU信息,下面我们来分析其中几个比较重要的指标:

 

processor 逻辑处理器的id。
physical id 物理封装的处理器的id。
core id 每个核心的id。
cpu cores 位于相同物理封装的处理器中的内核数量。
siblings 位于相同物理封装的处理器中的逻辑处理器的数量。

 

返回去看上图,physical id都为0,说明只有一个物理处理器;

 

processor有两个不同的编号,并且同属于一个physical id,同时cpu cores值为2,这也就说明了CPU是双核心的,并且每个核心只有一个逻辑处理器。

 

为了加深大家对这几个参数的理解,再来看另外一张图片,这是一台工作站的服务器:

 

在这个服务器上,\'cpu cores\' 为4,physical id 有两个,core id有8个,siblings的值为8,总共有16个processor。

 

所以这个服务器主机的CPU为2个物理封装的处理器,每个处理器又有4个处理核心(cpu cores),每个cpu core有可划分为2个逻辑处理器(超线程技术),因此,每个物理处理器上有8个逻辑处理器,总共就有16个processor。这回明白了吧。大体的结构如下图:

 

原文链接:https://blog.csdn.net/sycflash/article/details/6643492

Linux下区分物理CPU、逻辑CPU、CPU核数、线程数以及查看命令

概念

① 物理CPU
实际服务器中插槽上的CPU个数
是指物理上,也就是硬件上存在着几颗物理cpu,指的是真实存在是cpu处理器的个数,1个代表一颗,2个代表2颗cpu处理器。
物理cpu数量,可以数不重复的 physical id 有几个
② 逻辑CPU
Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. 它是用来存储cpu硬件信息的
信息内容分别列出了processor 0 – n 的规格。这里需要注意,如果你认为n就是真实的cpu数的话, 就大错特错了
一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来,这时逻辑CPU数就是核心数的两倍了
逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht)
备注一下:Linux下top按1后 查看的CPU也是逻辑CPU个数
③ CPU核数
一块CPU上面能处理数据的芯片组的数量、比如现在的i5 760,是双核心四线程的CPU、而 i5 2250 是四核心四线程的CPU
核心数:一个核心就是一个物理线程,英特尔有个超线程技术可以把一个物理线程模拟出两个线程来用,充分发挥CPU性能,意思是一个核心可以有多个线程。
线程数:线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。比如,可以通过一个CPU核心数模拟出2线程的CPU,也就是说,这个单核心的CPU被模拟成了一个类似双核心CPU的功能。
一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术


查看CPU信息

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

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

 

举例说明

① 查看物理CPU的个数

[root@test01 ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
2

② 查看逻辑CPU的个数

[root@test01 ~]# cat /proc/cpuinfo |grep "processor"|wc -l
24

③ 查看CPU是几核

[root@test01 ~]# cat /proc/cpuinfo |grep "cores"|uniq
cpu cores : 6

④查看CPU型号

[root@test01 ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
24 Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz

这里应该是2个物理CPU,每个CPU有6个核,是Intel的CPU,而且支持超线程,所以显示24,24为逻辑CPU个数
另外,top下按1也可以看逻辑CPU的个数,从0开始排序,如图显示的是24个

原文链接:https://blog.csdn.net/lcm_linux/article/details/104009080

Linux下关于物理CPU、逻辑CPU和CPU核数、超线程

1、概念

(1) 【物理CPU数】 :实际Server中插槽上的CPU个数,物理cpu数量可以数不重复的 physical id 有几个 (physical id)

(2) 【CPU核数】:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu cores)

(3)【逻辑CPU数】:一般情况下,逻辑cpu=物理CPU个数×每颗核数,如果不相等的话,则表示服务器的CPU支持超线程技术(HT:简单来说,它可使处理器中的1 颗内核如2 颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能,此时逻辑cpu=物理CPU个数×每颗核数x2)

(4)【超线程】:超线程(Hyper-Threading,简称“HT”)”技术。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。

超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。


2、计算公式

总核数 = 物理CPU个数 X 每颗物理CPU的核数

总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
3、使用命令如何查看

(1)查看物理CPU的个数

cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

(2)查看CPU是几核(核数)

cat /proc/cpuinfo |grep "cores"|uniq

(3)查看逻辑CPU的个数

cat /proc/cpuinfo |grep "processor"|wc -l

(4)查看是否具有超线程

#列出了位于相同物理封装中的逻辑处理器的数量
cat /proc/cpuinfo |grep "siblings" |uniq

#看下siblings 数目与cpu cores数目之间的关系
cat /proc/cpuinfo |grep "siblings" |uniq && cat /proc/cpuinfo |grep "cpu cores" |uniq


#如果“siblings”和“cpu cores”一致,则说明不支持超线程,或者超线程未打开。
#如果“siblings”是“cpu cores”的两倍,则说明支持超线程,并且超线程已打开。
#如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。

[root@localhost ~]# grep \'core id\' /proc/cpuinfo
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5

示例:

(5)查看CPU基本信息的命令

#查看 CPU 型号
dmidecode -s processor-version

#查看 CPU 的详细信息:
cat /proc/cpuinfo

4、查看CPU信息

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条目也可以表示是否支持多内核。

5、脚本自动检测CPU信息

#!/bin/bash
physicalNumber=0
coreNumber=0
logicalNumber=0
HTNumber=0
logicalNumber=$(grep "processor" /proc/cpuinfo|sort -u|wc -l)
physicalNumber=$(grep "physical id" /proc/cpuinfo|sort -u|wc -l)
coreNumber=$(grep "cpu cores" /proc/cpuinfo|uniq|awk -F\':\' \'{print $2}\'|xargs)
HTNumber=$((logicalNumber / (physicalNumber * coreNumber)))
echo "****** CPU Information ******"
echo "Logical CPU Number : ${logicalNumber}"
echo "Physical CPU Number : ${physicalNumber}"
echo "CPU Core Number : ${coreNumber}"
echo "HT Number : ${HTNumber}"
echo "*****************************"
原文链接:https://blog.csdn.net/u011391839/article/details/107512687

 

以上是关于Linux查看物理CPU个数核数逻辑CPU个数的主要内容,如果未能解决你的问题,请参考以下文章

Linux查看物理CPU个数核数逻辑CPU个数

Linux查看物理CPU个数核数逻辑CPU个数

Linux查看物理CPU个数核数逻辑CPU个数

Linux查看物理CPU个数核数逻辑CPU个数

Linux查看物理CPU个数核数逻辑CPU个数

Linux查看物理CPU个数核数逻辑CPU个数