是否建议启用跟踪标志 834 以在 VMware 上运行的 SQL Server 使用缓冲池上的大页面?
Microsoft 的调整选项 kb ( https://support.microsoft.com/en-us/kb/920093 ) 没有提到任何关于虚拟化的内容,我读过一些主要用于专用机器的地方。
让我们假设 VM 的 RAM 超过 64GB,它呈现了 2 个 v-socket 的拓扑结构,每个插槽有 8 个 v-core,用于 16 v-core VM。
管理程序内部是否有帮助的跟踪标志?
大页面将内存分配从 4KB 更改为 2MB(通常),这意味着 CPU 中的 TLB(翻译后备缓冲区)得到了改进,从而提高了性能。
我已经在 VMware 的生产服务器上成功使用 Trace flag 834 一年多了。启用跟踪标志之前的一个重要部分是,在 VMware 中,您应该至少保留专用于 SQL Server 的内存量,这是因为启用大页面所需的 lock-pages in memory 特权“锁定”了内存,因此它可以' t 被交换(分页)到磁盘。因此,如果气球驱动程序启动,它不会尝试强制从 SQL Server 回收内存。
此外,主机不应在内存中过度使用,否则会降低性能。
如果有性能提升,应该仔细测试,所以如果不确定,就不要启用它。我也读过“大页面可能对 NUMA 系统有害”,但我不确定它是否适用于 Windows/SQL Server
跟踪标志 834 仅适用于 64 位版本的 SQL Server。您必须拥有 Lock pages in memory 用户权限才能打开跟踪标志 834。您只能在启动时打开跟踪标志 834。
我会非常小心地在 VM 上使用此标志,因为它们的内存具有额外的抽象级别。
在具有大量专用于 SQL 的 RAM 的物理服务器上遇到了足够多的麻烦。示例:当重新启动其中一个时共同托管 3 个 2008R2 实例,它需要永远回来,因为它再也找不到连续的内存段。
性能优势既不存在也不存在(可以说“总体上在统计上微不足道)。我将其视为“TPC 特惠”。
还要考虑到 834 也不适合列存储。