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