内存占用情况评估结果
本主题有助于解释内存占用情况评估生成的指标。 本主题还提供有关如何使用结果识别和解决一些对客户体验产生负面影响的常见问题的指导。 内存是一项关键资源,优化内存使用量可确保用户体验一致且响应迅速。
此评估在 Windows 8 或 Windows 10 的各类系统重启期间以及在“开始”屏幕出现后立即创建内存快照。 此评估不会在普通计算机操作期间评估内存使用。 但是,可以使用内存占用情况评估结果来了解在启动应用程序之前如何使用内存。 许多进程和服务始终处于使用中状态,并占用内存。 此评估有助于了解始终运行的驱动程序和应用程序如何影响启动过程。
注意:要评估的计算机应安装零售版本的驱动程序,以准确了解内存分配情况。
本主题内容:
有关此评估、系统要求和评估设置的更多信息,请参阅内存占用情况。
目标文件
可以在结果视图中创建自定义目标来衡量改进。 目标文件是一种分类工具,有助于了解电脑的性能并比较企业中的电脑。
例如,基本款笔记本电脑的目标可能与为高端台式计算机设定的目标不同,或者市场预期可能会发生变化,而您希望随着时间的推移和技术的进步灵活地定义不同的目标和关键要求。
将某个度量值与该度量的目标进行比较时,状态在结果视图中以颜色编码,如下所示:
浅紫色表示该系统的用户体验出色,并且没有已知的问题。
淡紫色表示用户体验尚可,并且可以优化系统。 查看建议和分析,了解可以对系统进行哪些改进。 这些更改可能是软件更改、配置更改或硬件更改。
深紫色表示该系统的用户体验较差,并且还有很大的改进空间。 查看建议和分析,了解可以对系统进行哪些改进。 这些更改可能是软件更改、配置更改或硬件更改。 您可能必须考虑进行权衡,以提供高质量的 Windows 体验。
无颜色表示没有为度量值定义目标。
注意 在适用于 Windows 8 的 Windows 评估工具包中,某些评估包括默认目标文件。 第一次使用此版本的工具查看结果时,将使用默认目标文件。 但是,也可以按照与 Windows 8.1 和 Windows 10 相同的方式为 Windows 8 定义自定义目标。
可以设置目标文件位置并将目标文件添加到该位置,然后才能使用 UI 应用自定义目标。 选择目标文件后,它将继续作为目标文件,用于任何打开的结果。
一次只能使用一个目标文件。 所有评估的目标都在单个目标文件中设置。 评估工具将按以下顺序搜索目标:
自定义目标文件
结果文件中定义的目标
评估清单中定义的目标
可以使用 %PROGRAMFILES%\Windows Kits\10\Assessment and Deployment Kit\Windows Assessment Toolkit\SDK\Samples\Goals 中提供的示例目标文件来创建自己的目标文件。
注意 不能将目标文件打包为作业,但可以将它存储在共享中供其他人使用。
指标
各种因素会影响计算机的内存使用情况。 这些因素包括体系结构、物理内存、操作系统版本、图形配置、计算机类、语言和网络连接。 内存占用情况指程序运行时使用或引用的物理内存量。 内存占用情况包括以下各项:
二进制文件、动态链接库 (DLL) 加载到内存中的其他可执行文件
动态分配,包括堆/VA
驱动程序分配,主要在池、符号表和堆栈中
通过了解计算机的内存占用情况,可以确定提高性能和效率的方法。 优化内存可创建更高效且可缩放的操作系统,增加可用于应用程序和进程的内存,并在增加或扩展的工作负荷下提高性能。
此评估侧重于以下系统内存使用情况:
在启动期间为分页池、非分页池和驱动程序锁定页提供的驱动程序分配。
由启动应用程序、反病毒程序和其他软件进行的动态分配。 当系统稳定后,这些在启动后保留在内存中。
优化使用中内存
内存使用会影响性能,因为计算机能够访问的代码和数据比物理内存能够访问的更多。 例如:
总物理内存是系统的 RAM 总量。
可用内存是此 RAM 的一部分,在所需的系统和启动应用程序加载到内存中后,可供用户应用程序使用的部分。
使用中的内存包含启动完成且桌面或“开始”屏幕显示时运行的所有内容。
内存占用情况评估枚举了使用中内存的内容,以帮助驱动程序制造商和系统构建者优化正在创建的计算机的系统性能。 该评估突出显示了驱动程序和启动应用程序的内存分配。
使用中的内存不仅包括 Windows 系统进程。 可以使用此评估来了解启动后内存中的内容。 然后,可以尝试降低或消除工作集、非分页内存和修改页类别中的一些不必要或过多的内存分配。 优化使用中内存量会将释放的内存移动到可用内存类别。 这会增加可用和备用类别中的内存数量。 下表介绍了这些类别。
总内存类别 | 内存使用的子类别 |
---|---|
总内存量 |
使用中的内存 + 可用内存 |
使用中的内存 |
工作集 + 非分页内存 + 修改页 |
可用内存 |
备用内存 + 可用内存 |
内存占用情况评估提供的内存占用情况说明比任务管理器更详细。
此评估生成的指标显示系统内存使用情况的定量概述。 其中一些指标具有额外的内存参数,可通过展开“分组依据”下拉列表来显示这些参数。 以下指标在内存占用情况评估期间进行度量。
可用内存
可用内存(以兆字节总数为单位),如启动任务管理器所示。 可用内存指从总内存中减去使用中内存。 这包括可用内存、备用内存和备用列表中的页。
使用中的内存
不可分页内存(以兆字节为单位)与进程工作集或已修改工作集中的任何分配的总和。
备用内存
备用内存(以兆字节为单位)。 备用内存在应用程序需要时可用。 备用页的值是内存中但不处于活动状态的缓存数据和文件的数量。
内存总量
总可用内存(以兆字节为单位),如启动任务管理器所示。 总页数的值是操作系统分配其共享后可见的 RAM。
驱动程序分页分配
最适用对象:驱动程序开发人员、OEM
驱动程序开发人员可以通过驱动程序的实现方式影响此数字。 OEM 可以通过在系统中添加或删除设备来影响此数字。
这是由驱动程序分配的、由分页文件支持的内存。 这意味着,可以将内存换出到磁盘,以便为某些其他代码或数据腾出空间,然后通过硬故障进行检索。 此指标仅为驱动程序分配的数据,不包括将驱动程序加载到内存中所需的内存空间。 有关可分页代码的详细信息,请参阅驱动程序分页代码。
详细子指标
此评估会根据这些内存分配所在的会话对其进行细分。 系统将会话 0 用于系统服务和进程。 第一个用户会话是会话 1。 非会话包含与任何单个会话无关的系统分配。
典型影响因素
OEM 可以通过换出驱动程序内存要求较低的硬件或软件来影响此指标。 此外,OEM 还可以减少系统上的设备的数量。 OEM 应知道系统上有哪些驱动程序以及它们使用的内存。
分析和修正步骤
驱动程序供应商对此指标的影响最大,方式是驱动程序设计。 提供系统中所有驱动程序所需的分配列表。 此外,还可以向驱动程序供应商提供 WPA 跟踪(存储在与评估结果相同的目录中),以用于此评估。 它们可用于查找适用于调查减少内存使用的大量内存分配区域。
驱动程序非分页分配
最适用对象:驱动程序开发人员、OEM
驱动程序开发人员可以通过驱动程序的实现方式影响此数字。 OEM 可以通过在系统中添加或删除设备来影响此数字。
此指标类似于分页分配,但这些分配使用的物理内存无法分页。这反映了固定的物理内存,因此无法用于分页内存或其他进程和服务使用。 获取过多的非分页内存会减少页支持内存可使用的内存量。
对于驱动程序的数据结构,有时需要非分页内存分配,该结构需要在执行中断服务例程 (ISR) 和延迟过程调用 (DPC) 期间访问。 ISR 和 DPC 是与硬件中断相关的功能,在执行这些功能时,页面错误不会出现。 因此,驱动程序需要在非分页池中分配这些数据结构以避免任何崩溃。
详细子指标
子指标 | 说明 |
---|---|
驱动程序锁定系统页 |
这是从分页内存加载并由驱动程序锁定的内存,直到其不再有用。 偶尔使用的调制解调器就是这样的一个例子。 在使用此设备之前,为此设备加载任何代码都没有意义,然后需要锁定一些代码和数据,从而无法将其分页。 |
系列 |
这是非分页连续内存。 必须锁定内核地址空间中加载的某些代码,以便不会将其分页。这是驱动程序中错误的常见来源。 系统需要能够响应硬件中断,而生成的代码路径不必转到分页文件。 驱动程序锁定系统页指内存描述符列表 (MDL)。 MDL 是一个系统定义的结构,它通过一组物理地址描述缓冲区。 执行直接 I/O 的驱动程序从 I/O 管理器接收指向 MDL 的指针,并通过 MDL 读取和写入数据。 某些驱动程序在执行直接 I/O 以满足设备 I/O 控制请求时也使用 MDL。 当 Microsoft Windows 内存管理器为设备读取的 MDL 构建 MDL 时,它会锁定用于传输目标的物理页面。 但是,完全由内存管理器决定要保留和丢弃哪些页(如有)。 |
EX |
这是在为执行代码而保留的内存区域中分配的可执行非分页池内存。 |
NX |
引入了一种非分页缓冲池,其不可执行(NX 池)。 由于它不是可执行文件,因此比可执行的非分页池(NP 池)安全性更高,可提供更好的防范溢出攻击。 |
典型影响因素
OEM 可以通过换出具有较低内存要求的硬件或软件驱动程序来影响此指标。
分析和修正步骤
驱动程序供应商对此指标的影响最大,方式是驱动程序设计。 在 Windows 评估控制台中显示的结果中查找大型内存分配。 此外,还可以向驱动程序供应商提供 WPA 跟踪(存储在与评估结果相同的目录中),以查找适合用于调查减少内存使用量的大量内存分配区域。
驱动程序分页代码
最适用对象:驱动程序开发人员、OEM
驱动程序供应商对此指标的影响最大。 OEM 可以通过换出具有较低内存要求的硬件和软件驱动程序来影响此指标。
这是为驱动程序分页代码分配的内存。 这种情况越多,其中一些就越有可能被分页到磁盘,需要硬故障才能在需要时将其恢复。 这可能会对用户体验产生显著的影响。 此外,高内存分配可能会导致操作系统页出常用的可分页代码。 分页越多,发生硬故障以恢复常用代码的风险就越大。
详细子指标
这是二进制文件和分配的内存量(以千字节为单位)的列表。 通过右键单击“大小”标题,然后选择“降序排序”,可以按大小对列表进行排序。
典型影响因素
OEM 可以通过换出具有较低内存要求的硬件或软件驱动程序来影响此指标。
分析和修正步骤
驱动程序供应商对此指标的影响最大,方式是驱动程序设计。 在 Windows 评估控制台中显示的结果中查找大型内存分配。 此外,还可以向驱动程序供应商提供 WPA 跟踪(存储在与评估结果相同的目录中),以查找适合用于调查减少内存使用量的内存分配区域。 OEM 应考虑更换设备或获取更新驱动程序。
驱动程序非分页代码
最适用对象:驱动程序开发人员、OEM
驱动程序供应商对此指标的影响最大。 OEM 可以通过换出具有较低内存要求的硬件驱动程序来影响此指标。
此指标是正在分配且无法换出到页面文件的内存量。 这包括为代码分配的内存,而不是为数据分配的内存。 这反映了永久使用的物理内存,因此对于分页内存不可用。
详细子指标
这是二进制文件和分配的内存量(以千字节为单位)的列表。 通过右键单击“大小”标题,然后选择“降序排序”,可以按大小对列表进行排序。
典型影响因素
OEM 可以通过换出具有较低内存要求的硬件或软件驱动程序来影响此指标。
分析和修正步骤
驱动程序供应商对此指标的影响最大,方式是驱动程序设计。 在 Windows 评估控制台中显示的结果中查找大型内存分配。 此外,还可以向驱动程序供应商提供 WPA 跟踪(存储在与评估结果相同的目录中),以查找适合用于调查减少内存使用量的内存分配区域。
处理专用页面
最适用对象:OEM
OEM 可以通过减少“始终运行”应用程序(“运行”注册表项或“开始”文件夹中的应用程序)的数量来影响此指标。 OEM 应查找其在初始 Microsoft 映像上添加的软件。
内存为共享或非共享(即私有)。 如何通过分配或内存支持文件分配内存并不重要。 例如,如果打开两个 Microsoft Word 文档,则某些内存(代码)可以在两个实例之间共享,因为应用程序相同。 但 Word 文档中的数据是不同的,因此每个实例都需要为其分配专用内存。 “处理专用页面”指标显示向下钻取中列出的每个二进制组件分配的专用内存量。 此指标不包括共享内存。
共享内存是分配并指派给进程的内存。 如果内核收到此内存的新请求,则只需重新使用已分配的内存,就可以快速响应。 但这必须是只读内存块,才能保持其状态为“共享”。 一旦其中某个进程想要写入共享内存,则必须分配一个新块,并且内核将新块用于“写入”请求。 无论写入多少内存,内核都必须为请求分配至少一个内存块。 因此,即使要将一字节写入共享内存,内核也会处理内存块,因此需要分配 4KB 的块。
详细子指标
子指标 | 说明 |
---|---|
活动 |
这是二进制文件及其对使用中总内存的贡献的列表。 此内存处于活动状态。 |
Standby |
这是二进制文件及其对使用中总内存的贡献的列表。 此内存位于备用列表中,即仍在物理内存中但已标记为不再需要的内存。 此内存将首先被内存管理器分页的新内存替换,或者根据需要移回活动列表。 |
典型影响因素
OEM 可以通过换出具有较低内存要求的软件驱动程序来影响此指标。
分析和修正步骤
驱动程序和软件供应商通过其设计代码的方式对此指标的影响最大。 在 Windows 评估控制台中显示的结果中查找大型内存分配。 此外,还可以向软件供应商提供 WPA 跟踪(存储在与评估结果相同的目录中),以查找适合用于调查减少内存使用量的内存分配区域。 仔细分析分配(即使是小型分配)有助于开发人员找到增加的分配。
二进制文件(使用中)
最适用对象:OEM
OEM 可以通过在系统中添加或删除设备来影响此数字。 此外,某些软件和服务使用内核模式驱动程序。 在启动路径中查找软件,或始终运行软件和服务。 软件本身可能不会显示大型内存分配,但进程将具有可能有大型内存需求的依赖项。
这是已分配内存供其使用的二进制文件的列表。 这是查看其他指标中显示的数据的另一种方法。 这是与特定二进制文件关联的所有分配。
详细子指标
子指标 | 说明 |
---|---|
活动 |
这是二进制文件及其对使用中总内存的贡献的列表。 此内存正在使用。 |
Standby |
这是二进制文件及其对使用中总内存的贡献的列表。 此内存位于备用列表中,即仍在物理内存中但已标记为不再需要的内存。 此内存将首先被内存管理器分页的新内存替换,或者根据需要移回活动列表。 |
典型影响因素
OEM 可以通过换出具有较低内存要求的硬件或软件驱动程序来影响此指标。 此外,OEM 还可以减少系统上的设备的数量。
分析和修正步骤
驱动程序供应商对此指标的影响最大,方式是驱动程序设计。 在 Windows 评估控制台中显示的结果中查找大型内存分配。 此外,还可以向驱动程序供应商提供 WPA 跟踪(存储在与评估结果相同的目录中),以查找适合用于调查减少内存使用量的内存分配区域。
Map Files
最适用对象:OEM、软件供应商
OEM 可以通过在系统中添加或删除设备来影响此数字。 此外,某些软件和服务使用内核模式驱动程序。 软件供应商可以通过查找实现不使用内存映射文件的功能的其他方法来影响此指标。
这是使用内存映射 I/O 的二进制文件列表。 这是与特定二进制文件关联的所有内存映射内存。 它包括与特定二进制文件关联(共享或不共享)的代码和数据。 大型内存映射文件可能会对性能产生负面影响。
详细子指标
子指标 | 说明 |
---|---|
活动 |
这是二进制文件及其对使用中总内存的贡献的列表。 此内存正在使用。 |
Standby |
这是二进制文件及其对使用中总内存的贡献的列表。 此内存位于备用列表中,即仍在物理内存中但已标记为不再需要的内存。 此内存将首先被内存管理器分页的新内存替换,或者根据需要移回活动列表。 |
典型影响因素
OEM 可以通过换出具有较低内存要求的硬件或软件驱动程序来影响此指标。 此外,OEM 还可以减少系统上的设备的数量。 请考虑减少一次运行的唯一进程数。
分析和修正步骤
映射到磁盘上某个位置的大型内存分配无法参与内存管理器提供的任何优化。 驱动程序供应商对此指标的影响最大,方式是驱动程序设计。 在 Windows 评估控制台中显示的结果中查找大型内存分配。 此外,还可以向驱动程序供应商提供 WPA 跟踪(存储在与评估结果相同的目录中),以查找适合用于调查减少内存使用量的内存分配区域。
问题
没有为内存占用情况评估生成特定问题。 此评估仅提供有助于分析内存值的指标,因为不同系统配置中显示的结果可能不同。 此评估的最佳用途是识别使用过多内存的驱动程序、进程或应用程序。 还可使用此评估来比较两台或多台计算机之间的内存占用情况。
注意:此评估使用符号确保其结果将驱动程序内存显示为驱动程序分配,而不是内核分配。 如果不使用符号,评估分析可能会错误地标识内存分配源。 有关缺少符号和评估准确性的详细信息,请参阅常见的“深入分析”问题。
评估报告退出代码 0x80050006
当维护任务已在电脑上注册但在评估运行之前尚未完成时,会发生此错误。 这会阻止评估运行,因为维护任务通常会影响评估指标。
若要解决此问题,请执行以下操作之一:
请确保计算机已连接到网络并使用交流电源运行。 在权限提升的提示符下使用以下命令,手动启动挂起的维护任务:
rundll32.exe advapi32.dll,ProcessIdleTasks
在运行评估之前,请禁用常规和空闲维护任务,并停止所有维护任务。
驱动程序和软件供应商推荐
使用执行作业所需的最小内存。
仅在需要时加载所需的内存,并在完成后立即释放。
了解加载内存和使用相应 API 的各种方法。
确定驱动程序代码或数据是否需要在物理 RAM 中驻留,或者是否允许其置入和移出分页。
了解分页文件、工作原理及其对方案的影响。
请不要创建为多个设备提供服务的整体式驱动程序。 使驱动程序保持较小状态,并使其仅解决对应服务设备的问题。
OEM 推荐
在部署之前,请参阅在干净映像之上安装的驱动程序和软件的影响。
请咨询您的驱动程序和软件供应商,了解其软件的最新版本,以查看能否减少对内存的影响。
请考虑使用其他驱动程序或软件供应商,以获得对系统内存影响较小的类似功能。