zoukankan      html  css  js  c++  java
  • [转]物理CPU、CPU核数、逻辑CPU、超线程

    转自:http://wulc.me/2016/01/06/物理CPU、CPU核数、逻辑CPU、超线程/

    基本概念

    • 物理CPU:
      物理CPU就是插在主机上的真实的CPU硬件,在Linux下可以数不同的physical id 来确认主机的物理CPU个数。

    • 核心数:
      物理CPU下一层概念就是核心数,我们常常会听说多核处理器,其中的核指的就是核心数。在Linux下可以通过cores来确认主机的物理CPU的核心数。

    • 逻辑CPU:
      核心数下一层的概念是逻辑CPU,逻辑CPU跟超线程技术有联系,假如物理CPU不支持超线程的,那么逻辑CPU的数量等于核心数的数量;
      如果物理CPU支持超线程,那么逻辑CPU的数目是核心数数目的两倍。在Linux下可以通过 processors 的数目来确认逻辑CPU的数量。

    • 超线程:
      超线程是英特尔开发出来的一项技术,使得单个处理器可以象两个逻辑处理器那样运行,这样单个处理器以并行执行线程。
      这里的单个处理器也可以理解为CPU的一个核心;这样便可以理解为什么开启了超线程技术后,逻辑CPU的数目是核心数的两倍了。

    在Linxu下查看物理cpu、核心数、逻辑CPU和是否支持超线程

    关于CPU的一些信息可在 /proc/cpuinfo 这个文件中查看

    cat  /proc/cpuinfo
    

    可以看到里面的内容是以 processor (也就是逻辑CPU)为基本单元进行划分的,
    processor 下的 core id表示这个逻辑CPU属于哪个核心,
    而physical id则表示这个核心或者说逻辑CPU属于哪个物理CPU。

    了解这些信息,便可以方便地查看上面说到的那些参数。

    • 查看物理CPU数量
      物理CPU就是不同的phycical id的个数,可通过下面命令实现:
    cat /proc/cpuinfo | grep 'physical id' | uniq |wc -l
    

    uniq是为了去掉多个逻辑CPU属于同一个物理CPU的重复记录。

    • 查看核心数
      核心数就是不同core id的个数,可通过下面的命令实现
    cat /proc/cpuinfo | grep 'core id' | uniq |wc -l
    
    • 查看逻辑CPU数目
      逻辑CPU就是processor的数目
    cat /proc/cpuinfo | grep 'processor' | wc -l
    

    查看逻辑CPU时不需要去重

    • 查看是否支持超线程
      如果支持超线程就是说同一个core下会有两个processors,这样可以简单地观察/proc/cpuinfo中的内容,
      如果两个的processor下的core id相同,那么说明支持超线程。
      还有另外一种方法是查看siblings和cpu cores的数值是否一致,评判方法如下

    如果”siblings”和”cpu cores”一致,则说明不支持超线程,或者超线程未打开。
    如果”siblings”是”cpu cores”的两倍,则说明支持超线程,并且超线程已打开。

    另外,top命令中看到的CPU数目是逻辑CPU(输入top后再按1)。

  • 相关阅读:
    ZOJ 1002 Fire Net (火力网)
    UVa OJ 117 The Postal Worker Rings Once (让邮差只走一圈)
    UVa OJ 118 Mutant Flatworld Explorers (变体扁平世界探索器)
    UVa OJ 103 Stacking Boxes (嵌套盒子)
    UVa OJ 110 MetaLoopless Sorts (无循环元排序)
    第一次遇到使用NSNull的场景
    NSURL使用浅析
    从CNTV下载《小小智慧树》
    NSDictionary and NSMutableDictionary
    Category in static library
  • 原文地址:https://www.cnblogs.com/everfight/p/cpu_info.html
Copyright © 2011-2022 走看看