zoukankan      html  css  js  c++  java
  • 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

      通过对/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

  • 相关阅读:
    Hadoop学习笔记—12.MapReduce中的常见算法
    Hadoop学习笔记—11.MapReduce中的排序和分组
    Hadoop学习笔记—10.Shuffle过程那点事儿
    Hadoop学习笔记—9.Partitioner与自定义Partitioner
    Hadoop学习笔记—8.Combiner与自定义Combiner
    Hadoop学习笔记—7.计数器与自定义计数器
    Hadoop学习笔记—6.Hadoop Eclipse插件的使用
    Hadoop学习笔记—5.自定义类型处理手机上网日志
    Hadoop学习笔记—4.初识MapReduce
    Hadoop学习笔记—3.Hadoop RPC机制的使用
  • 原文地址:https://www.cnblogs.com/OrcinusOrca/p/14800275.html
Copyright © 2011-2022 走看看