Windows 中的 RAM、虚拟内存、页文件和内存管理

适用于:Windows 7 Service Pack 1,Windows Server 2012 R2
原始 KB 编号: 2160852

摘要

本文包含有关 32 位版本 Windows 中虚拟内存实现的基本信息。

在现代操作系统(如 Windows)中,应用程序和许多系统进程始终使用虚拟内存地址引用内存。 虚拟内存地址由硬件自动转换为实际 (RAM) 地址。 只有操作系统内核的核心部分绕过此地址转换,直接使用实际内存地址。

即使所有正在运行的进程所需的内存不超过系统上安装的 RAM 量,也始终使用虚拟内存。

进程和地址空间

例如, (的所有进程,在 32 位版本的 Windows 下运行的应用程序可执行文件) 都分配虚拟内存地址 (虚拟地址空间) ,范围从 0 到 4,294,967,295 (2*32-1 = 4 GB) ,而不管计算机上安装了多少 RAM。

在默认 Windows 配置中,此虚拟地址空间的 2 GB (GB) 指定用于每个进程的专用使用,而其他 2 GB 则由所有进程和操作系统共享。 通常,应用程序 (例如记事本、Word、Excel 和 Acrobat Reader) 仅使用 2 GB 专用地址空间的一小部分。 操作系统仅将 RAM 页帧分配给正在使用的虚拟内存页。

物理地址扩展 (PAE) 是 Intel 32 位体系结构的一项功能,将物理内存 (RAM) 地址扩展到 36 位。 PAE 不会更改虚拟地址空间的大小 () 仍为 4 GB,而只会更改处理器可以寻址的实际 RAM 量。

计算机硬件根据操作系统维护的 转换表 ,自动且透明地处理进程中运行的代码使用的 32 位虚拟内存地址与 36 位 RAM 地址之间的转换。 (32 位地址) 的任何虚拟内存页都可以与任何物理 RAM 页相关联, (36 位地址) 。

以下列表描述了截至 2010 年 5 月) ,各种 Windows 版本支持 (的 RAM 量:

Windows 版本 RAM
Windows NT 4.0 4 GB
Windows 2000 Professional 4 GB
Windows 2000 标准服务器 4 GB
Windows 2000 Advanced Server 8 GB
Windows 2000 Datacenter Server 32 GB
Windows XP Professional 4 GB
Windows Server 2003 Web Edition 2 GB
Windows Server 2003 Standard Edition 4 GB
Windows Server 2003 Enterprise Edition 32 GB
Windows Server 2003 Datacenter Edition 64 GB
Windows Vista 4 GB
Windows Server 2008 Standard 4 GB
Windows Server 2008 Enterprise 64 GB
Windows Server 2008 Datacenter 64 GB
Windows 7 4 GB

Pagefile

RAM 是有限的资源,而对于大多数实际目的,虚拟内存是无限的。 可以有许多进程,每个进程都有自己的 2 GB 专用虚拟地址空间。 当所有现有进程使用的内存超过可用 RAM 时,操作系统会将一个或多个虚拟地址空间) (4 KB 的页移动到计算机的硬盘。 这将释放该 RAM 帧以供其他用途。 在 Windows 系统中,这些 分页页 存储在分区根目录中的一个或多个文件中 (Pagefile.sys 文件) 。 每个磁盘分区中可以有一个此类文件。 页面文件的位置和大小在 “系统属性” 中配置 (单击“ 高级”,单击“ 性能”,然后单击“ 设置” 按钮) 。

用户经常问 我应该将页面文件设为多大? 这个问题没有单一的答案,因为它取决于已安装的 RAM 量以及工作负载需要多少虚拟内存。 如果没有其他可用信息,典型的建议是已安装 RAM 的 1.5 倍是一个很好的起点。 在服务器系统上,通常希望具有足够的 RAM,以便永远不会短缺,因此不会使用页面文件。 在这些系统上,它可能无法用于维护大型页面文件。 另一方面,如果磁盘空间充足,则维护大型页面文件 (例如,1.5 倍的已安装 RAM) 不会导致问题,这也就无需担心大小问题。

性能、体系结构限制和 RAM

在任何计算机系统上,随着负载 (用户数量的增加,工作量) 和性能下降,但以非线性方式。 负载或需求的任何增加(超过某个点)都会导致性能显著降低。 这意味着某些资源严重短缺,并已成为瓶颈。

在某些时候,无法增加供不应求的资源。 这意味着已达到 体系结构限制 。 Windows 中一些经常报告的体系结构限制包括:

  • 系统 (内核) 的 2 GB 共享虚拟地址空间
  • 每个进程 2 GB 的专用虚拟地址空间 (用户模式)
  • 660 MB 的系统 PTE 存储 (Windows Server 2003 及更早版本)
  • (Windows Server 2003 及更早版本的 470 MB 分页池存储)
  • (Windows Server 2003 及更早版本的 256 MB 非分页池存储)

这特别适用于 Windows Server 2003,但这也可能适用于 Windows XP 和 Windows 2000。 但是,Windows Vista、Windows Server 2008 和 Windows 7 并不都共享这些体系结构限制。 此处) 用户和内核内存 (数字 1 和 2 的限制相同,但内核资源(如 PTE 和各种内存池)是动态的。 此新功能支持分页和非分页内存。 这也使 PTE 和会话池能够增长到超出前面讨论的限制,达到整个内核耗尽的地步。

常用语句和引用语句,如下所示:

使用终端服务器时,在使用 4 GB RAM 之前,将完全使用 2 GB 的共享地址空间。

在某些情况下,情况可能如此。 但是,必须监视系统,以了解它们是否适用于特定系统。 在某些情况下,这些语句是来自特定Windows NT 4.0 或 Windows 2000 环境的结论,不一定适用于 Windows Server 2003。 对 Windows Server 2003 进行了重大更改,以降低实际达到这些体系结构限制的概率。 例如,内核中的某些进程已移动到非内核进程,以减少共享虚拟地址空间中使用的内存。

监视 RAM 和虚拟内存使用情况

性能监视器是用于监视系统性能和识别瓶颈位置的主要工具。 若要启动性能监视器,请单击“开始”,依次单击“控制面板”、“管理工具”,然后双击“性能监视器”。 下面是一些重要计数器及其告知的摘要:

  • 内存,提交字节数:此计数器是虚拟内存需求的度量值。

    这显示了进程分配了多少个字节,以及操作系统已将 RAM 页框架或页面槽提交到哪些页面文件 (,或者这两个) 。 随着 提交字节 数的增长大于可用 RAM,分页将增加,并且正在使用的页面文件大小也会增加。 在某些时候,分页活动开始显著影响性能。

  • 进程、工作集_Total:此计数器是 活动 使用的虚拟内存的度量值。

    此计数器显示需要多少 RAM,以便用于所有进程的虚拟内存都位于 RAM 中。 此值始终是 4,096 的倍数,即在 Windows 中使用的页面大小。 随着对虚拟内存的需求超出了可用 RAM,操作系统会调整进程的工作集中的虚拟内存量,以优化可用 RAM 使用情况并最大程度地减少分页。

  • 分页文件,正在使用的 %pagefile:此计数器是实际使用的页文件量度量值。

    使用此计数器可以确定页面文件的大小是否合适。 如果此计数器达到 100,则页面文件已满,并且将停止工作。 根据工作负荷的波动性,你可能希望页面文件足够大,以便不超过 50-075% 的使用情况。 如果使用大部分页面文件,则在不同的物理磁盘上拥有多个页文件可能会提高性能。

  • 内存,页数/秒:此计数器是最被误解的度量值之一。

    此计数器的高值不一定意味着性能瓶颈源于 RAM 短缺。 操作系统使用分页系统用于交换页面以外的目的,因为内存过度承诺。

  • 内存、页面输出/秒:此计数器显示每秒向页面文件写入多少个虚拟内存页,以便释放 RAM 页帧用于其他目的。

    如果怀疑分页是性能瓶颈,这是监视的最佳计数器。 即使提交的字节数大于已安装的 RAM,如果页面输出/秒低或大多数时间为零,也不会因 RAM 不足而出现明显的性能问题。

  • 内存、缓存字节数、内存、池非分页字节数、内存、池分页字节数、内存、系统代码总字节数、内存、系统驱动程序总字节数:

    这些计数器的总和是实际使用的 4-GB 虚拟地址空间共享部分 2 GB 的量。 使用它们来确定系统是否达到前面讨论的体系结构限制之一。

  • 内存、可用 MBytes:此计数器测量有多少 RAM 可用于满足新分配 (虚拟内存的需求,或者用于从页面文件) 还原页面。

    例如,当 RAM (不足时,提交字节数大于已安装的 RAM) ,操作系统将尝试通过将未处于活动状态的虚拟内存页复制到页面文件来保持已安装 RAM 的一部分可供立即使用。 因此,此计数器不会达到零,不一定能很好地指示系统是否缺少 RAM。

References

地址窗口化扩展