简介SQL SERVER中的NUMA架构
SQL Server Data Tools – Business Intelligence for Visual Studio 2012安装时提示“The CPU architecture....”的解决方法
就目前而言,CPU主频速度的迅速提升以及CPU数量的高速增长,并没有能够促使CPU在访问内存时的速度有所长进。 尽管L3 Cache的提出解决了部分问题,不过,CPU访问内存速度慢的现象并未有所改观,瓶颈依然存在。 为了更有效的解决CPU访问内存的速度问题,工业界引入了NUMA概念 首先介绍一下 NUMA 的架构,如下图: 每个 NUMA 节点(硬件 NUMA 或软件 NUMA)都有一个用于处理网络 I/O 的相关 I/O 完成端口,这有助于跨多个端口分布网络 I/O 处理 上述结构中展现出两个NUMA结点,每个NUMA结点有一些CPU, 一个内部总线,和自己的内存,甚至可以有自己的IO。每个CPU有离自己最近的内存可以直接访问。 所以,使用NUMA架构,系统的性能会更佳。值得注意的是,在NUMA结构下,可以比较方便的增加CPU的数目。 而在非NUMA架构下,增加CPU会导致系统总线负载很重,性能提升不明显。 虽然每个CPU也可以访问其他NUMA结点上的内存,但付出的代价则是导致速度更慢,这是要尽量避免的。 应用软件如果没有意识到这种结构,在NUMA机器上,有时候性能会更差,这是因为,他们经常会不自觉的去访问远端内存,从而导致整体性能下降。 通常而言,NUMA架构也有硬件和软件之分。 一、硬件NUMA 硬件NUMA是在硬件层面上得以支持。如何才能知道本机是否有硬件NUMA呢? 最好的办法是问硬件供应商了。 但如果想知道机器中有多少个NUMA结点,那就可以在SQL Server Management Studio下用如下的查询,看能返回几个NUMA结点 1SELECTDISTINCT 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 0x11 (二进制编码),另外一个NODE占用CPU 0x1100 (二进制编码)。 那么,可以在注册表上做如下修改,以SQL Server 2008为例: (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |