Kann man den theoretischen I / O-Durchsatz der CPU berechnen?

540
Lapsio

Ich habe eine Maschine mit i7-2600K und verwandle sie in einen Speicherserver. Es verwendet einen P67-Chipsatz, der eine 20-Gbit / s-DMI-Schnittstelle zur CPU verwendet. Auf der Platine befinden sich außerdem pcie x8 / x8 Steckplätze, die direkt mit der CPU verbunden sind. Ich dachte darüber nach, acht SATA-Laufwerke über DELL Perc 6 / i-PCI-E x8-Controller an Onboard-Controller (über DMI) und 8 SATA-Laufwerke anzuschließen, um sie über das 10-Gbit / s-Quad-Interface mittels Rr-Bonding zu exportieren.

Ich bin mir jedoch nicht sicher, ob diese CPU theoretisch sogar 40 GBit / s an E / A fördert, selbst wenn wir alle Engpässe ignorieren. Kann der maximale theoretische E / A-Durchsatz der CPU geschätzt werden?

0
Diese CPU verfügt über 16 PCIe 2.0-Spuren. Keine Netzwerkkarte, die ich gefunden habe, verwendet mehr als 8 Spuren. Einfache Berechnungen zeigen, dass 40 Gb / s nicht unterstützt werden können. Warum sollte man sich etwas anderes als * Engpässe ansehen? Daniel B vor 6 Jahren 0
@DanielB, fairer Punkt, pci-e 2.0 x8 unterstützt bestenfalls 32 Gbit / s. Dann stellt sich noch die Frage, ob es überhaupt eine theoretische Chance gibt, es zu bekommen. Ich bin eher besorgt darüber, ob das System der tatsächlichen theoretischen PCI-E-Bandbreite nahekommen kann, oder ist es nur eine Zahl auf dem Papier ohne Bezug zur Realität, und die tatsächliche Leistung ist bestenfalls 16 Gb / s oder etwas. Lapsio vor 6 Jahren 0
Warum bekommen Sie nicht einfach die beabsichtigte Karte (ich gehe von 10 Gbit / s PCI-E aus) und testen Sie sie mit Jperf oder ähnlichem? Ich vermute, diese CPU könnte mehrere 10-Gbit / s-Karten gleichzeitig verarbeiten. Aber ohne all die zusätzlichen h / w-Informationen kann Ihnen niemand etwas anderes als eine Vermutung geben. Tim_Stewart vor 6 Jahren 0

1 Antwort auf die Frage

2
sawdust

Es verwendet einen P67-Chipsatz, der eine 20-Gbit / s-DMI-Schnittstelle zur CPU verwendet. Auf der Platine befinden sich außerdem pcie x8 / x8 Steckplätze, die direkt mit der CPU verbunden sind.

Falsche, periphere Busse (z. B. PCIe und SATA) sind nicht direkt an die CPU angeschlossen.
Anstelle einer direkten Verbindung zur CPU verfügen PCIe, SATA, USB und Speicher über Controller (dh eine Zusatzlogik), die eine Schnittstelle zu einer Art Hochgeschwindigkeits-Systembus bilden. Die Adress- und Datenbusse der CPU sind typischerweise direkt mit einem solchen Systembus verbunden.

Beachten Sie, dass moderne CPU- Chips hoch integriert sind (z. B. System-on-Chip, SoC ist möglich), und die Funktionalität von Systemchips (z. B. Nord- / Südbrückenchips) kann durch engere Integration näher an die CPU herangeführt werden . Solche CPU-Chips können über PCIe- und SATA-Verbindungen verfügen, da sie diese Controller enthalten. Dies bedeutet jedoch nicht, dass diese Peripheriegeräte direkt mit einem oder mehreren Prozessoren verbunden sind.

Kann der maximale theoretische E / A-Durchsatz der CPU geschätzt werden?

Ja, aber der Durchsatz mit programmierten E / A ist keine sinnvolle Zahl.
Da moderne Computersysteme normalerweise E / A-Vorgänge unter Verwendung von DMA des zweiten oder dritten Herstellers durchführen (und nicht programmierte E / A-Vorgänge), ist die CPU nur am Anfang und am Ende der typischen E / A-Vorgänge beteiligt.
IOW wäre die CPU nicht der E / A-Engpass.
Siehe https://stackoverflow.com/questions/25318145/dma-vs-interrupt-driven-io/38165400#38165400
und https://stackoverflow.com/questions/38119491/master-for-interrupt-based-uart-io / 38155310 # 38155310
Daher sollte Ihre Frage umformuliert werden:
" Ist es möglich, den theoretischen E / A-Durchsatz eines Computers zu berechnen? ".

Eine Obergrenze für E / A-Vorgänge wäre die Speicherbandbreite. Da die E / A immer zwischen Peripheriegeräten und Hauptspeicher erfolgt (wobei die seltene Verwendung von Peripheriegerät zu Peripheriegerät mit einem Busmaster ignoriert wird), kann die Speichergeschwindigkeit einen Engpass darstellen.
Da der Hauptspeicher normalerweise viel schneller als jedes einzelne Peripheriegerät ist, besteht die Gefahr, dass DMA-Controller, Bus-Master und die CPU um Speicherzugriffe kämpfen, was durch den Speichercontroller zu entscheiden ist.

Aber das ist nicht richtig. Einige PCIe-Steckplätze * sind direkt an die CPU angeschlossen. Daniel B vor 6 Jahren 0
Ich gebe zu, dass ich die Details der neuesten Intel-Prozessoren nicht kenne. Eine direkte PCIe-Verbindung zur CPU macht aber keinen Sinn. Das ist eine grundlegende, herkömmliche Computerarchitektur. Wie funktioniert das Bus-Mastering? Bitte machen Sie einen Beweis. Da einige CPU-Chips auch den Speichercontroller integrieren, bedeutet die Verbindung zum "CPU-Chip" nicht unbedingt eine direkte Verbindung zur eigentlichen CPU. sawdust vor 6 Jahren 0
@sawdust von _directly_ Ich meinte, dass es keinen Engpass zwischen den x8 / x8-Lanes und der CPU gibt. Weil der Chipsatz in der Regel Geräte verbindet, die insgesamt mehr Durchsatz erfordern, als durch die Verbindung hergestellt wird. Z.B. Der X399 Threadripper-Chipsatz verbindet in der Regel mehrere 5G-USB-Controller, 8 SATA, pcie x8, pcie x2 und einen anderen Junk-Chipsatz, wobei jedoch der gesamte Chipsatz mit der x4-Bandbreite verbunden ist. 31.17-page-013.jpg Lapsio vor 6 Jahren 0
@ Lapsio - Ich kann sehen, wie dieses Blockdiagramm zu falschen Annahmen führen würde. Sie müssen jedoch zwischen der tatsächlichen CPU / dem Prozessor und dem "CPU-Chip" unterscheiden. [Wikipedia] (https://en.wikipedia.org/wiki/Zen_ (Mikroarchitektur)) bestätigt meinen Verdacht: * "Der Speicher, ** PCIe ** -, SATA- und USB-Controller befinden sich in demselben Chip wie der Prozessor Kerne. "* IOW, was sich früher im" Northbridge "-Chip befand, ist jetzt mit dem Prozessor bzw. den Prozessoren in einem" CPU-Chip "integriert. Es gibt keine direkte Verbindung zur CPU / zum Prozessor. Es sind immer noch Peripherie- / Bus-Controller beteiligt. Danke für's Annehmen. sawdust vor 6 Jahren 1
@sawdust Sie haben DMA _controllers _... erwähnt. Gibt es mehr als einen DMA pro System? Ich dachte, es gibt einen zentralen DMA-Controller für alle Geräte. Ist DMA auch eine aktive Komponente, die eigentlich Middleware zwischen Gerät und Speichercontroller weiterleitet und all diese Daten hin und her pumpt, oder ist es nur eine Art Makler, der Geräten die direkte Verwendung des Speichercontrollers ermöglicht? Nach den von Ihnen geposteten Links zu urteilen, würde ich sagen, dass es aktiv ist, aber ich wäre froh, wenn Sie bestätigen könnten, dass ich es richtig verstanden habe. Lapsio vor 6 Jahren 0
Normalerweise benötigt ein System nur einen DMA-Controller, bei dem es sich um ein tatsächliches Gerät handelt, und einen Treiber im Betriebssystem. Bei dem ursprünglichen IBM-PC war der DMAC ein eigenständiger Intel-Chip. Die Verwendung dieses Systems DMAC wird als DMA von Drittanbietern bezeichnet. DMA, der einen Bus-Master verwendet (z. B. ein PCIe-Gerät, das in der Lage ist) wird DMA eines zweiten Herstellers genannt. (Bevor Sie fragen: Gedächtnis wäre der Erstanbieter.) sawdust vor 6 Jahren 1
Der eingebaute PCIe-Root-Port ist Teil des System Agent, der zweifellos Teil der CPU ist, genau wie der L2-Cache. Weitere Informationen finden Sie in [diesem Artikel] (https://www.anandtech.com/show/3922/intels-sandy-bridge-architecture-exposed/4). Natürlich ist eine Verbindung vorhanden, aber dann ist es immer so. Daniel B vor 6 Jahren 1
@DanielB - Sie lesen die Details nicht richtig und verbinden physische Nähe mit direkter Verbindung. Der generische Systembus, auf den ich mich beziehe, ist als "Ringbus" implementiert, der die *** Cores ***, Graphics, LLC und *** System Agent *** miteinander verbindet. Dies ist immer noch eine herkömmliche Computerarchitektur. Beachten Sie, dass der Artikel den Systemagenten als "Phantasiewort für North Bridge" * bezeichnet. * "der Systemagent, der zweifellos Teil der CPU ist" * - Nein, man muss nicht raten, es ist klar, dass die Kerne durch einen Bus vom Systemagenten getrennt sind. sawdust vor 6 Jahren 0