作者:专业长膘 | 来源:互联网 | 2024-10-20 16:46
cputopology参考文章:参考文章基本概念NUMANon-uniformmemoryaccess(NUMA)isacomputermemorydesig
cpu topology 参考文章:参考文章
基本概念 NUMA Non-uniform memory access (NUMA ) is a computer memory design used in multiprocessing, where the memory access time depends on the memory location relative to the processor. Under NUMA, a processor can access its own local memory faster than non-local memory (memory local to another processor or memory shared between processors). The benefits of NUMA are limited to particular workloads, notably on servers where the data is often associated strongly with certain tasks or users.[1]
NUMA architectures logically follow in scaling from symmetric multiprocessing (SMP) architectures.
**非统一内存访问(NUMA)**是一种用于多处理器的电脑内存体设计,内存访问时间取决于处理器的内存位置。 在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。
NUMA架构在逻辑上遵循对称多处理(SMP)架构。
DIE/SoC MC SMT SMP
一个NUMA node包括一个或者多个Socket,以及与之相连的local memory。一个多核的Socket有多个Core。如果CPU支持HT,OS还会把这个Core看成 2个Logical Processor。
查看cpu拓扑 以使用的服务器为例:其拓扑结构如下
Topology 2 Processors, 28 Cores, 56 Threads
node节点 numactl命令可以查看node节点信息
[ root@localhost /] available: 2 nodes ( 0-1) node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 28 29 30 31 32 33 34 35 36 37 38 39 40 41 node 0 size: 78848 MB node 0 free: 836 MB node 1 cpus: 14 15 16 17 18 19 20 21 22 23 24 25 26 27 42 43 44 45 46 47 48 49 50 51 52 53 54 55 node 1 size: 62091 MB node 1 free: 289 MB node distances: node 0 10: 10 211: 21 10
查看node节点的详细信息
[ root@localhost /] has_cpu has_memory has_normal_memory node0 node1 online possible power uevent
查看node0节点
[ root@localhost /] compact cpu12/ cpu3/ cpu34/ cpu39/ cpu6/ cpumap memory10/ memory15/ memory2/ memory24/ memory29/ memory33/ memory38/ memory6/ power/ cpu0/ cpu13/ cpu30/ cpu35/ cpu4/ cpu7/ distance memory11/ memory16/ memory20/ memory25/ memory3/ memory34/ memory39/ memory7/ subsystem/ cpu1/ cpu2/ cpu31/ cpu36/ cpu40/ cpu8/ hugepages/ memory12/ memory17/ memory21/ memory26/ memory30/ memory35/ memory4/ memory8/ uevent cpu10/ cpu28/ cpu32/ cpu37/ cpu41/ cpu9/ meminfo memory13/ memory18/ memory22/ memory27/ memory31/ memory36/ memory40/ memory9/ vmstat cpu11/ cpu29/ cpu33/ cpu38/ cpu5/ cpulist memory0/ memory14/ memory19/ memory23/ memory28/ memory32/ memory37/ memory5/ numastat
以cpu0举例:
index0: 1级数据cache index1: 1级指令cache index2: 2级cache index3: 3级cache ,对应cpuinfo里的cache
目录里的文件是cache信息描述,以本机的cpu0/index0为例简单解释一下:
文件 内容 说明 type Data 数据cache,如果查看index1就是Instruction Level 1 L1 Size 32K 大小为32K coherency_line_size 64 644 128=32K physical_line_partition 1 ways_of_associativity 4 number_of_sets 128 shared_cpu_map 00000101 表示这个cache被CPU0和CPU8 share
[ root@localhost /] 32K[ root@localhost /] 32K[ root@localhost /] 256K[ root@localhost /] 35840K[ root@localhost /] 000000,10000001[ root@localhost /] 000000,10000001[ root@localhost /] 000000,10000001[ root@localhost /] 0003ff,f0003fff[ root@localhost /] 000000,10000001[ root@localhost /] 000000,10000001[ root@localhost /] 000000,10000001[ root@localhost /] 0003ff,f0003fff[ root@localhost /] 0003ff,f0003fff
processor/socket [ root@localhost /] 01
表示系统含有2个socket。
core [ root@localhost /] 14
说明系统每个socket上有14个cores。
[ root@localhost /] 0123456891011121314
但是core id不一定连续的,这里就没有core id “7”。
logical processor [ root@localhost /] 012345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
OS认为有56个逻辑CPU,这是因为开启了HT超线程技术,每个core同时运行两个线程,让OS看做实际上有56个逻辑cpu。