Large-Page支持
大页支持使服务器应用程序能够建立大页内存区域,这在 64 位 Windows 上特别有用。 每个大页面翻译在 CPU 中使用单个翻译缓冲区。 此缓冲区的大小通常比本机页面大小大三个数量级;这可以提高转换缓冲区的效率,从而提高经常访问的内存的性能。
以下过程介绍如何使用大页支持。
使用大页面支持
- 通过调用 AdjustTokenPrivileges 函数获取 SeLockMemoryPrivilege特权 。 有关详细信息,请参阅 为帐户分配权限 和 更改令牌中的特权。
- 通过调用 GetLargePageMinimum 函数检索最小大页面大小。
- 在调用 VirtualAlloc 函数时包括MEM_LARGE_PAGES值。 大小和对齐方式必须是大页最小值的倍数。
编写使用大页内存的应用程序时,请记住以下注意事项:
- 在系统长时间运行后,可能很难获取大页内存区域,因为每个大型页面的物理空间必须是连续的,但内存可能已碎片化。 在这些条件下分配大页面可能会显著影响系统性能。 因此,应用程序应避免重复进行大页分配,而是在启动时一次性分配所有大页面。
- 内存始终可读/写,不可分页 (始终驻留在物理内存) 中。
- 内存是进程专用字节的一部分,但不是工作集的一部分,因为根据定义,工作集仅包含可分页内存。
- 大页分配不受作业限制。
- 大页内存必须保留并作为单个操作提交。 换句话说,大型页面不能用于提交以前保留的内存范围。
- 基于 Intel Itanium 的系统上的 WOW64 不支持使用此功能的 32 位应用程序。 应用程序应重新编译为本机 64 位应用程序。