应用对象
Windows Server 2008 Service Pack 2 Windows Server 2008 Enterprise Windows Server 2008 Enterprise without Hyper-V Windows Server 2008 Datacenter Windows Server 2008 Datacenter without Hyper-V Windows Server 2008 Standard Windows Server 2008 Standard without Hyper-V

症状

假设您有一台计算机正在运行基于 x86 的 Windows 2008 Service Pack 2 (SP2) 版本。系统页表项 (Pte) 的使用率很高。在此情况下,系统虚拟地址空间变得用完,大量碎片。备注:

  • 发生此问题时,系统变得不稳定。

  • 此问题是由很少观察到驱动程序中的特定分配模式引起的。有关此特定分配模式的详细信息,请转到"原因"一节。当计算机处于不稳定状态,收集转储文件,请联系 Microsoft 客户服务和支持,以便进行分析。

  • 若要获得的系统虚拟地址和系统 Pte 的分段信息,您必须执行下列操作之一︰

    • 建立实时内核模式调试会话。

    • 建立本地内核模式调试会话。

    • 收集内核模式转储文件。

    可以使用以下内核调试器命令获取信息并建立会话︰

    • 运行以下命令,以显示总的可用空间,最大的内存块,并由各种内核内存资源 (如池和系统 Pte) 使用多少内存︰

      !vm 21 此命令返回的消息类似于以下内容︰

      14: kd> !vm 21*** Virtual Memory Usage ***   Physical Memory:     4191796 (  16767184 Kb)   Page File: \??\C:\pagefile.sys     Current:  17408000 Kb  Free Space:  17362464 Kb     Minimum:  17408000 Kb  Maximum:     17408000 Kb   Available Pages:      980816 (   3923264 Kb)   ResAvail Pages:      4005065 (  16020260 Kb)   Locked IO Pages:           0 (         0 Kb)   Free System PTEs:      55716 (    222864 Kb)   Modified Pages:        24737 (     98948 Kb)   Modified PF Pages:     24356 (     97424 Kb)   NonPagedPool Usage:    51445 (    205780 Kb)   NonPagedPool Max:     522998 (   2091992 Kb)   PagedPool 0 Usage:    169861 (    679444 Kb)   PagedPool 1 Usage:     24692 (     98768 Kb)   PagedPool 2 Usage:     19764 (     79056 Kb)   PagedPool 3 Usage:     19469 (     77876 Kb)   PagedPool 4 Usage:     20109 (     80436 Kb)   PagedPool Usage:      253895 (   1015580 Kb)   PagedPool Maximum:    523264 (   2093056 Kb)   Session Commit:        12273 (     49092 Kb)   Shared Commit:         37334 (    149336 Kb)   Special Pool:              0 (         0 Kb)   Shared Process:        22380 (     89520 Kb)   Pages For MDLs:            1 (         4 Kb)   PagedPool Commit:     253895 (   1015580 Kb)   Driver Commit:          3829 (     15316 Kb)   Committed pages:     3862488 (  15449952 Kb)   Commit limit:        8507657 (  34030628 Kb)   VA Type           CurrentUse  Peak      Limit          Failures    Unused  130 Mb       0 Mb   OPEN              0   SessionSpace         60 Mb      66 Mb   OPEN              0   ProcessSpace         16 Mb       0 Mb   OPEN              0   BootLoaded           26 Mb       0 Mb   OPEN              0   PfnDatabase         118 Mb     248 Mb   OPEN              0   NonPagedPool        208 Mb     210 Mb   OPEN              0   PagedPool          1096 Mb    1096 Mb   OPEN              0   SpecialPool           0 Mb       0 Mb   OPEN              0   SystemCache         140 Mb     992 Mb   OPEN              0    SystemPtes 214 Mb      222 Mb   OPEN              0   Hal                   4 Mb       0 Mb   OPEN              0   SessionGlobal        12 Mb      12 Mb   OPEN              0   Driver Images        24 Mb       0 Mb   OPEN              0   NPSpecialPool         0 Mb       0 Mb   OPEN              0   ProtoPTE Pool         0 Mb       0 Mb   OPEN              0    Maximum contiguous unused VA:    8 Mb 
    • 运行以下命令来显示有关系统 Pte 的信息︰

      !sysptes 1 此信息包括的数量和可用块的大小。此命令返回的消息类似于以下内容︰

      14: kd> !sysptes 1System PTE Information  Total System Ptes 88048    starting PTE: c0400000      free ptes: c0402c80   number free: 1.      free ptes: c0402ca8   number free: 1.      free ptes: c0408020   number free: 3.      free ptes: c0408098   number free: 4.      . . . 3755 entries cut  . . .      free ptes: c07ddd30   number free: 13.      free ptes: c07dddd8   number free: 4.      free ptes: c07dde18   number free: 4.      free ptes: c07dde58   number free: 1.      free ptes: c07dde80   number free: 26.      free ptes: c07ddf70   number free: 10.   free blocks: 3763    total free: 22432    largest free block: 89 

    在症状部分描述的问题发生时,由"CurrentUse"标记! vm 21命令会增加今后为"SystemPtes"类别。同时,在系统 Pte 的碎片,可以观察到通过查看"普通块"的价值,由! sysptes 1命令随着时间的推移。通过观察的"未使用"和"最大连续未使用的 VA"所返回的值,可以诊断耗尽和可用的内核虚拟地址空间碎片! vm 21命令。在内核模式转储文件中,不能观察到参数的变化随着时间的推移。

原因

此问题是由于设备驱动程序或内核模式代码分配和释放内存容量较大缓冲区 (I/O 缓冲区)。使用系统 Pte 实现这些类型的缓冲区。当分配大量的请求时,不是 2 兆字节 (MB) 的倍数时,系统 Pte 区域中会出现碎片。

解决方案

修补程序信息

安装此修复程序后,进行优化分配算法以减少碎片时特定的分配模式出现在一个或多个内核驱动程序。超过 2 MB 的系统 PTE 映射请求被舍入为 2 MB 的倍数以减少碎片。可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。此修复程序仅适用于遇到本文中描述的问题的系统。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。如果此修复程序可供下载,则在此知识库文章的顶部会出现“修补程序下载可用”部分。如果未显示此部分,请与 Microsoft 客户服务和支持部门联系以获取此修复程序。注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码的完整列表,或要创建单独的服务请求,请访问下面的 Microsoft 网站:

注意:"提供修补程序下载"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。

系统必备组件

要应用此修补程序,您必须在运行 Windows Server 2008 SP2。有关如何获取 Windows Server 2008 服务包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

如何为 Windows Server 2008 获取最新的服务包

注册表信息

若要应用此修补程序,您不必对注册表进行任何更改。

重启要求

应用此修补程序后,必须重新启动计算机。

修补程序替换信息

此修补程序不替代以前发布的修补程序。

此修复程序的全球版本将安装具有下表所列属性的文件。这些文件的日期和时间以协调世界时 (UTC) 列出。您的本地计算机上这些文件的日期和时间以您的本地时间加上当前夏令时 (DST) 偏差显示。此外,当您对文件执行某些操作时,日期和时间可能会更改。

Windows Server 2008 文件信息说明重要:相同的软件包中包含 Windows Vista 的修复程序和 Windows Server 2008 的修复程序。但是,只有"Windows Vista" 在修复程序请求页上列出。要请求到一个或两个操作系统的系统应用此修补程序包,请选择在"Windows Vista"页上列出的此修补程序。始终参考"适用于"一节文章,以确定每个修补程序适用于实际的操作系统。

  • 通过检查下表中显示的文件版本号,可以识别应用于特定产品、 SR_Level (RTM、 SPn) 和服务 (LDR、 GDR) 的分支的文件。

  • 清单文件 (.manifest) 和菊花安装的文件 (.mum) 为每个环境都是在"Windows server 2008 的其他文件信息"部分中单独列出。大文件和清单文件和关联的安全目录 (.cat) 文件,是极重要的维护更新组件的状态。对其属性没有列出的安全目录文件已签署 Microsoft 数字签名。

状态

Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

详细信息

有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

用来描述 Microsoft 软件更新的标准术语的说明

Windows Server 2008 的附加文件信息

对于所有其他文件支持的基于 x86 的 Windows Server 2008 的版本

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。