KB322385 - 超线程环境中的SQL Server支持

应用对象
Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Evaluation Edition Microsoft SQL Server 2005 Express Edition Microsoft SQL Server 2005 Express Edition with Advanced Services Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Standard X64 Edition Microsoft SQL Server 2005 Workgroup Edition SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Express with Advanced Services SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services SQL Server 2008 R2 Parallel Data Warehouse SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Web SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core SQL Server 2014 Business Intelligence - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Web - duplicate (do not use)

目录

简介

本文讨论超线程环境中的SQL Server支持。

详细信息

SQL Server的核心设计在超线程环境中完全正常运行。 但是,如果使用超线程环境,我们建议执行以下操作:

  • 运行 Microsoft SQL Server 2000 Service Pack 3 (SP3) 或更高版本的 Service Pack。
  • 安装最新的安全更新。

Microsoft Windows 操作系统使逻辑超线程 CPU 显示为物理 CPU。 由于SQL Server已经具有高度可缩放性,因此额外的 CPU 使SQL Server能够使用更多处理器。

有关Microsoft Windows 支持超线程的其他信息,请访问以下Microsoft网站:

http://www.microsoft.com/whdc/system/sysinternals/ht-windows.mspx
考虑超线程部署时,必须注意以下事项:

  • 许可
  • 处理器映射
  • 性能
  • Intel 的 CPU 计数实用工具

有关每个项的详细信息如下。

许可

启用超线程后,基本输入输出系统 (BIOS) 使用逻辑 CPU 与物理 CPU 比率。 当前实现使用 2:1 比率。 这意味着每个物理 CPU 有两 (2) 逻辑 CPU。 这些比率将来可能会更改:但是,Microsoft SQL Server 2000 Service Pack 3 (SP3) 及更高版本具有其他许可代码,用于调整许可限制以处理比率。 例如,如果安装的SQL Server产品代码允许以 2:1 的比例使用 4 CPU 许可证,则 SQL Server 2000 SP3 版本和更高版本会进行调整,并允许你使用 8 个 CPU。

安装 SQL Server 时,将使用物理 CPU 计数,并让SQL Server处理比率转换。 相反,设置关联掩码选项时,将使用逻辑 CPU 值,因为SQL Server使用所有 CPU,就像它们是物理处理器一样。

有关更多许可和支持的配置详细信息,请访问以下Microsoft网站:

http://www.microsoft.com/sql/howtobuy/default.mspx

处理器映射

默认情况下,SQL Server根据序号处理器顺序为每个处理器创建逻辑用户模式计划 (UMS) 计划程序。 在启用超线程的环境中,Microsoft Windows 使所有处理器都可供SQL Server进程使用,就像它们是真正的物理处理器一样。 下表显示了逻辑和物理处理器映射的示例。

处理器映射表 1

逻辑 物理智能卡
0 0
1 1
2 2
3 3
4 0
5 1
6 2
7 3

下面是另一个处理器映射示例。

处理器映射表 2

逻辑 物理智能卡
0 0
1 0
2 1
3 1
4 2
5 2
6 3
7 3

SQL Server可以接受任一映射。 但是,请注意,当预期使用多个物理 CPU 时,不要造成SQL Server意外限制为物理 CPU 的情况。

可以使用“SQL Server关联掩码”选项更改预期的物理处理器使用情况。 为此,请参阅处理器映射表 1。 如果关联掩码00010001并且它使用的是处理器 0 和处理器 4,则正在使用的逻辑处理器将映射到示例物理处理器 #0。 这会导致使用支持两个逻辑处理器而不是两个物理处理器的单个物理处理器。 这种情况可能会降低性能。

可以使用关联掩码选项和 IO 相关性掩码启动参数的组合来更改默认行为。 有关关联掩码选项或 IO 相关性掩码启动参数的详细信息,请参阅 SQL Server 联机丛书。

有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

298402了解如何设置SQL Server I/O 关联选项

警告 建立关联掩码时请谨慎。 在打算使用单独的物理处理器时,可以使用同一物理处理器来支持两个逻辑处理器,从而轻松错误地配置关联掩码。

性能

超线程环境的性能各不相同。 保守测试表明,SQL Server工作负载提高了 10% 到 20%,但应用程序模式具有显著影响。 你可能会发现,某些应用程序不会因利用超线程而获得性能提升。 如果物理处理器已经饱和,则使用逻辑处理器实际上可以减少实现的工作负荷。

例如,导致高级别争用的应用程序可能会导致超线程环境中的性能降低。 建议全面测试应用程序,以确保超线程环境提供所需的性能提升,而不是购买等效的物理 CPU。 超线程可能非常有用,但超线程无法取代额外物理 CPU 的全部功能。

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性作任何默示或明示的担保。

Intel 网站提供有关超线程 (Intel NetBurst 微体系结构) 的一些很好的信息和教程。 有关支持超线程的系统的详细信息,请访问以下 Intel 网站:

http://software.intel.com/en-us/blogs/2009/06/02/intel-hyper-threading-technology-your-questions-answered
            
             http://developer.intel.com
            
          

MAXDOP) (最大并行度

有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2806535 SQL Server 中“最大并行度”配置选项的建议和指南