Introduction 1 Windows Storage Drivers 2

Introduction 1 Windows Storage Drivers 2 SCSIport Driver 3 Adapter I/O Limit 3 Sequential I/O Functioning 4 Increased Miniport Load at Elevated IRQLs 4 Data Buffer Processing Overhead 5 I/O Queue Limitations 5 Impact on SCSI Performance 6 Storport 7 Synchronous I/O Functioning 8 Effective Miniport Functioning 9 Offloaded Build at Low IRQL 9 Single Pass Scatter/Gather List Creation 9 Flexible Map Buffer Settings 11 Queue Management 11 Improved Error and Reset Handling 12 Hierarchical Resets 12 Improved Clustering by Using Hierarchical Resets 12 Fibre Channel Link Handling 13 Ability to Run Deferred Procedure Calls (DPCs) 13 Registry Access 13 Fibre Channel Management 14 Easy Migration to Storport 14 Performance Comparisons 14 Measuring Storport Performance 15 Host-Based RAID Adapter 15 Summary 16 Related Resources 16
Introduction
Storage adapters and storage subsystems are not all created equal. In environments where information transfers between the computer, and storage must be maximized for speed, efficiency, and reliability—such as in banking or trading businesses—high performance interconnects that maximize I/O throughput are critical. Such organizations use storage area networks (SANs), usually with Fibre Channel cabling and interconnects (links) in redundant configurations, and storage arrays with hardware based RAID (redundant array of independent disks) for high availability and high performance.
Having the highest performing equipment helps to ensure that high performance needs can be met, but it doesn’t guarantee them. The functioning of the storage network is also dependent on the capabilities of the host operating system, specifically the host operating system drivers that interface with the storage hardware to pass I/O requests to and from the storage devices. This is especially important in Fibre Channel SANs, where a complex system of switches and links between servers and storage requires an effective means of detecting link problems and eliciting the appropriate response from the operating system
In the Microsoft® Windows® operating system, the SCSIport driver, in conjunction with vendor-written adapter-specific miniport drivers, was for many years, the only driver delivering SCSI commands to the storage targets. The SCSIport driver, however, was designed to work optimally with the parallel SCSI interconnects used with direct attached storage. It was neither designed to meet the high performance standards of Fibre Channel SAN configurations, nor to work well with hardware RAID.
As a consequence, organizations running mission critical Windows applications on their servers do not realize the maximum performance benefits or manageability of their Fibre Channel SANs or hardware RAID adapters (on both the host and storage arrays) when I/O passes between the host and storage target.
These limitations have been overcome with the development of Storport, the new device driver designed to supplement SCSIport on Windows Server 2003 and beyond. Storport is a new port driver that delivers higher I/O throughput performance, enhanced manageability, and an improved miniport interface. Together, these changes help hardware vendors realize their high performance interconnect goals.
Windows Storage Drivers
Applications send read/write (I/O) requests through the Windows storage stack (see Figure 1). The first layer of the stack, the I/O subsystem or manager, controls execution of all the device driver routines, including adding or removing a device, I/O requests, start I/O (initiating data transfer to or from a storage device), device interrupts (a diversion to device code in response to an external event unrelated to what a processor is currently working on), and various I/O completion routines.
Figure 1. The I/O Request Path Through the Storage Stack.
The I/O manager processes and/or passes the I/O request packet (IRP) on to each lower driver layer, which successively routes the I/O to the:
Correct device class driver
Correct I/O port driver (such as SCSI or USB)
Adapter-specific miniport driver
Class drivers manage a specific class of devices, such as disk or tape, ensuring that I/O requests are sent to the appropriate device type in correct fashion. I/O requests are then passed on to a protocol-specific port driver. Windows provides drivers for a number of transport types, including SCSI, IDE and 1394. The port driver can do one of the following: 1) complete the request without passing the request on to lower layers (if no data transfer is necessary), 2) queue the request on behalf of the storage device controller if the hardware is busy; or 3) pass the requests on to a hardware-specific miniport driver (written by an adapter vendor), which directly controls access to the hardware. The miniport driver, the lowest layer in the storage stack, is the actual device driver that acts to translate the I/O request into a physical location on the vendor’s hardware. Once the I/O request has been carried out in the hardware, several I/O completion routines complete the I/O path.
|