Microsoft KB Archive/329075

From BetaArchive Wiki

Article ID: 329075

Article Last Modified on 10/30/2006



APPLIES TO

  • Microsoft Windows 2000 Service Pack 1
  • Microsoft Windows 2000 Service Pack 3
  • Microsoft Windows 2000 Service Pack 2
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Advanced Server



This article was previously published under Q329075

Important This article contains information about how to modify the registry. Make sure to back up the registry before you modify it. Make sure that you know how to restore the registry if a problem occurs. For more information about how to back up, restore, and modify the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows registry


SYMPTOMS

When you use dynamic disks, you may receive the following Dmio event log entries, which may lead to data corruption, database corruption, or file system corruption on one or more dynamic disk volumes, or may cause application failures:

Event Type: Information
Event Source:   dmio
Event Category: None
Event ID:   29
Date:       MM/DD/YYYY
Time:       HH:MM:SS AM/PM
User:       N/A
Computer:       Computer_Name
Description:
dmio: Harddisk9 read error at block 445136247: status 0xC000009A 


Event Type: Warning
Event Source:   dmio
Event Category: None
Event ID:   35
Date:       MM/DD/YYYY
Time:       HH:MM:SS AM/PM
User:       N/A
Computer:       Computer_Name
Description:
dmio: Disk Harddisk9 block 445136247 (mountpoint F:): Uncorrectable read error 


Event Type: Information
Event Source:   dmio
Event Category: None
Event ID:   30
Date:       MM/DD/YYYY
Time:       HH:MM:SS AM/PM
User:       N/A
Computer:       Computer_Name
Description:
dmio: Harddisk2 write error at block 411779656: status 0xC000009A
                


NOTES

  • The Status code is always 0xC000009A - STATUS_INSUFFICIENT_RESOURCES, and the block numbers vary.
  • Although Ftdisk.sys is used for basic disks, Windows 2000 does not report similar events under the same circumstances, so lack of PTE resources may also cause volume corruption or data corruption on basic disks.


CAUSE

This problem occurs because of a combination of conditions or factors, which include:

  • The computer uses the /3GB setting in the Boot.ini file. This setting substantially reduces the total number of Page Table Entries (PTEs) that are available to the kernel.
  • The computer uses a storage adapter that can handle many simultaneous requests (up to 0xFF - 255 decimal).
  • The storage adapter driver must map a buffer for each request that the SCSI miniport dispatches. When the SCSI miniport dispatches a high number of large requests, the system runs out of PTEs.
  • The storage stack on Windows 2000 does not guarantee forward progress under memory pressure.

The failures occur after the following sequence:

  1. An application sends the adapter a very large I/O request.
  2. The class driver splits up this request based on the maximum transfers the adapter can handle.
  3. For each piece of the request that the class driver sends to the port driver, the class driver sends an I/O request packet (IRP) by using the original MDL that represents the whole buffer.
  4. The port driver maps the whole buffer for each of these pieces.
  5. Because the adapter can handle many requests and also maps redundant copies of these large buffers, the system eventually runs out of PTE resources.


RESOLUTION

To resolve this problem, use one of the following methods:

Method 1: Modify the Registry

Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall your operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.
Reduce the concurrent I/O requests that are permitted by the mass storage controller. To do this, follow these steps:

  1. Start Registry Editor.
  2. Locate and then click the following registry entry, where Storage_Driver_Name is the name of the miniport driver, such as AIC78xx:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Storage_Driver_Name\Parameters\Device\NumberOfRequests

  3. Modify the REG_DWORD value for the NumberOfRequests entry. To do this, reduce the number to between 16 and 255 decimal. This number represents the maximum number of outstanding requests on a bus. Use this adjustment sparingly because the per-request storage allocations consume non-paged memory.

    Note None of the drivers that are included with Windows 2000 use that key, and if the key is not present, the number of simultaneous requests defaults to 0x10 (16 decimal).

For more information about modifying this registry key, click the following article number to view the article in the Microsoft Knowledge Base:

240314 INFO: Restriction on the Number of Concurrent I/O Requests Setting


Method 2: Modify the Boot.ini File

Remove the /3GB switch from the Boot.ini file, and then restart the computer.

Method 3: Use the /USERVA Switch in the Boot.ini File (Windows 2003 only)

For more information about how to use the /USERVA switch in the Boot.ini file, click the following article number to view the article in the Microsoft Knowledge Base:

316739 How to Use the /USERVA Switch in the Boot.ini File to Tune /3GB Configurations


The following Windows 2003 fix may also impact PTE usage and help eliminate the errors:

831899 You receive a "stop 0x000000DA" error message on a blue screen after you enable PTE tracking on a Windows Server 2003-based node


MORE INFORMATION

For more information, click the following article numbers to view the articles in the Microsoft Knowledge Base:

247904 How to Configure the Paged Address Pool and System Page Table Entry Memory Areas


274750 HOW TO: Configure Memory for More Than 2 GB in SQL Server



Additional query words: INSUFFICIENT RESOURCES dmio.sys 0xc9a c000009a

Keywords: kbprb KB329075