我们有一台 Windows Server 2008 R2(64 位)8GB 服务器,根据 Sysinternals内存地图,使用 AWE 分配了 2GB 内存。据我所知,这意味着这些页面保留在物理内存中,永远不会被推出。这会导致其他应用程序被推出物理内存。
在 RAMMap 中的“物理页面”选项卡上,所有 AWE 页面的“进程”列均为空。
我们在该框上运行 SQL Server,但是(通过 SQL Server Management Studio,在服务器属性->内存下,在服务器内存选项下)它说配置为不使用 AWE。
但是,当停止 SQL Server 时,AWE 页面突然消失了。所以它确实是罪魁祸首。
我有三个问题:
- 为什么 RAMMap 不知道/不显示 SQL Server 进程负责该 AWE 内存?
- 为什么 SQL Server Management Studio 说未使用 AWE 内存?
- 我们如何配置SQL Server真正不使用AWE内存?
答案1
SQL服务器帐户是否有“锁定内存中的页面”选项?
简而言之,1)以这种方式分配速度更快,2)需要 SQL 来防止其内存被分页。
您不希望 SQL 使用 AWE 的具体原因是什么?
- 在 64 位系统上(2005+):
- AWE 不是必需的(事实上启用它也不会产生任何作用)
- 启用“内存中的锁定页面”权限可防止缓冲池内存(以及任何使用一次单页内存分配的内容)被调出
- 当设置“内存中的锁定页面”权限时,SQL Server 使用 Windows AWE API 进行内存分配,因为它的速度更快
- 标准版和企业版均支持“内存中的锁定页面”(请参阅此博客文章以了解如何在标准版中启用它)
也可以看看: 锁定页面、AWE、任务管理器和工作集的乐趣……- 这解释了为什么设置“使用 AWE”为 false 实际上并不能阻止使用 AWE(它仅与 32 位相关)