16 November 2011 0 Comments

SQL SERVER对NUMA的支持

  【 NUMA 介绍】   目前, CPU 主频速度和 CPU 的个数增长得很快。但是 CPU 访问内存的时候,速度依旧跟不上。虽然我们提出了 L3 Cache 这个概念,但并不能完全解决问题。 CPU 访问内存速度很慢,依然是我们的瓶颈。为了更好的解决这个问题,工业界引入了 NUMA 概念。 NUMA 的架构可以如下 :   上述结构中,我们有两个 NUMA 结点。每个 NUMA 结点有一些 CPU, 一个内部总线,和自己的内存,甚至可以有自己的 IO 。每个 CPU 有离自己最近的内存可以直接访问。所以,使用 NUMA 架构,系统的性能会更快。在 NUMA 结构下,我们可以比较方便的增加 CPU 的数目。而在非 NUMA 架构下,增加 CPU 会导致系统总线负载很重,性能提升不明显。 每个 CPU 也可以访问另外 NUMA 结点上的内存,但是这样的访问,速度会比较慢。我们要尽量避免。应用软件如果没有意识到这种结构,在 NUMA 机器上,有时候性能会更差,这是因为,他们经常会不自觉的去访问远端内存。导致性能下降。   NUMA 通常在有硬件或软件之分。下面分别对它们进行介绍。 【硬件 NUMA 】 硬件 NUMA 是在硬件层面上得以支持。我们怎么才能知道我们的机器是否有硬件 NUMA 呢 ? 最好的办法是问硬件供应商了。但是如果我们想知道我们的机器有多少个 NUMA 结点,可以在 SQL Server Management Studio 下用如下的查询,看能返回几个 NUMA 结点。   SELECT DISTINCT memory_node_id FROM sys . dm_os_memory_clerks   或者,我们可以查看 SQL Server 的错误日志, 如下面的错误日志表明,我们的系统有两个 NUMA 结点。   从 SQL Server 2000 SP3 以后, SQL Server 的设计会意识到 NUMA 架构,内存访问会尽量使用离 CPU 最近的内存。以提高性能。 【软件 NUMA 】   如果硬件本身不支持 NUMA, 我们可以在软件层面上,设置 NUMA, 如我们有 4 个 CPU, 设成两个 NUMA NODE, 一个 Node 占用 CPU 0×11 ( 二进制编码 ), 另外一个 Node 占用 CPU 0×1100 ( 二进制编码 ).

Read the original here:
SQL SERVER对NUMA的支持

If you liked this post, buy me a Coffee.

Tags: , , , , , , ,

Leave a Reply