Warum erhalte ich in meinem 1000-Mbit / s-Netzwerk nur 300-400 Mbit / s?


17

Mein Setup sieht so aus:

Laptop <-> Router <-> Desktop

Sie alle unterstützen Gigabit-Ethernet. Ich verwende den 'iperf'-TCP / IP-Benchmark für Laptop und Desktop und habe noch nie einen Rohdurchsatz von mehr als 400 Mbit / s erzielt. Der Laptop ist ein Intel Core 2 Duo mit 2 GHz unter Windows XP, der Desktop ist ein Intel Core 2 Quad mit 2,4 GHz unter Windows 7. Worauf kann ich achten, um die Netzwerkgeschwindigkeit zwischen beiden zu maximieren? Softwareeinstellungen? Sie möchten wissen, ob mein Kabel nicht den Spezifikationen entspricht? Woran erkenne ich, dass der Gigabit-Ethernet-Controller in einem der Geräte die maximale Geschwindigkeit nicht erreichen kann?

Antworten:


11

1 Gbit / s ist das theoretische Maximum dieser Verbindung.

Viele Dinge können dies beeinflussen.

Erwarten Sie von Ihren integrierten Netzwerkkarten einen Leistungseinbruch, da es sich höchstwahrscheinlich um hostbasierte Adapter (basierend auf den Gerätebeschreibungen "Laptop" und "Desktop") handelt, bei denen die CPU für die Verarbeitung des Netzwerkverkehrs erforderlich ist. Daher wird die Geschwindigkeit von der CPU beeinflusst, wenn sie andere Aufgaben ausführt (z. B. das Abrufen der Daten von den Festplatten zum Netzwerk-Subsystem).

Abhängig davon, was der "Router" ist, versucht er möglicherweise, die Daten zu verarbeiten, während sie von LAN-Port zu LAN-Port übertragen werden. Daher kann sich die Verarbeitungsgeschwindigkeit auch auf die Datenübertragungsgeschwindigkeit auswirken, unabhängig davon, wie schnell die "Ports" sind. sind.

Wenn ich Sie wäre, würde mein nächster Test darin bestehen, mir ein "gerade lang genug" CAT6-Crossover-Patchkabel zu besorgen und das Notebook direkt mit dem PC zu verbinden -Überqueren dieser Tage).

Auf diese Weise können Sie (zumindest) den Router (und / oder die vorhandene Verkabelung) ziemlich einfach als Engpass identifizieren.


Unter en.wikipedia.org/wiki/… finden Sie zwei mögliche Pinbelegungen für die Herstellung eines Gigabit-Crossover-Kabels.
Elf81

Gute Infos sicher. In diesem Fall ist es wahrscheinlich besser, ein werksseitig hergestelltes Kabel zu verwenden, wenn der Benutzer nicht daran gewöhnt ist, ein Kabel herzustellen, und das Ziel darin besteht, mögliche Verzögerungen zu beseitigen. Nichts schlimmeres als eine lockere Quetschung. ;)
ƬᴇcƬᴇιʜ007

14
Mit Gigabit-Ethernet werden Crossover-Kabel nicht mehr benötigt. Alle Gigabit-Ethernet-Controller müssen in der Lage sein, das Kabel automatisch zu erkennen. Sie können also ein Standardkabel verwenden, um Gigabit-Ethernet-Geräte miteinander zu verbinden. Ich werde versuchen, meinen Laptop direkt an den Desktop anzuschließen und festzustellen, ob es einen Unterschied gibt.
Davr

@davr könntest du Erfolg haben?
ebrahim.mr

8

iperf verwendet standardmäßig eine ziemlich kleine Fenstergröße.

Wenn Sie das Fenster vergrößern oder im UDP-Modus ausführen, wird eine 1-Gbit / s-Verbindung problemlos gesättigt.


Daran habe ich nicht gedacht, ich werde es versuchen.
Davr

1
Sie werden es nicht mit Consumer-Hardware sättigen. Die CPU wird im Allgemeinen durch den PCI- oder PCI-Express-Bus begrenzt. Das heißt, die CPU kann die Daten nicht schnell genug vom RAM auf die Netzwerkkarte übertragen. Server-Hardware scheint besser zu funktionieren. Ich weiß, ich bin ein Programmierer und habe versucht, genau das zu tun. Immer nah dran, aber jetzt begrenzt durch meine eigene Hardware.
Matt H

1
arbeitete für mich, schlug mir eine Stunde lang den Kopf und versuchte herauszufinden, warum mir Windows Iperf 250 MBit / s und Ubuntu, das auf demselben Computer gestartet wurde, 925 MBit / s liefert. Es stellt sich heraus, dass iperf unter Windows standardmäßig eine Fenstergröße von 8.000 tcp und unter Linux eine Fenstergröße von 88.000 tcp hat.
Omry

@Omry, iperf on windows ist ein Hund aus verschiedenen Perspektiven. Ich habe es größtenteils aufgegeben und laufe iperf nur unter Linux
Mike Pennington

4

Jeff Atwood hat eine gute Analyse, warum der tatsächliche Durchsatz eines Gigabit-Netzwerks nach seinen Berechnungen näher bei 30 MB / s liegt. (großes 'B', nicht kleines 'b')

... Sie sollten auf keinen Fall die perfekte Skalierung erwarten, die wir von 10baseT auf 100baseT gebracht haben. Ohne größere Anpassungen erhalten Sie nur einen Bruchteil der zehnfachen Bandbreitenverbesserung, die Sie vielleicht erwarten


Das "pcattcp" Tool, das er benutzt, ist ein Stück Mist. Mein 900-MHz-Linux-Netbook (das wahrscheinlich so schnell ist wie sein Computer im Jahr 2005) erreicht 300 MB / s über Loopback.
user23307

Ja, iperf bietet eine deutlich bessere Leistung als pcattcp. Ich bleibe vorerst bei iperf, wenn ich nichts Besseres höre.
Davr

1
Außerdem bin ich bereits höher als seine 240 MBit und dieser Artikel ist 5 Jahre alt, daher ist er meiner Meinung nach nicht mehr so ​​relevant, da die Technologie seitdem weit fortgeschritten sein sollte.
Davr

Wenn man bedenkt, dass das Loopback-Interface virtuell ist (es wird nicht einmal etwas auf die Netzwerkkarte übertragen), würde man eine viel bessere Leistung erwarten (im Grunde ist es dann zu verarbeiten und es wird keine Festplatte berührt). Ich erhalte 8,09 Gbit / s (1035 MByte / s) über die Loopback-Schnittstelle.
Matt H

3

Wenn alles Gigabit ist, können Sie versuchen, Jumbo-Frames zu aktivieren . Einer meiner Freunde tat dies mit seinem Heimcomputer und bemerkte einen enormen Anstieg des Durchsatzes. Es gibt jedoch einige Nachteile für Anwendungen mit geringer Latenz wie VOIP, wie im Artikel erwähnt.


Der Anstieg dürfte für die meisten Anwendungen nicht so dramatisch sein. Dies bedeutet lediglich weniger TCP- oder UDP-Protokoll-Overhead pro Paket. Um optimale Ergebnisse zu erzielen, sollten Ihre Switches / Router auch Jumbo-Frames unterstützen. Ich bezweifle, dass er es tun würde.
Matt H

Für alle Ergebnisse müssen Ihre Switches Jumbo-Frames unterstützen. Es gibt keine Möglichkeit, dass ein L2-Gerät einen ICMP-Fehler "Paket zu groß" zurücksendet, um Ihrem Computer mitzuteilen, dass es eine kleinere Paketgröße verwenden muss.
cpt_fink

1

Haben Sie gesagt, dass Sie einen Router verwenden? ist das ein handelsüblicher Router für Endverbraucher (kein Switch)?

Ich würde sagen, das ist höchstwahrscheinlich Ihr Engpass. Um dies zu überprüfen, schließen Sie den Laptop direkt an den Desktop an. Stellen Sie Ihren Laptop und Ihren Desktop so ein, dass sie eine statische IP-Adresse wie 192.168.1.10 (Laptop), 192.168.1.11 (Desktop) verwenden.

Dadurch sollte der Laptop direkt mit dem Desktop kommunizieren können. Führen Sie iperf zwischen ihnen aus und melden Sie das Ergebnis hier zurück.

Das sollte funktionieren, da die meisten modernen Netzwerkkarten im Gegensatz zu früher, als Sie ein Crossover-Kabel bauen mussten, Sende- / Empfangsleitungen automatisch erkennen können.

Wenn Sie einen deutlichen Anstieg feststellen, ist Ihr Router der Schuldige. Einige von ihnen haben Schalter auf der Rückseite, andere können tatsächlich zwischen Ports routen. Viele dieser Router sind schreckliche Leistungsträger. Wenn Sie feststellen, dass dies das Problem ist, dann würde ich an Ihrer Stelle entweder den Router aktualisieren (was wahrscheinlich für die Internetnutzung in Ordnung ist) oder sich einen GigE-Switch kaufen und diesen auf den Router-Switch kaskadieren. Schließen Sie Ihren Laptop und Ihren Desktop an den Switch an. Auf diese Weise umgehen sie den Router, um miteinander zu sprechen.

Stellen Sie sicher, dass Sie Ihren Laptop und Desktop nach Abschluss des Experiments wieder auf DHCP umstellen.

Um dir eine Idee zu geben, solltest du mir 650Mbit / s und mehr einfallen lassen. iperf benutzt die Festplatte nur, wenn Sie es ihm sagen. Es geht also von Speicher zu Speicher oder um das Testen des Netzwerks.

Einer der anderen Engpässe ist, wie schnell Ihre CPU Daten vom Speicher auf die Netzwerkkarte übertragen kann. Netzwerke mit PCI Express scheinen besser zu funktionieren. Ich denke, Laptops sind heutzutage im Allgemeinen recht billig gebaut. Wenn Sie also nicht viel darüber sehen, könnte dies der andere Engpass sein.

Außerdem können Switches für Endverbraucher häufig nur 1 GB zwischen zwei Ports umschalten, wohingegen verwaltete High-End-Switches an allen Ports gleichzeitig mit Kabelgeschwindigkeit umschalten können. Das ist einer der Gründe, warum sie so viel mehr kosten.


1

Wir haben zahlreiche Tests durchgeführt und es lief auf das Betriebssystem hinaus.

Wenn wir von Ubuntu 11.04 auf Ubuntu 11.04 umsteigen (wie bei CentOS für Linux-Maschinen), beträgt der Geschwindigkeitsdurchsatz ~ 938-941 MBits / s konstant. Wenn wir von Windows 7 x64 SP1 Ultimate auf Ubuntu 11.04 umsteigen, variiert dies zwischen ~ 440-475 MBits / s. Wenn wir von Windows 2008 R2SP1 x64 auf Ubuntu 11.04 umsteigen, beträgt die Geschwindigkeit ~ 435-635 MBits / s.

Wie Sie sehen können, nutzen Linux-basierte Maschinen die Gigabit-Links im Vergleich zu Windows voll aus. Wir untersuchen jetzt Einstellungen in Windows, die auf derselben Hardware den gleichen Durchsatz wie Linux erzielen würden. Festplattenbeschränkungen spielen keine Rolle, da sich diese im Speicher befinden. Für die Aufzeichnung hatten die Maschinen, die wir verwendeten, Laufwerke mit 7200 U / min mit SATA 3.0. Sowohl Ubuntu 11.04 (oder Linux-Basis) als auch Windows übertrafen die theoretische Geschwindigkeit dieser SATA-Verbindungen.


Vielen Dank für die Info, bitte aktualisieren Sie Ihre Antwort, wenn Sie Einstellungen finden, die die Geschwindigkeit unter Windows beeinflussen
Davr

Das macht mich fragen , ob iperf nicht der einzige Teil von Windows ist , dass standardmäßig eine kleinere Paketgröße als Linux, siehe superuser.com/a/95587/16966
matt wilkie

0

Übertragungsgeschwindigkeiten sind nur so gut wie das schwächste Glied in der Kette. Dies ist möglicherweise nicht die Netzwerkgeschwindigkeit, sondern die Schreib- / Lesegeschwindigkeit Ihrer Festplatten.

Sie können die RamDisk- Software herunterladen und auf beiden Computern eine RamDisk erstellen. Platzieren Sie eine anständige Datei und übertragen Sie sie über das Netzwerk zwischen den RamDisks. Dies sollte Ihnen die tatsächliche Geschwindigkeit Ihres Netzwerks anzeigen, die nicht durch die Geschwindigkeit Ihrer Festplatte beeinträchtigt wird.


2
Das ist der Grund, warum ich iperf erwähnt habe, aber ich denke, das ist bei einem Werkzeug nicht so üblich. Grundsätzlich wird die Netzwerkgeschwindigkeit direkt getestet, ohne dass auf die Festplatte gelesen / geschrieben werden muss. Dies ist also nicht der Engpass. Mir ist klar, dass HDD ein Engpass in der realen Welt sein kann.
Davr

0

Keine direkte Antwort auf Ihre Frage, aber kürzlich haben wir das folgende Ergebnis mit iperfzwei Linux-Boxen (8 Core, jeweils 2,66 GHz) erhalten:

------------------------------------------------------------
Client connecting to 192.168.74.15, TCP port 5001
TCP window size:  192 KByte (default)
------------------------------------------------------------
[  3] local 192.168.74.25 port 54016 connected with 192.168.74.15 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec

mit MTU = 1500 (dh ohne Jumbo Frames). Das soll Ihnen eine Vorstellung davon geben, welche Leistung grundsätzlich möglich ist.

Die Netzwerkkarten (lspci-Ausgabe) sind:

82571EB Gigabit Ethernet Controller

auf beiden Seiten.

Möglicherweise möchten Sie die CPU-Auslastung auf dem Server und insbesondere auf der Clientseite überprüfen, um festzustellen, ob diese nahezu 100% beträgt. Auch wenn ich sagen muss, dass auf unserem System der am stärksten ausgelastete Kern auf der Empfängerseite (Sender) zu 80% (83%) im Leerlauf ist, während die anderen 7 zu 100% im Leerlauf zu sein scheinen (mit markiert mpstat).

Dies läuft iperfohne die -uOption, dh dies verwendet TCP.


Ich denke, Sie sollten> 500 oder 600 MBit / s auf 1 - 2 Jahre alter Desktop-Hardware bekommen.
Matt H

-4

Im Gegensatz zu Fibre Channel und ähnlichen Technologien, die ausgefeilte Bandbreitenzuweisungsschemata verwenden, ist Ethernet ein "Listen and Squawk" -Protokoll. Ethernet hört zuerst zu, wenn gerade jemand sendet. Wenn ja, warten, wenn nicht, dann senden. Das Problem ist, dass zwei oder mehr Teilnehmer, die gleichzeitig senden möchten, gleichzeitig senden! Dies führt zu Kollisionen und erneuten Übertragungen. Ausgefallene Schalter eliminieren eine Menge davon, aber nicht alle.

Bei Ethernet sollten Sie mit einer Bandbreite von ca. 30-40 Prozent rechnen (Sie sehen so aus, als ob Sie diese erhalten ... Ich könnte mich bei der genauen Anzahl irren, hängt stark von der Switch-Qualität ab usw.), bevor es zu vielen Kollisionen mit der Fabric-Technologie kommt so etwas wie 80%. Ethernet ist billig, Fibre Channel nicht. . . Ich bin nicht sicher, was 4G Ethernet tut, um dies zu umgehen. . . Möglicherweise hat es eine "Fabric" -ähnliche Netzwerktopologie, die Fibre Channel und Freunden ähnelt. Dies ist eine übermäßige Vereinfachung, aber im Wesentlichen richtig.


2
Ja, ich benutze keinen "dummen" Hub. Ich denke, die meisten Menschen werden heutzutage intelligente Switches oder Router verwenden, die Geräte direkt miteinander verbinden, um Kollisionen zu vermeiden. Außerdem umfasst mein Test nur zwei Geräte, die an einen einzelnen Router angeschlossen sind, sodass Kollisionen in meinem speziellen Fall kein Problem darstellen.
Davr

davr - Entschuldigung, während ich für einen Moment den Anwalt der Teufel spiele. . . Was hindert Ihre beiden Hosts daran, gleichzeitig zu sprechen? Außerdem haben Sie nicht erwähnt, welche Art von Daten übertragen werden. . . Handelt es sich fast ausschließlich um TCP oder gibt es viele Datenströme (Audio, Video usw.)? Übertragen beide Computer gleichzeitig Daten oder besteht eine präzisere Abgrenzung zwischen Client und Server?
TheEruditeTroglodyte

2
Ich verwende ein spezielles TCP / IP-Benchmarking-Programm, bei dem nur ein Computer sendet und der andere lauscht. Trotzdem ist Ethernet Vollduplex. Wenn Sie nur zwei Computer haben, können beide gleichzeitig die volle Bandbreite senden und empfangen.
Davr
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.