Die einzelnen Phasen eines I/Os in einem FC-SAN werden gezeigt. Anschließend wird auf ein Modell mit nur noch 3 Phasen vereingacht. Die tatsächliche Zeitdauer für die einzelnen Phasen wird in einem Diagramm für einige FC-Technologien gezeigt. Als entscheidend für die Dauer eines I/Os stellt sich die Round-Trip-Time heraus. Darauf aufbauend wird der maximal mögliche Durchsatz eines einzelnen I/Os ermittelt und graphisch für verschiedene I/O-Größen in Abhängigkeit von der Round-Trip-Time gezeigt.

Die zeitlichen Phasen bei einer Schreib-Operation sehen, etwas vereinfacht, so wie im folgenden Bild aus:

FC I/O phases
    1. Verarbeitungsverzögerung (Processing Delay) auf dem Server: Queuing, Kopieren der Daten.
    2. Übertragungsverzögerung (Transmission Delay): Zeitspanne um die Daten auf das Medium zu bringen.
    3. Ausbreitungsverzögerung (Propagation Delay) vom Server-Port zum Switch-Port.
    4. Weiterleitungsverzögerung (Forwarding Delay) vom eingehendem Port zum ausgehenden Port auf dem FC-Switch.
    5. Ausbreitungsverzögerung (Propagation Delay) vom Switch-Port zum Storage-Port.
    6. Verarbeitungsverzögerung (Processing Delay) auf dem Storage: Schreib-Operationen gehen meist in den Cache und sind daher schnell, Lese-Operationen können an Festplatten gehen und können daher langsamer sein (insbesondere bei mechanischen Festplatten).
    7. Übertragungsverzögerung (Transmission Delay): Zeitspanne um die Antwort, bei Schreib-Operationen die Bestätigung, auf das Medium zu bringen.
    8. Ausbreitungsverzögerung (Propagation Delay) vom Storage-Port zum Switch-Port.
    9. Weiterleitungsverzögerung (Forwarding Delay) vom eingehendem Port zum ausgehenden Port auf dem FC-Switch.
    10. Ausbreitungsverzögerung (Propagation Delay) vom Switch-Port zum Server-Port.
    11. Verarbeitungsverzögerung (Processing Delay) auf dem Server: Interrupt-Bearbeitung, Kopieren von Daten.

Nur bei der zweiten Phase werden Daten auf das Medium aufgebracht, während aller anderen Phasen werden keine weiteren Daten auf das Medium in Richtung Storage aufgebracht. Das Medium wird in diesen Phasen nicht für die Datenübertragung genutzt. Damit wird in 10 von 11 Phasen auch kein Durchsatz erzielt!

Bei Schreib-Operationen werden in Phase 2 die zu schreibenden Daten auf das Medium gebracht und in Phase 7 eine Bestätigung vom Storage (kleines Daten-Frame) gesendet. Bei Lese-Operationen wird in Phase 2 ein kleines Daten-Frame mit der Anforderung von Daten gesendet und in Phase 7 werden die angeforderten Daten (eventuell eine größere Datenmenge) vom Storage gesendet.

Die Übertragungsverzögerung TD lässt sich relativ leicht berechnen, sie ergibt sich aus der I/O-Größe IOsize und der Bandbreite BW des Mediums:

TD = IOsize / BW

In der nachfolgenden Tabelle sind die Werte für die Übertragungsverzögerung für einige I/O-Größen und FC-Technologien aufgelistet.

transmission delay for FC

Um den maximalen theoretischen Durchsatz für ein I/O einer bestimmten Größe zu ermitteln, machen wir ein paar vereinfachende Annahmen:

    1. Die Verzögerung bei der Verarbeitung auf dem Server (Phase 1 und Phase 11) ist so kurz, das sie nicht berücksichtigt werden muß.
    2. Wir fassen Phase 3, 4 und 5 als Propagation Delay von Server-Port zu Storage-Port zusammen, welche Phase dabei welchen Anteil liefert, spielt aus Sicht des Servers keine Rolle.
    3. Wir nehmen an das auch die Verzögerung bei der Verarbeitung auf dem Storage (Phase 6) so kurz ist, das sie nicht berücksichtigt werden muß. Beim Schreiben werden die Daten ohnehin nur in den Cache geschrieben, was sehr schnell geht und beim Lesen könnten die Daten ja schon im Cache sein. (In der Regel ist die Verzögerung durch die Verarbeitung auf dem Storage jedoch nicht vernachlässigbar und hängt auch von der I/O-Größe ab.)
    4. Für eine Schreiboperation ist die Rückantwort (Acknowledge) sehr klein, daher nehmen wir an das die Zeit das Acknowledge auf das Medium zu bringen zu vernachlässigen ist.
    5. Auch für den Rückweg von Storage zu Server fassen wir die Phasen 8, 9 und 10 als Propagation Delay von Storage-Port zu Server-Port zusammen.

Ein einzelner I/O besteht dann nur noch aus 3 Phasen:

FC I/O phases simplified
    1. Transmission Delay (TD): Die Zeitspanne um die Daten auf das Medium zu bringen, hängt von der Größe des I/Os ab (siehe Tabelle oben).
    2. Propagation Delay: vom Server zum Storage.
    3. Propagation Delay: vom Storage zum Server.

Zur Illustration ist im Folgenden der zeitliche Ablauf für ein 32 KB Write-I/O für 1G, 8G und 32G FC dargestellt. Als Propagation Delay wurde für die Skizzen 0.1 ms angegnommen, was schon ein extrem guter Wert ist. In vielen Fällen wird die Propagation Delay größer sein.

timing for 32 KB FC-I/O

Man kann anhand der Sizzen sehr gut sehen das sich die Charakteristik eines I/Os mit neueren FC-Standards (höhere Bandbreiten) deutlich geändert hat. Während bei 1G FC die Transmission Delay dominiert, mehr als 50% der Zeitspanne eines I/Os, hat diese schon bei 8G FC nur noch einen Anteil von ca 20% und bei 32G FC sogar nur noch einen Anteil von ca 2%! Die Zeitdauer die Daten auf das Medium zu bringen spielen also schon bei 32G FC so gut wie keine Rolle. Die Dauer eines einzelnen I/Os wird damit vor Allem durch die Propagation Delay bestimmt.

Um den maximal möglichen Durchsatz zu berechnen, fassen wir die beiden Phasen 2 und 3 (Propagation Delay Server-Storage und Storage-Server) zur sogenannten Round-Trip-Time (RTT) zusammen. Die Zeitdauer (Completion Time CT) für ein einzelnes komplettes I/O ist dann:

CT = TD + RTT + additional delays

(Unter „additional delays“ sind alle Verzögerungen zusammengefaßt, welche wir vereinfachend als nicht vorhanden angenommen haben.)

Der Durchsatz für einen einzelnen I/O ergibt sich dann aus der I/O-Größe (IOsize) dividiert durch die benötigte Zeit für den I/O (CT):

Throughput = IOsize / CT = IOsize / ( TD + RTT + additional delays ) <= IOsize / ( TD + RTT )

Der tatsächliche Durchsatz kann also bestenfalls bei IOsize / ( TD + RTT ) liegen, falls es an keiner Stelle eine Verzögerung bei der Verarbeitung oder Weiterleitung gibt. Bei vorgegebener I/O Größe hängt der maximal erzielbare Durchsatz damit von der Transmission Delay (TD) und der Round-Trip-Time (RTT) ab.

Im Folgenden ist dies graphisch, für Round-Trip-Times bis 2 ms und verschiedenen FC-Technologien, dargestellt.

maximum throughput for single I/O for 1G FC
maximum throughput for single I/O for 2G FC
maximum throughput for single I/O for 4G FC
maximum throughput for single I/O for 8G FC
maximum throughput for single I/O for 16G FC
maximum throughput for single I/O for 32G FC

Man kann den Graphiken deutlich entnehmen: Je höher die Bandbreite, desto schneller sinkt der mögliche Durchsatz mit ansteigen der Round-Trip-Time! Kann man für ein I/O der Größe 256 KB bei einer Round-Trip-Time von 0.5 ms bei 1G FC noch einen Durchsatz von bis zu  ca 80% der verfügbaren Bandbreite erzielen, erzielt man bei 32 G FC bestenfalls noch ca 12.5% der verfügbaren Bandbreite!

Damit sind Techniken wie Read-Ahead oder Asynchronous I/O für einen hohen Durchsatz bei neuen FC-Technologien enorm wichtig. Ein hoher Durchsatz ist nur erzielbar, wenn während des Propagation Delays weitere I/Os auf das Medium gebracht werden. Applikationen, die z.B. Single-Threaded Direct-I/O (am Filesystem-Cache vorbei) machen, können keinen hohen Durchsatz erzielen.

Hinweis: Das Ergebnis des Artikels ist nicht das der Durchsatz bei neuen FC-Adaptern mit höherer Bandbreite generell sehr niedrig ist, sondern das die Notwendigkeit für einen guten Durchsatz darin besteht möglichst viele I/Os parallel auf den Weg zu schicken, um das Übertragungsmedium (Glasfaser) auch permanent auszulasten. Applikationen die mit früheren Generationen von FC-Adaptern gut funktioniert haben, werden nicht zwangsläufig einen höheren Durchsatz mit neueren FC-Adaptern erzielen.