It’s NUMA

Categories: 未分类
Tags: No Tags
Comments: 1 Comment
Published on: 2009 年 05 月 11 日

NUMA这个词3年前就听说过,但是从来没有过很好的理解,这次的项目中终于遇到了一个NUMA的设备,对这个东西有了一些了解。

之前很多人都认为MS的产品只能使用在中小企业,进不了企业级市场,MS的东西都是在PC server上来实现,无法和IBM的主机系统来PK。随着硬件的不断发展,PC Server的优势也渐渐体现出来了,但是很多时候用户还是希望能够有更强大的PC Server来运行他们的系统。IBM的主机可以有数千颗CPU肯定比只有几十颗CPU的PC Server快很多。但是现在的PC Server也可能做到几百颗的CPU,这样就要看看微软的产品是否支持了。

硬件已经趋向使用多条系统总线,每条系统总线为一小组处理器提供服务。每组处理器都有自己的内存,并可能有自己的 I/O 通道。但是,每个 CPU 都可以通过一致的方式访问与其他组关联的内存。每个组称为一个“NUMA 节点”。NUMA 节点中的 CPU 数量取决于硬件供应商。访问本地内存比访问与其他 NUMA 节点关联的内存快。这就是“非一致性内存访问体系结构”名称的由来。

在 NUMA 硬件上,有些内存区域与其他区域位于不同的物理总线上。由于 NUMA 同时使用本地内存和外部内存,因此,访问某些内存区域的时间会比访问其他内存区域的要长。“本地内存”和“外部内存”通常用于引用当前正在运行的线程。本地内存是指与当前正在运行线程的 CPU 位于同一节点上的内存。任何不属于当前正在运行的线程所在的节点的内存均为外部内存。外部内存也称为“远程内存”。访问外部内存的开销与访问本地内存的开销比率称为 NUMA 比率。如果 NUMA 比率为 1,则它是对称多处理 (SMP)。比率越高,访问其他节点内存的开销就越大。不支持 NUMA 的 Windows 应用程序(包括 SQL Server 2000 SP3 及更低版本)有时在 NUMA 硬件上的执行效果非常差。

NUMA 的主要优点是伸缩性。NUMA 体系结构在设计上已超越了 SMP 体系结构在伸缩性上的限制。通过 SMP,所有的内存访问都传递到相同的共享内存总线。这种方式非常适用于 CPU 数量相对较少的情况,但不适用于具有几十个甚至几百个 CPU 的情况,因为这些 CPU 会相互竞争对共享内存总线的访问。NUMA 通过限制任何一条内存总线上的 CPU 数量并依靠高速互连来连接各个节点,从而缓解了这些瓶颈状况。

这次使用的系统是Unisys ES7000,有4个NUMA节点,每个节点有4颗6核的CPU组成,总计16颗CPU,96核,内存224GB,存储超过20T。很容易看出这套系统是由多台PC Server组成的,这样中系统的扩展性和性价比是主机系统无法比拟的。

既然有这样的硬件,软件也 需要能够支持这种类型的PC server。NUMA在这里起了很大的作用。使软件能够更好的使用CPU和CPU缓存。对于数据库应用来说是非常有益的,SQL Server 2005以后的版本支持Soft NUMA,可以通过配置在硬件NUMA上提供软件NUMA这样就可以提供多个IO线程和Lazy Writer线程。下面这个就是在创建索引时CPU的工作情况。

 

image

1 Comment - Leave a comment
  1. qq666说道:

    刚接触NUMA,还没见过实际的NUMA系统,想请教您NUMA系统的操作系统装在哪里?一般是什么操作系统?能推荐本详细介绍关于NUMA的书吗?谢谢!

Leave a comment


Welcome , today is 星期二, 2017 年 08 月 22 日