System virtual address space becomes exhausted or fragmented on an x86-based version of Windows Server 2008 SP2

Symptoms

Assume that you have a computer that is running an x86-based version of Windows Server 2008 Service Pack 2 (SP2). The usage of the system Page Table Entries (PTEs) is high. In this situation, the system virtual address space becomes exhausted and highly fragmented.

Notes

  • When this issue occurs, the system becomes unstable.

  • This issue is caused by a particular allocation pattern that is rarely observed in drivers. For more information about this particular allocation pattern, go to the "Cause" section. Collect a dump file when the computer is in an unstable state, and then contact Microsoft Customer Service and Support for analysis.

  • To obtain information about the fragmentation of the system virtual address and the system PTEs, you have to perform one of the following operations:

    • Establish a live kernel-mode debugging session.

    • Establish a local kernel-mode debugging session.

    • Collect kernel-mode dump files.

    You can use the following kernel debugger commands to establish the session and obtain information:

    • Run the following command to display total available space, the largest memory block, and how much memory that is used by various kernel memory resources (such as pools and system PTEs):

      !vm 21 The message that is returned by this command resembles the following:





      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
    • Run the following command to display information about the system PTEs:

      !sysptes 1 This information includes the number and size of free blocks. The message that is returned by this command resembles the following:

      14: kd> !sysptes 1
      System 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

    When the issue that is described in the Symptoms section occurs, the "CurrentUse" indicator that is returned by the !vm 21 command increases over time for the "SystemPtes" category. At the same time, fragmentation in the system PTEs can be observed by viewing the value of "free blocks" that is returned by the !sysptes 1 command over time.

    The exhaustion and fragmentation of available kernel virtual address space can be diagnosed by observing the values of "Unused" and "Maximum contiguous unused VA" that are returned by theĀ !vm 21 command.

    Variations of the parameters over time cannot be observed in kernel-mode dump files.

Cause

This issue occurs because a device driver or kernel-mode code allocates and releases large memory buffers (I/O buffers). These kinds of buffers are implemented by using the system PTEs. When a large allocation that is requested is not a multiple of 2 megabytes (MB), fragmentation occurs within the system PTEs area.

Resolution

Hotfix information

After you install this hotfix, the allocation algorithm is optimized to reduce fragmentation when the particular allocation pattern occurs in one or more kernel drivers. System PTE mapping request that is larger than 2 MB is rounded to a multiple of 2 MB in order to reduce fragmentation.


A supported hotfix is available from Microsoft. However, this hotfix is intended to correct only the problem that is described in this article. Apply this hotfix only to systems that are experiencing the problem described in this article. This hotfix might receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next software update that contains this hotfix.

If the hotfix is available for download, there is a "Hotfix download available" section at the top of this Knowledge Base article. If this section does not appear, contact Microsoft Customer Service and Support to obtain the hotfix.

Note If additional issues occur or if any troubleshooting is required, you might have to create a separate service request. The usual support costs will apply to additional support questions and issues that do not qualify for this specific hotfix. For a complete list of Microsoft Customer Service and Support telephone numbers or to create a separate service request, visit the following Microsoft website:

http://support.microsoft.com/contactus/?ws=supportNote The "Hotfix download available" form displays the languages for which the hotfix is available. If you do not see your language, it is because a hotfix is not available for that language.

Prerequisites

To apply this hotfix, you must be running Windows Server 2008 SP2.

For more information about how to obtain a Windows Server 2008 service pack, click the following article number to view the article in the Microsoft Knowledge Base:

968849How to obtain the latest service pack for Windows Server 2008

Registry information

To apply this hotfix, you do not have to make any changes to the registry.

Restart requirement

You must restart the computer after you apply this hotfix.

Hotfix replacement information

This hotfix does not replace a previously released hotfix.

The global version of this hotfix installs files that have the attributes that are listed in the following tables. The dates and the times for these files are listed in Coordinated Universal Time (UTC). The dates and the times for these files on your local computer are displayed in your local time together with your current daylight saving time (DST) bias. Additionally, the dates and the times may change when you perform certain operations on the files.

Windows Server 2008 file information notesImportant Windows Vista hotfixes and Windows Server 2008 hotfixes are included in the same packages. However, only "Windows Vista" is listed on the Hotfix Request page. To request the hotfix package that applies to one or both operating systems, select the hotfix that is listed under "Windows Vista" on the page. Always refer to the "Applies To" section in articles to determine the actual operating system that each hotfix applies to.

  • The files that apply to a specific product, SR_Level (RTM, SPn), and service branch (LDR, GDR) can be identified by examining the file version numbers as shown in the following table.

    Version

    Product

    SR_Level

    Service branch

    6.0.600
    2.
    23xxx

    Windows Server 2008

    SP2

    LDR

  • The MANIFEST files (.manifest) and the MUM files (.mum) that are installed for each environment are

    listed separately in the "Additional file information for Windows Server 2008" section. MUM files and MANIFEST files, and the associated security catalog (.cat) files, are extremely important to maintaining the state of the updated component. The security catalog files, for which the attributes are not listed, are signed with a Microsoft digital signature.

For all supported x86-based versions of Windows Server 2008

File name

Csrsrv.dll

File version

6.0.6002.23131

File size

49,152

Date (UTC)

01-Jun-2013

Time (UTC)

02:51

Platform

x86

File name

Ntkrnlpa.exe

File version

6.0.6002.23131

File size

3,606,376

Date (UTC)

01-Jun-2013

Time (UTC)

03:22

Platform

Not applicable

File name

Ntoskrnl.exe

File version

6.0.6002.23131

File size

3,555,176

Date (UTC)

01-Jun-2013

Time (UTC)

03:22

Platform

Not applicable

File name

Smss.exe

File version

6.0.6002.23131

File size

64,512

Date (UTC)

01-Jun-2013

Time (UTC)

01:26

Platform

x86


Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

More Information

For more information about software update terminology, click the following article number to view the article in the Microsoft Knowledge Base:

824684Description of the standard terminology that is used to describe Microsoft software updates

Additional file information for Windows Server 2008

Additional files for all supported x86-based versions of Windows Server 2008

File name

File version

File size

Date

Time

Platform

X86_microsoft-windows-csrsrv_31bf3856ad364e35_6.0.6002.23131_none_cbd7c528bbb914f7.manifest

Not applicable

3,079

01-Jun-2013

03:40

Not applicable

X86_microsoft-windows-os-kernel_31bf3856ad364e35_6.0.6002.23131_none_6e80efc3ca7e8596.manifest

Not applicable

17,806

01-Jun-2013

03:41

Not applicable

X86_microsoft-windows-r..gistry-trustedtypes_31bf3856ad364e35_6.0.6002.23131_none_864e87b644c39030.manifest

Not applicable

7,654

01-Jun-2013

03:36

Not applicable

X86_microsoft-windows-smss_31bf3856ad364e35_6.0.6002.23131_none_ae8b36202f8d12e8.manifest

Not applicable

28,589

01-Jun-2013

03:41

Not applicable


Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×