SQL Server 框上的高上下文切换

SQL Server 框上的高上下文切换

我们有一台配备 2 个四核至强 5550 处理器的服务器。服务器上安装的唯一应用程序是 SQL 服务器。CPU 使用率很少超过 40%,交易率为每秒 2,000 笔交易。

处理器队列长度也约为 2。一切似乎都正常,除了上下文切换(工作时间内平均为 88,000 次,最大为 232,000 次)。

我在 SQL Server 文档中看到,上下文切换次数大于 15,000 表示 CPU 存在问题。即使 CPU 计数器看起来正常,这实际上是个问题吗?

答案1

我看到那是一款具有超线程功能的 Nehalem 处理器。

上次我们问一般共识是默认禁用 SQL Server 特定机器上的超线程(我们禁用了它,效果很好)。浏览其他几个网站时,我听到有人也提出了同样的建议其他有信誉的人

因此,你可以尝试转向离开先进行超线程,然后重新测量。

答案2

我确信你们已经知道了这一点,但我想在这里分享答案,因为这是服务器故障。

SQL Server 有自己的计时器功能,默认情况下使用该计时器功能,而不是 OS/BIOS 计时器。您可以禁用此功能,但我不知道这是否会影响您让 SQL Server 在时间字段中输入精细时间数据(精确到 12 毫秒,如果我没记错的话)的能力。

通过进入 SQL Server 配置管理器、进入 SQL Server 服务并右键单击 SQL Server 实例并转到属性来禁用 SQL Server 计时器。

在实例属性中,转到“启动参数”选项卡并添加 -t8038。这将启用一个跟踪标志,该标志会禁用该实例的计时器。如果您有多个实例,则必须对每个实例执行此操作,否则您仍会遇到高上下文切换。

相关内容