集群里的服务器往往不止来自一种厂商,还涉及到了不同架构、不同代际。想要实现兼顾所有机型的硬件隔离技术,或者说寄存器操作,需要1.明确这些是由由架构(x86/ARM)、厂商(Intel/AMD/华为)、代际(Skylake/Zen 4)共同决定的。2.在没有那么多CPU手册的情况下,通过通用的命令判断和解析,得到更多的CPU信息。

不过这里讨论的只是一些主流常见的CPU架构。

lscpu

lscpu虽然每行一条信息,但是同一行内,不同设备使用冒号有英文也有中文,解析字符串的时候要注意。

不同 CPU 厂商和架构会采用不同的隔离技术、寄存器设计、指令集,以下这3个信息组合在一起可以区分出他们的不同实现。

1.Architecture(CPU 架构)

  • Intel/AMD(x86): x86_64(64 位)或 i686(32 位)
  • 华为ARM: aarch64(ARM 64 位)

2.VendorID(厂商标识)

  • Intel: GenuineIntel
  • AMD: AuthenticAMD
  • 华为ARM: 通常是 HiSilicon 或 Huawei(但也有其他厂商)

3.ModelName(CPU 型号名称)

  • Intel: 常见的 Intel(R) Xeon(R)、Intel(R) Core(TM) 等
  • AMD: 通常包含 AMD EPYC、AMD Ryzen 等
  • 华为鲲鹏: 比如 Kunpeng

SMT->Cluster->NUMA层级关系

  • SMT逻辑核(超线程),共享物理核的执行单元,这个比较常见。对应物理核(Physical Cores),独立的硬件核心,可并行执行指令。
  • Cluster是一组物理核心的集合,这些核心共享某些硬件资源(如L2/L3缓存、内存控制器、中断控制器等)。这个只常见于ARM的big.LITTLE设计、某些服务器CPU或嵌入式系统。例如:ARM Cortex-A系列中,一个Cluster可能包含4个核心,共享统一的L2缓存。cat /sys/devices/system/cpu/cpuX/topology/cluster_cpus_list 可以用来查看CPU的集群Cluster分组信息,但它的具体输出取决于硬件架构和内核支持
  • AMD处理器(尤其是EPYC和Ryzen系列)中,每个CCD(Core Complex Die)包含:1.多个CPU核心(通常8核)。2.共享的L3缓存(所有核心共享)。3.连接到I/O Die(IOD)的接口(IOD负责内存控制器、PCIe等。所有CCD通过Infinity Fabric连接IOD。同一CCD 内的核心只需通过CCD 内部的Infinity Fabric到IOD,无跨CCD通信开销)。
  • 在Intel处理器上,L3缓存域(L3 Domain) 通常对应一个共享最后一级缓存的核心分组。lscpu -e或者cat /sys/devices/system/cpu/cpu0/cache/index3/shared_cpu_list查看。

文章作者: 易百分
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 易百分 !
  目录