Für eine bestimmte Lese- / Schreibauslastung erhalte ich 30 MiB / s von einem 4-Platten-Array unter Verwendung der Esata-Port-Multiplikation. Wenn ich genau dasselbe Array auf vier einzelne SATA-Verbindungen verschiebe, erhalte ich 90 MiB / s für dieselbe Arbeitslast. Ist dies die erwartete Auswirkung des Multiplikators auf die Leistung? Wenn nicht, wie kann ich das Problem zwischen Software, Controller oder Gehäuse eingrenzen?
Ich habe genau die gleichen Ergebnisse erzielt, selbst nachdem ich im Laufe der Jahre eine große Anzahl von Variablen ausprobiert habe:
- Viele Linux-Versionen (RHEL5, Fedora 9, 11, 13, 16) und alle dazugehörigen Kernel.
- Zwei Arten von Gehäusen (beide Low-End-Modelle mit 4 Festplatten für 100 US-Dollar), insgesamt vier Gehäuse.
- Zwei Arten von SATA-Controller-Chipsätzen (Marvell 88SE91xx und Silicon Image 3132)
- Vier SATA-Controller (ca. 30 - 60 US-Dollar für pci-x1-Schnittstellenkarten und eine PCI, alle FIS-basiertes Switching).
- Drei SATA-Geschwindigkeiten (1,5-, 3,0- und 6,0-Gbit / s)
- Vier Arten von Festplatten (Samsung Spinpoint F1 1 TB, WD Caviar Black 2 TB, Seagate Barracuda XT 3 TB).
- Drei Computer (Athlon 3 GHz + 1 GB RAM, als ich das erste E-Sata-Array erstellt habe, dann Core 2 Duo + 4 GB, jetzt Core i5 750 + 8 GB).
Als ich vor all den Jahren mein erstes eSATA-Gehäuse herstellte, ging ich davon aus, dass die langsame Geschwindigkeit mit der Verwendung einer PCI-Karte (33 MHz), unreifen SATA-Treibern oder vielleicht der SATA-1,5-Gbit / s-Laufwerke mit 5400 U / min zusammenhängt. Aber jetzt mit einem x1 6Gbps-Controller, einem 3.0-Kernel und einem 6Gbps-HDDS mit 7200 U / min hat sich immer noch nichts geändert. Ich erhalte immer noch die gleichen 30 MiB / s für diese bestimmte Arbeitslast, bis ich sie auf einzelne SATA-Verbindungen verschiebe.
Ist dies eine grundlegende Einschränkung aller Portmultiplikationsimplementierungen?
quelle
Antworten:
Ja. Eine schlechte Leistung ist zu erwarten.
Das ATA-Protokoll sollte niemals Daten auf mehr als ein Laufwerk übertragen (es basierte tatsächlich auf dem ISA-Bus und erweiterte den Kommunikationskanal auf ein Speicherlaufwerk). Die IDE-Schnittstelle hat diese Einschränkung umgangen, indem sie Daten für "Master" - und "Slave" -Geräte übertragen hat. SATA hat jedoch keinen äquivalenten Mechanismus, da es nur für ein einziges Gerät pro Kabelverbindung vorgesehen war.
eSATA-Portmultiplikatoren fungieren als ATA-Ziel, das mehrere physische Medien auswählen kann (sodass jeweils nur ein physisches Gerät adressiert werden kann und die Umstellung auf ein anderes Gerät geringfügig verzögert ist). Sie können dies mit alten optischen Bibliotheken vergleichen.
Dies unterscheidet sich grundlegend von SAS, das mit integrierten Expandern und integriertem Initiator- / Ziel-Routing erstellt wurde (SAS 2.0+ funktioniert ähnlich wie ein Switched-Ethernet-Netzwerk). SAS kann auch mehrere Leitungen zu Amtsleitungen verbinden und so den gleichzeitigen Zugriff auf mehrere Geräte über mehrere Amtsleitungsleitungen ermöglichen.
Update:
Anscheinend gibt es neuere Controller, die FIS unterstützen, wodurch mehrere Laufwerke gleichzeitig "aktiv" sein können. Dies sollte eine Leistung ermöglichen, die viel höher ist als oben beschrieben. Anscheinend stellt derzeit nur ein Hersteller diese Chips her. Ich würde immer noch empfehlen, in Serverumgebungen von SATA weg zu starten. Wenn Sie SATA-Laufwerke verwenden müssen, sollten Sie weiterhin SAS-Controller und Expander verwenden.
quelle
Sind Sie sicher, dass Sie versucht haben, einen Controller- und Port-Multiplikator zu verwenden, der die FIS- Port-Multiplikation (Frame Information Structure) unterstützt ?
AFAIK nur Silicon Image Controller und Multiplikatoren (SiI3726) unterstützen dies, aber die Leistung ist ähnlich wie bei SAS mit gleicher Geschwindigkeit (80-90% Verbindungssättigung).
quelle