我在我们的一台 SQL Server 机器上执行了这个:
EXEC sp_configure 'show advanced options', 1
然后执行RECONFIGURE。这向我展示了以下错误消息:
指定的关联掩码与指定的 IO 关联掩码冲突。使用 override 选项强制此配置。
通过执行RECONFIGURE WITH OVERRIDE我确实可以强制配置。但这不是解决错误消息中提到的冲突的方法。
中的值sp_configure如下:
name minimum maximum config_value run_value
affinity I/O mask -2147483648 2147483647 126 126
affinity mask -2147483648 2147483647 126 126
Run Code Online (Sandbox Code Playgroud)
我在这里找到了一些解释,但这基本上只是说“不应该有冲突”,没有关于如何解决它。有知识的人可以向我解释这个错误消息的实际含义以及我应该如何/是否应该尝试解决它?
2012 年 12 月 12 日更新
我们找不到任何理由为冲突的值的设置affinity I/O mask和affinity mask。我将它们改回默认值,两者均为 0。重新配置后affinity mask立即设置为 0,affinity I/O mask显然需要重新启动实例。
SQL Server 的 'affinity mask' 和 'affinity I/O mask' 配置值不应冲突。如果您选择为 SQL Server 工作线程调度和 I/O 处理关联一个处理器,则性能可能会受到影响。
上述声明的意思是:
请勿在 Worker 和 I/O 掩码中配置处理器!
它在文档中进行了说明,并且可以防止错误消息和要求指定WITH OVERRIDE强制更改通过的错误输入尝试。那是你警告说可能会发生一些不好的事情。
消息 5834,级别 16,状态 1,第 1 行 指定的关联掩码与指定的 IO 关联掩码冲突。使用 override 选项强制此配置。
IO 关联屏蔽是一种很少使用的优化,它将 IO 完成活动卸载到专用 CPU。设置后,将创建一个隐藏的调度程序,该程序仅处理该实例的 IO 操作。如果您配置相同的 CPU 和 IO 掩码,两个调度程序将争夺 CPU 周期并导致混乱。
您设置的掩码正好创建了1111110为两者指定的场景。
如果您的意图是将 CPU 专用于共享服务器上的特定实例的更常见要求,请仅使用 CPU 关联掩码并将 IO 掩码保留为 0(禁用)。
我只遇到过一次配置错误的带有匹配掩码的服务器。我被放在前面是因为日志突然开始填满我们都害怕看到的消息:
I/O 请求需要超过 15 秒才能在文件中完成...
重置IO掩码并重新启动后,服务器表现良好,再也没有出现上述错误。
有用的参考: