CPU核数

计算机系统架构

SMP, NUMA, MPP是目前主流得计算机系统架构

  • SMP

    对称多处理架构。在这样得系统中,多个CPU对称工作,无主从关系。所有的CPU共享全部资源,如总线,内存和I/O系统等,多个CPU之间没有区别,平等地访问内存、外设。每个CPU访问内存任何地址所需时间是相同地,因此SMP也被称为一致性存储器访问架构(UMA: Uniform Memory Access)。操作系统管理着一个队列,每个处理器依次处理队列中的进程。如果两个处理器同时请求访问一个资源,由硬件、软件的锁机制去解决资源争用的问题

    SMP 服务器的主要特征是共享,系统中所有资源 (CPU 、内存、 I/O 等 ) 都是共享的。也正是由于这种特征,导致了 SMP 服务器的主要问题,那就是它的扩展能力非常有限。对于 SMP 服务器而言,每一个共享的环节都可能造成 SMP 服务器扩展时的瓶颈,而最受限制的则是内存。由于每个 CPU 必须通过相同的内存总线访问相同的内存资源,因此随着 CPU 数量的增加,内存访问冲突将迅速增加,最终会造成 CPU 资源的浪费,使 CPU 性能的有效性大大降低。实验证明, SMP 服务器 CPU 利用率最好的情况是 2 至 4 个 CPU 。

  • NUMA

    Non-Uniform Memory Access。非一致性存储访问结构.NUMA服务器的基本特征是具有多个CPU模块,每个CPU模块由多个CPU组成,并且具有独立的本地内存、I/O槽口等。其节点之间通过互联模块(crossbar switch)进行连接和信息交互,因此每个CPU可以访问整个系统的内存(这是NUMA系统和MPP系统的重要差别)。显然,访问本地内存的速度将远远高于访问remote memory的速度.为了更好的发挥系统性能,开发应用程序时需要尽量减少不同CPU模块之间的信息交互

    NUMA 技术同样有一定缺陷,由于访问远地内存的延时远远超过本地内存,因此当 CPU 数量增加时,系统性能无法线性增加。

  • MPP

    海量并行处理架构(Massive Parallel Processing).MPP提供了另外一种进行系统扩展的方式,它由多个SMP服务器通过一定的节点互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统。MPP的节点互联机制是在不同的SMP服务器外部通过I/O实现的,每个节点只访问本地内存和存储,节点之间的信息交互与节点本身的处理是并行进行的。其基本特征是由多个SMP服务器通过节点互联网络连接而成,每个节点只访问自己的本地资源(内存、存储等),是一种完全无共享结构,因扩展能力最好,理论上扩展无限制

查看CPU参数

超线程: Hyper-threading就是在一个CPU Core上集成了两个逻辑处理器单元,即Logical Processor

NUMA node包括一个或多个Socket,以及与之相连的local memory

一个多核的socket有多个Core

如果CPU支持HT, OS还会把这个Core看成2个Logical Processor

  • lscpu

    lscpu
    
    Architecture:          x86_64           #处理器架构
    CPU op-mode(s):        32-bit, 64-bit   #CPU工作模式
    Byte Order:            Little Endian
    CPU(s):                1                #逻辑CPU核数      
    On-line CPU(s) list:   0                
    Thread(s) per core:    1                #每个逻辑核上的超线程数
    Core(s) per socket:    1                #一个物理核上的逻辑核数
    Socket(s):             1                #物理CPU个数
    NUMA node(s):          1                #NUMA节点个数
    Vendor ID:             GenuineIntel
    CPU family:            6
    Model:                 85
    Model name:            Intel(R) Xeon(R) Platinum 8255C  CPU @ 2.50GHz
    Stepping:              5
    CPU MHz:               2494.140
    BogoMIPS:              4988.28
    Hypervisor vendor:     KVM
    Virtualization type:   full             #虚拟化类型支持
    L1d cache:             32K              #1级数据缓存
    L1i cache:             32K              #1级指令缓存
    L2 cache:              4096K
    L3 cache:              36608K
    NUMA node0 CPU(s):     0
    Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat avx512_vnni
    
  • 查看物理CPU个数

    cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
    
  • 查看逻辑CPU个数

    cat /proc/cpuinfo| grep "processor"| wc -l
    
  • 查看linux系统内存信息

    cat /proc/meminfo
    free -h
    

Resources