Large-Page支持

大页支持使服务器应用程序能够建立大页内存区域,这在 64 位 Windows 上特别有用。 每个大页面翻译在 CPU 中使用单个翻译缓冲区。 此缓冲区的大小通常比本机页面大小大三个数量级;这可以提高转换缓冲区的效率,从而提高经常访问的内存的性能。

以下过程介绍如何使用大页支持。

使用大页面支持

  1. 通过调用 AdjustTokenPrivileges 函数获取 SeLockMemoryPrivilege特权 。 有关详细信息,请参阅 为帐户分配权限更改令牌中的特权
  2. 通过调用 GetLargePageMinimum 函数检索最小大页面大小。
  3. 在调用 VirtualAlloc 函数时包括MEM_LARGE_PAGES值。 大小和对齐方式必须是大页最小值的倍数。

编写使用大页内存的应用程序时,请记住以下注意事项:

  • 在系统长时间运行后,可能很难获取大页内存区域,因为每个大型页面的物理空间必须是连续的,但内存可能已碎片化。 在这些条件下分配大页面可能会显著影响系统性能。 因此,应用程序应避免重复进行大页分配,而是在启动时一次性分配所有大页面。
  • 内存始终可读/写,不可分页 (始终驻留在物理内存) 中。
  • 内存是进程专用字节的一部分,但不是工作集的一部分,因为根据定义,工作集仅包含可分页内存。
  • 大页分配不受作业限制。
  • 大页内存必须保留并作为单个操作提交。 换句话说,大型页面不能用于提交以前保留的内存范围。
  • 基于 Intel Itanium 的系统上的 WOW64 不支持使用此功能的 32 位应用程序。 应用程序应重新编译为本机 64 位应用程序。