我们有一个2台四核至强5550处理器的服务器。 安装在服务器上的唯一应用程序是SQL服务器。 CPU使用率很less超过40%,事务处理速率是每秒2000个事务。
处理器队列的长度也大约为2.一切似乎都正常,除了在工作时间内上下文切换的平均值为88,000,最大值为23.2万。
我已经在SQL服务器文档中读到大于15,000的上下文切换号码指示CPU问题。 这实际上是一个问题,即使CPU计数器看起来正常?
我看到这是一个带有超线程的Nehalem处理器。
我们最后一次询问普遍的共识是在SQL Server特定的框中默认禁用超线程(我们禁用了它,结果很好)。 浏览其他一些网站,我听到其他知名人士的build议。
所以,你可以尝试closures超线程,然后重新测量。
我相信你们已经知道了这一点,但我想在这里分享答案,因为这是服务器故障。
SQL Server有一个自己的定时器function,并默认使用它,而不是OS / BIOS定时器。 你可以禁用这个function,但是我不知道这是否会让SQL Server在时间字段中input精确的时间数据(下降到12ms,iirc)。
通过进入SQL Serverconfigurationpipe理器禁用SQL Server计时器,进入SQL Server服务并右键单击SQL Server实例并转到属性。
在实例属性中,转到“启动参数”选项卡并添加-t8038。 这将启用一个跟踪标志,禁用该实例的计时器。 如果您有多个实例,则必须为每个实例执行此操作,否则仍然会遇到较高的上下文切换。