网站优化招聘,wordpress 在线skype,网址大全是什么浏览器,广告联盟哪个比较好NUMA
1 什么是NUMA
早期的计算机#xff0c;内存控制器还没有整合进 CPU#xff0c;所有的内存访问都需要经过北桥芯片来完成。如下图所示#xff0c;CPU 通过前端总线#xff08;FSB#xff0c;Front Side Bus#xff09;连接到北桥芯片#xff0c;然后北桥芯片连接到…NUMA
1 什么是NUMA
早期的计算机内存控制器还没有整合进 CPU所有的内存访问都需要经过北桥芯片来完成。如下图所示CPU 通过前端总线FSBFront Side Bus连接到北桥芯片然后北桥芯片连接到内存——内存控制器集成在北桥芯片里面。 这种架构被称为 UMA1Uniform Memory Access, 一致性内存访问 总线模型保证了 CPU 的所有内存访问都是一致的不必考虑不同内存地址之间的差异。 在 UMA 架构下CPU 和内存之间的通信全部都要通过前端总线。而提高性能的方式就是不断地提高 CPU、前端总线和内存的工作频率。 但是 由于物理条件的限制无法继续通过提高工作频率提高系统性能 CPU 性能的提升开始从提高主频转向增加 CPU 数量多核、多 CPU。越来越多的 CPU 对前端总线的争用使前端总线成为了瓶颈。为了消除 UMA 架构的瓶颈NUMA2Non-Uniform Memory Access, 非一致性内存访问架构诞生 1CPU 厂商把内存控制器集成到 CPU 内部一般一个 CPU socket 会有一个独立的内存控制器。 2每个 CPU scoket 独立连接到一部分内存这部分 CPU 直连的内存称为“本地内存”。 3CPU 之间通过 QPIQuick Path Interconnect 总线进行连接。CPU 可以通过 QPI 总线访问不和自己直连的“远程内存”。 和 UMA 架构不同在 NUMA 架构下内存的访问出现了本地和远程的区别访问远程内存的延时会明显高于访问本地内存。
2 NUMA设置
Linux 有一个命令 numactl3 可以查看或设置 NUMA 信息。
执行 numactl --hardware 可以查看硬件对 NUMA 的支持信息
# numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
node 0 size: 96920 MB
node 0 free: 2951 MB
node 1 cpus: 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
node 1 size: 98304 MB
node 1 free: 33 MB
node distances:
node 0 1 0: 10 21 1: 21 101CPU被分为Node0和Node1 2一组CPU分配到96GB的内存 3node distances 是一个二维矩阵node[i][j] 表示 node i 访问 node j 的内存的相对距离。比如 node 0 访问 node 0 的内存的距离是 10而 node 0 访问 node 1 的内存的距离是 21。
Linux 的 NUMA 策略
Linux 识别到 NUMA 架构后默认的内存分配方案是优先从本地分配内存。如果本地内存不足优先淘汰本地内存中无用的内存。使内存页尽可能地和调用线程处在同一个 node。