Storport-Warteschlangenverwaltung
Um die Funktionen von Hochleistungsspeicheradaptern nutzen zu können, müssen Miniporttreiber die Kontrolle über ihre Gerätewarteschlangen ausüben und diese Warteschlangen auf eine Weise anhalten und fortsetzen, die die Effizienz maximiert.
Im SCSI-Port-Warteschlangenmodell ist die Warteschlangenverwaltung die exklusive Domäne des Porttreibers. Im Storport-Warteschlangenmodell stellt der Porttreiber mehrere Warteschlangenverwaltungsroutinen bereit, die dem Miniporttreiber eine erhebliche Menge an Warteschlangenverwaltungssteuerung geben.
Im Storport-Warteschlangenmodell werden alle Anforderungen im Porttreiber in Warteschlangen pro logischer Einheit in die Warteschlange eingereiht. Ohne erweiterte SRB-Unterstützung kann jede logische Einheit maximal 255 ausstehende Anforderungen aufweisen. Andernfalls wird die Warteschlangentiefe nur durch verfügbare Systemressourcen oder die Funktionen des Adapters eingeschränkt. Wenn das Limit für die Warteschlangentiefe erreicht ist, hält Storport weitere Anforderungen an diese logische Einheit bereit, bis die Anzahl der ausstehenden Anforderungen an die Einheit unter das Warteschlangenmaximum fällt.
Es gibt keine vordefinierten Grenzwerte von Storport für die Anzahl der ausstehenden Anforderungen, die ein Adapter haben kann. Ein Adapter mit 55 logischen Einheiten mit einer Warteschlangentiefe von 255 kann beispielsweise bis zu maximal 14.025 (55 x 255) Anforderungen gleichzeitig senden. Im folgenden Diagramm finden Sie eine Beschreibung des Warteschlangenmodells des Porttreibers.
Warteschlangenmodell des Porttreibers
Wenn der Adapter und eine logische Einheit bereit sind, eine Anforderung zu empfangen, ruft das System die Routinen HwStorBuildIo und HwStorStartIo des Miniporttreibers in dieser Reihenfolge auf.
Im Gegensatz zu SCSI-Port ermöglicht Storport Miniport-Treibern, den Porttreiber über ausgelastete Bedingungen zu benachrichtigen. Diese Kommunikation wird von den folgenden acht Routinen verarbeitet, die es dem Miniporttreiber ermöglichen, zu signalisieren, wenn entweder die logische Einheit oder der Adapter angehalten oder ausgelastet ist.
Storport-Routine | Durchgeführte Aktion |
---|---|
Halten Sie ein Gerät für einen bestimmten Zeitraum an. |
|
Setzen Sie ein angehaltenes Gerät fort. |
|
Halten Sie einen Adapter für einen bestimmten Zeitraum an. |
|
Setzen Sie einen angehaltenen Adapter fort. |
|
Stellen Sie ein Gerät so lange fest, bis die Gerätewarteschlange eine angegebene Anzahl von E/A-Anforderungen abgeschlossen hat. |
|
Stellen Sie ein ausgelastetes Gerät bereit, um Anforderungen erneut zu empfangen. |
|
Stellen Sie einen Adapter so lange auf, bis er eine angegebene Anzahl von E/A-Anforderungen abgeschlossen hat. |
|
Stellen Sie einen ausgelasteten Adapter bereit, um Anforderungen erneut zu empfangen. |
Während ein Gerät angehalten oder ausgelastet ist, sendet der Porttreiber keine Anforderungen an das Gerät. Wenn ein Miniporttreiber eine Anforderung mit einem ausgelasteten status (SRB_STATUS_BUSY oder SCSISTAT_BUSY) abschließt, versucht der Porttreiber die Anforderung unbegrenzt oft, bis die Anforderung fehlschlägt oder abgeschlossen ist.
Zusätzlich zur Bereitstellung einer Reihe expliziter Warteschlangenverwaltungsroutinen, die im SCSI-Port-Warteschlangenmodell nicht verfügbar sind, verwendet das Storport-Warteschlangenmodell nicht die impliziten Warteschlangenverwaltungsroutinen, die der SCSI-Port verwendet hat. Insbesondere werden die NextRequest - und NextLuRequest-Benachrichtigungen ignoriert.