概要
详细信息
在现代操作系统 (例如 Windows)中,应用程序和许多系统进程始终使用虚拟内存地址来引用内存。虚拟内存地址自动硬件转换到现实 (RAM) 地址。只有操作系统内核的核心部分绕过此地址转换,并直接使用实际的内存地址。
虚拟内存总是要使用,即使所有正在运行的进程所需的内存不超过系统安装的 RAM 总量。
进程和地址空间
在 32 位版本的 Windows 下运行的所有进程 (例如,应用程序可执行文件) 都分配的虚拟内存地址 (一个虚拟地址空间),范围从 0 到 4294967295 (2 * 32-1 = 4 GB),无论多少 RAM 实际安装在计算机上。
在默认的 Windows 配置下,2 千兆字节 (GB)的虚拟地址空间会分配给每个进程私有使用,其他的2GB则被所有进程以及操作系统共享使用。通常情况下,应用程序 (例如,记事本,Word、 Excel 和Acrobat Reader) 使用仅 2 GB 的专用地址空间的一小部分。操作系统只向那些正在使用的虚拟内存页面分配物理内存页帧。
物理地址扩展 (PAE) 是英特尔 32 位体系结构扩展到 36 位的物理内存 (RAM) 地址的功能。PAE 不会更改虚拟地址空间的大小(仍为4 GB),而是改变处理器可寻址的物理内存(RAM)量。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
下面的列表介绍了的 RAM 的数量 (截止 2010 年 5 月) 支持不同的 Windows 版本和版本︰
Windows NT 4.0 | 4 GB |
Windows 2000 专业版 | 4 GB |
Windows 2000 标准服务器 | 4 GB |
Windows 2000 高级服务器 | 8 GB |
Windows 2000 数据中心版服务器 | 32 GB |
Windows XP 专业版 | 4 GB |
Windows Server 2003 Web 版 | 2 GB |
Windows Server 2003 标准版 | 4 GB |
Windows Server 2003 企业版 | 32 GB |
Windows Server 2003 数据中心版 | 64 GB |
Windows Vista | 4 GB |
Windows Server 2008 Standard | 4 GB |
Windows Server 2008 企业版 | 64 GB |
Windows Server 2008 数据中心版 | 64 GB |
Windows 7 | 4 GB |
页面文件
RAM 是有限的资源,而对于大多数实际的目的,是没有限制的虚拟内存。可以有多个进程,以及每个进程有自己 2 GB 的专用的虚拟地址空间。当现有的所有进程正在都使用的内存超出了可用的 RAM 时,操作系统将页 (4 KB 片) 的一个或多个虚拟地址空间移动到计算机的硬盘。这将释放 RAM 框架用于其他用途。在 Windows 系统中,这些"分页出"页存储在一个或多个文件 (Pagefile.sys 文件) 分区的根目录中的。每个磁盘分区中可以有一个这样的文件。在系统属性中配置的位置和大小的页面文件 (单击高级,单击性能,然后单击设置按钮)。用户经常询问"多大应该使页面文件?"有是这个问题没有一个答案,因为这取决于已安装的 RAM 的数量和多少虚拟内存的工作负荷需要。如果没有可用的其他信息,典型安装 ram 的 1.5 倍以上的建议是很好的起点。在服务器系统中,通常需要具有足够的 RAM,以便永远不会短缺,并且基本上未使用的页面文件。对于这些系统,它可能会提供任何有用的用途,要维护真正大的页面文件。另一方面,如果磁盘空间充足,维持较大的页面文件 (例如,安装 RAM 的 1.5 倍) 不原因的问题,和这也无需担心通过使它的大小。
性能、 结构限制和 RAM
在任何计算机系统上,随着负载的增加 (用户数,工作的量),性能有所下降,但以非线性的方式。负载或超过某个特定点的需求有增加会导致性能显著降低。这意味着某些资源处于严重短缺,已经成为一个瓶颈。在某些时候,短缺的资源不能增加。这意味着已达到为体系结构的限制。在 Windows 中的一些经常报告体系结构限制如下所示︰
- 2 GB 的系统 (内核) 的共享虚拟地址空间
- 2 GB 的专用的虚拟地址空间,每个进程 (用户模式)
- 660 MB 的系统 PTE 存储 (Windows Server 2003 及更早版本)
- 470 MB 的页面缓冲的池存储 (Windows Server 2003 及更早版本)
- 256 MB 的非页面缓冲的池存储 (Windows Server 2003 及更早版本)
经常发现并引用语句,如下所示︰
监视内存和虚拟内存的使用情况
性能监视器是原则的工具来监视系统性能和识别瓶颈的位置。要启动性能监视器,请单击开始,单击控制面板,单击管理工具,然后双击性能监视器。以下是一些重要的计数器和他们告诉您的摘要︰- 内存、 提交字节︰ 此计数器是一种虚拟内存的需求。
这将显示所分配的字节数内存页面框架或页面文件 (或可能是两个) 中的页槽的进程并向其承诺操作系统。随着提交的字节数的增长大于可用的 RAM,页面将会增加,并正在使用的页面文件大小也会增加。在有些情况下,分页活动开始显著地影响性能。 - 进程工作集、 _Total︰ 此计数器是在"活动"使用的虚拟内存量。
此计数器显示多少 RAM 是必需的以便为所有进程正在使用的虚拟内存是在 RAM 中。此值始终是在 Windows 中使用的页面大小是 4096,倍数。对虚拟内存将增加超过可用的 RAM 需求,作为操作系统调整进程的虚拟内存中有多少是在其工作集大小以优化可用 RAM 使用并最小化分页。 - 分页文件,在使用 %页面文件︰ 此计数器是一种多少页面文件的实际使用。
使用此计数器以确定页面文件是否为适当的大小。如果此计数器达到 100 时,页面文件已满,并且操作将停止工作。这取决于您的工作负载的变动性,您可能希望页面文件大以便它通常是用不超过 50-075%。如果正在使用多页文件,则有多个不同的物理磁盘上可以提高性能。 - 内存,页数/秒表示︰ 此计数器是最容易产生误解的措施之一。
此计数器的值很高并不一定意味着性能瓶颈起源于 RAM 不足。操作系统用于非换页内存过度承诺由于使用分页系统。 - 内存、 页输出/秒︰ 此计数器显示多少个虚拟内存页面写入页面文件以释放用于其他目的的内存页帧每秒。
这是最佳的计数器来监视如果您怀疑分页是性能瓶颈。即使提交的字节数大于所安装的 RAM,如果页输出/秒是低或零大多数情况下,从 RAM 不足没有显著的性能问题。 - 内存,缓存字节数
内存,非分页池字节,
内存、 分页缓冲池字节为单位,
内存,系统代码的总字节数,
内存,系统的驱动程序的总字节数︰
这些计数器的总和是多少 4 GB 的虚拟地址空间的共享部分 2GB 实际使用的度量值。使用这些选项来确定是否您的系统将达到讨论前面讨论过的体系结构限制之一。 - 内存、 可用的兆字节数︰ 这个计数器衡量将多少 RAM 可满足虚拟内存的需求 (或者新的分配,或从页面文件还原页面)。
当 RAM 简而言之是供应 (例如,提交字节数大于已安装的内存),操作系统将尝试通过复制没有页面文件处于使用中的虚拟内存页面保留一部分安装的 RAM 可供立即使用。因此,此计数器将达到零,并不一定表示您的系统是否充足的 RAM。
- Microsoft Windows 内部,第四个版本︰ Microsoft Windows Server™ 2003、 Windows XP 和 Windows 2000
- AskPerf 博客︰ 解决内存问题的概述
- AskPerf 博客︰ 内存管理-x86 虚拟地址空间
- AskPerf 博客︰ 解决内存问题的概述
- AskPerf 博客︰ 概述解决内存问题的第二部分
- AskPerf 博客︰ 内存管理-Demystifying 3 GB
- Microsoft 知识库文章177415 ︰ 如何使用内存池监视器 (Poolmon.exe) 来解决内核模式内存泄漏
- Microsoft 知识库文章294418 ︰ 用于 64 位版本的 Windows XP 和 Windows Server 2003 的 32 位和 64 位内存体系结构的比较
- http://blogs.technet.com/askperf/archive/2008/02/07/ws2008-memory-management-dynamic-kernel-addressing-memory-priorities-and-i-o-handling.aspx
- 在 Windows 2000 中的英特尔物理地址扩展 (PAE)
http://support.microsoft.com/default.aspx?scid=kb;EN-US; 268363 - 大内存支持是 Windows Server 2003 和 Windows 2000 服务器中可用
http://support.microsoft.com/default.aspx?scid=kb;en-us;283037 - 4 GB RAM 调试功能和物理地址扩展参数的说明
http://support.microsoft.com/default.aspx?kbid=291988 - 地址窗口化扩展
http://msdn2.microsoft.com/en-us/library/Aa366527.aspx - 内存支持和 Windows 操作系统
http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx