Applications that perform asynchronous cached I/O read requests and that use a disk array that has multiple spindles may encounter a low performance issue in Windows Server 2008, in Windows Essen …

January 17, 2012 by admin · Leave a Comment 

Symptoms
Consider the following scenario:You have a storage area network (SAN) disk array or a direct attached storage (DAS) disk array that has multiple spindles.The disk array is installed on a computer that has one of the following Microsoft Windows operating systems installed:Windows Server 2008Windows Essential Business Server 2008Windows Vista Service Pack 1 (SP1)An application uses the disk array to perform concurrent asynchronous I/O requests on this computer.In this scenario, the application may have very low I/O read performance.
For example, you run SQL Server Analysis Service (SSAS) for an OLAP query on a Windows Server 2008-based computer. This computer has a disk array that supports concurrent I/O reads. SSAS uses 20 spindles to perform an asynchronous I/O read. In this example, you may find that the OLAP query performance in the Windows Server 2008 system is very low and that the system seems to have only 2 spindles working on the I/O request.
Resolution
This problem occurs because of the asynchronous I/O mechanism in Windows Server 2008. When an I/O request is made, the asynchronous I/O mechanism in Windows Server 2008 performs the following steps:The cache manager finds that one of the pages that are required for the transfer is not resident in memory.The cache manager notifies NTFS that the page is not in memory.NTFS queues the page read and write request to its internal work queue and then returns STATUS_PENDING to the calling thread.NTFS only uses both worker threads to process its internal work queue. Because only the two worker threads are used, you encounter the performance issue.