2

我正在设置一个测试环境,但我需要缩减我们用于 SQL 盒的硬件,该盒运行 Windows Server 2008 R2 SP 1 和 SQL 2008。我注意到 MSConfig.exe 有用于限制可用 CPU 数量的选项,但我无法在 MSDN 上找到有关其工作原理的任何文档。

我也没有看到任何方法可以使用 Microsoft 放入的 BCDEdit 通过命令行更改此设置。

有人知道这方面的文件吗?我正在尝试决定是在启动时限制处理器的使用是最好的测试,还是在 SQL 本身中限制处理器。我倾向于启动时间,因为我试图准确地模拟一个低功耗的物理盒子,如果我在数据库级别限制功率,额外的功率可能会出现在其他区域。

4

1 回答 1

4

在多核、超线程 CPU 的时代,“处理器”现在是一个模棱两可的术语。处理器是指线程(来自超线程)、内核还是插槽(物理 CPU)。

Windows 将逻辑处理器 (LP) 识别为基本计算平台 - 为内核中的每个超线程提供一个 LP,然后乘以每个内核,最后乘以插槽数。

在 Windows 中减少 LP 计数的最简单方法是使用 /NUMPROC 选项。在此示例中,itc 创建的最大处理器数为 8。

  1. 备份 bcdedit /export c:\Backup\bcd.bak
  2. 当前条目列表 bcdedit /v
  3. 现有配置的副本 bcdedit /copy {current} /d "Windows 2008 R2 with NumProc" 当前是一个“众所周知的”标识符。这也会返回创建的 Id。这样就可以直接使用了
  4. 条目列表 bcdedit /v
  5. 向新条目添加参数 设置最大处理器数
    bcdedit /set {new_ID} NUMPROC 8
  6. 更改默认条目 bcdedit /default {new_ID}

但是这种策略的危险在于,例如在启用了超线程的 4 核系统上,然后只使用一个处理器(插槽)。由于前 8 个 LP (0..7) 将是第一个处理器上的超线程内核。因此,您实际上并不是在模拟一个 8 路系统 - 而是一个启用了超线程的 1 路 - 4 核系统。

如果这不适合您的模型,其他选项是

  • 在 BIOS 中禁用超线程 - 这会减少每个内核的 LP 数量,从而有助于将负载分配到内核和插槽上。
  • 系统 BIOS 是否支持减少每个处理器的核心计数器?如果是这样,这将有助于通过套接字分配负载。
  • 在虚拟环境中构建系统并从该角度限制物理资源。

如果您在 Windows 下处理超过 64 个逻辑处理器,那么这将引入处理器组并添加另一层选项。

于 2013-04-17T22:19:37.510 回答