最近在学习.NET
![](/icons/82846de.gif)
并行计算技术
![](/icons/82846dou.gif)
学到
![](/icons/82846yi.gif)
个服务器NUMA架构
![](/icons/82846dou.gif)
NUMA架构在中大型系统上
![](/icons/82846yi.gif)
直非常盛行
![](/icons/82846dou.gif)
也是高性能
![](/icons/82846de.gif)
解决方案
![](/icons/82846dou.gif)
在系统延迟方面表现都很优秀
![](/icons/82846dou2.gif)
Windows
![](/icons/82846yi.gif)
向都没有在NUMA架构上有多少表现机会
![](/icons/82846dou.gif)
AMD
![](/icons/82846de.gif)
多路系统大多也会用在UNIX/Linux上
![](/icons/82846dou2.gif)
Intel如期进入了NUMA架构
![](/icons/82846de.gif)
怀抱
![](/icons/82846dou.gif)
英特尔最新
![](/icons/82846de.gif)
服务器处理器至强5500是
![](/icons/82846yi.gif)
项重大
![](/icons/82846de.gif)
结构变革
![](/icons/82846dou2.gif)
和上
![](/icons/82846yi.gif)
代至强处理器相比
![](/icons/82846dou.gif)
至强5500采用了非
![](/icons/82846yi.gif)
致性存储结构(NUMA)
![](/icons/82846dou.gif)
它在
![](/icons/82846yi.gif)
块芯片上增加了向内存控制器
![](/icons/82846de.gif)
并行化访问路径增加非统
![](/icons/82846yi.gif)
内存访问
![](/icons/82846dou2.gif)
可以看这篇文章 3款Nehalem至强5500塔式服务器横评对决
![](/icons/82846dou2.gif)
Windows Server 2003 在线程调度
![](/icons/82846chengxu.gif)
和内存管理器中引入了 NUMA 优化
![](/icons/82846dou.gif)
而 Windows Server 2008 在 I/O 管理器中添加了 NUMA 优化同时扩展了内存管理器
![](/icons/82846de.gif)
NUMA 优化
![](/icons/82846dou2.gif)
NUMA 系统通常是多处理器系统
![](/icons/82846dou.gif)
其中
![](/icons/82846de.gif)
内存延迟随访问它
![](/icons/82846de.gif)
处理器区别而有所区别
![](/icons/82846dou2.gif)
内存被分成多个节点
![](/icons/82846dou.gif)
CPU 和节点的间
![](/icons/82846de.gif)
延迟可能各不相同
![](/icons/82846dou.gif)
并且每个 CPU 都被视为它可最快访问
![](/icons/82846de.gif)
那个节点
![](/icons/82846de.gif)
![](/icons/82846yi.gif)
部分
![](/icons/82846dou2.gif)
Windows 7 和 Windows Server 2008 R2
![](/icons/82846yi.gif)
个重要更新是增强了对多核
![](/icons/82846de.gif)
支持
![](/icons/82846dou2.gif)
现已可以支持超过64个逻辑处理器(也就是所谓
![](/icons/82846de.gif)
“核”)
![](/icons/82846dou.gif)
并且引入了NUMA 技术
![](/icons/82846dou.gif)
大幅度提高多核运算
![](/icons/82846de.gif)
性能
![](/icons/82846dou2.gif)
可以说Windows 7/Server 2008 R2已经进入高端
![](/icons/82846de.gif)
企业级市场
![](/icons/82846dou2.gif)
传统
![](/icons/82846de.gif)
多核运算是使用SMP(Symmetric Multi-Processor )模式:将多个处理器和
![](/icons/82846yi.gif)
个集中
![](/icons/82846de.gif)
存储器和I/O总线相连
![](/icons/82846dou2.gif)
所有处理器只能访问同
![](/icons/82846yi.gif)
个物理存储器
![](/icons/82846dou.gif)
因此SMP系统有时也被称为
![](/icons/82846yi.gif)
致存储器访问(UMA)结构体系
![](/icons/82846dou.gif)
![](/icons/82846yi.gif)
致性意指无论在什么时候
![](/icons/82846dou.gif)
处理器只能为内存
![](/icons/82846de.gif)
每个数据保持或共享唯
![](/icons/82846yi.gif)
![](/icons/82846yi.gif)
个数值
![](/icons/82846dou2.gif)
很显然
![](/icons/82846dou.gif)
SMP
![](/icons/82846de.gif)
缺点是可伸缩性有限
![](/icons/82846dou.gif)
![](/icons/82846yinwei.gif)
在存储器和I/O接口达到饱和
![](/icons/82846de.gif)
时候
![](/icons/82846dou.gif)
增加处理器并不能获得更高
![](/icons/82846de.gif)
性能
![](/icons/82846dou2.gif)
NUMA模式是
![](/icons/82846yi.gif)
种分布式存储器访问方式
![](/icons/82846dou.gif)
处理器可以同时访问区别
![](/icons/82846de.gif)
存储器地址
![](/icons/82846dou.gif)
大幅度提高并行性
![](/icons/82846dou2.gif)
NUMA模式下
![](/icons/82846dou.gif)
处理器被划分成多个"节点"(node)
![](/icons/82846dou.gif)
每个节点被分配有
![](/icons/82846de.gif)
本地存储器空间
![](/icons/82846dou2.gif)
所有节点中
![](/icons/82846de.gif)
处理器都可以访问全部
![](/icons/82846de.gif)
系统物理存储器
![](/icons/82846dou.gif)
但是访问本节点内
![](/icons/82846de.gif)
存储器所需要
![](/icons/82846de.gif)
时间
![](/icons/82846dou.gif)
比访问某些远程节点内
![](/icons/82846de.gif)
存储器所花
![](/icons/82846de.gif)
时间要少得多
![](/icons/82846dou2.gif)
NUMA 系统(尤其是具有超过 8个 CPU
![](/icons/82846de.gif)
系统)通常比
![](/icons/82846yi.gif)
致内存访问系统更加经济且性能更高
![](/icons/82846dou2.gif)
![](/icons/82846yi.gif)
致内存访问系统必须平等地为所有 CPU 提供内存
![](/icons/82846dou.gif)
而 NUMA 系统则能够为直接连接到 CPU
![](/icons/82846de.gif)
内存提供高速互连
![](/icons/82846dou.gif)
同时为和 CPU 相隔较远
![](/icons/82846de.gif)
内存提供较为便宜但更高延迟
![](/icons/82846de.gif)
连接
![](/icons/82846dou2.gif)
为能在 NUMA 系统中有效扩展
![](/icons/82846dou.gif)
操作系统或应用
![](/icons/82846chengxu.gif)
必须了解节点拓扑结构
![](/icons/82846dou.gif)
以便使计算能够在包含计算数据和代码
![](/icons/82846de.gif)
内存附近执行
![](/icons/82846dou2.gif)
例如
![](/icons/82846dou.gif)
Windows 调度
![](/icons/82846chengxu.gif)
为每个线程分配
![](/icons/82846yi.gif)
个所谓
![](/icons/82846de.gif)
理想处理器
![](/icons/82846dou.gif)
该处理器是调度
![](/icons/82846chengxu.gif)
试图始终在其上执行该线程
![](/icons/82846de.gif)
CPU
![](/icons/82846dou2.gif)
这样做可以使线程置于 CPU 缓存Cache中
![](/icons/82846de.gif)
数据能够尽可能地在每次该线程运行时可用
![](/icons/82846dou2.gif)
NUMA
![](/icons/82846de.gif)
主要优点是伸缩性
![](/icons/82846dou2.gif)
NUMA 体系结构在设计上已超越了 SMP 体系结构在伸缩性上
![](/icons/82846de.gif)
限制
![](/icons/82846dou2.gif)
通过 SMP
![](/icons/82846dou.gif)
所有
![](/icons/82846de.gif)
内存访问都传递到相同
![](/icons/82846de.gif)
共享内存总线
![](/icons/82846dou2.gif)
这种方式非常适用于 CPU 数量相对较少
![](/icons/82846de.gif)
情况
![](/icons/82846dou.gif)
但不适用于具有几十个甚至几百个 CPU
![](/icons/82846de.gif)
情况
![](/icons/82846dou.gif)
![](/icons/82846yinwei.gif)
这些 CPU 会相互竞争对共享内存总线
![](/icons/82846de.gif)
访问
![](/icons/82846dou2.gif)
NUMA 通过限制任何
![](/icons/82846yi.gif)
条内存总线上
![](/icons/82846de.gif)
CPU 数量并依靠高速互连来连接各个节点
![](/icons/82846dou.gif)
从而缓解了这些瓶颈状况
![](/icons/82846dou2.gif)
SQL Server 2005开始支持NUMA
![](/icons/82846dou.gif)
可参考SQL Server 2008
![](/icons/82846de.gif)
NUMA支持
![](/icons/82846dou.gif)
NUMA架构对数据库性能
![](/icons/82846de.gif)
影响可以参考DBA notes同学写
![](/icons/82846de.gif)
NUMA 架构和数据库性能
参考资料:
- Linux
NUMA 技术
作者: 自由、创新、研究、探索……
出处:http://shanyou.cnblogs.com/
版权:本文版权归作者和博客园共有
转载:欢迎转载
为了保存作者
创作热情
请按要求【转载】
谢谢
要求:未经作者同意
必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站WebSite: http://www.openbeta.cn/