Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Netto Datenrate bei Gigabit Verbindungen (https://www.delphipraxis.net/93870-netto-datenrate-bei-gigabit-verbindungen.html)

creality 12. Jun 2007 15:06


Netto Datenrate bei Gigabit Verbindungen
 
Hallo Forum,

hat jemand von Euch Erfahrungen sammeln können, inwiefern es eine maximale Datanrate im Netzwerk gibt?

Ich schreibe ein Client/Server Tool mit Indy10. Leider kann ich nur ca. 12MByte/s über Gigabit übertragen. Schneller wirds einfach nicht. Die Frage ist nun, liegts am Indy Stack oder ist Windows schuld oder einfach meine CPU die während des sendens auf bedrohliche 80% Last hochfährt.

Ist es mal jemanden gelungen Daten mit 30MByte/s zu übertragen z.b.??

:coder2:

ManuMF 12. Jun 2007 15:21

Re: Netto Datenrate bei Gigabit Verbindungen
 
Lässt du während dem Senden irgendwas aktualisieren, z.B. eine ProgressBar?

Ich hab mit den Indys ein HTTP-Uploadprogramm geschrieben, und wenn ich da bei nem Loopback-Upload die Bar aktualisiere, geht die CPU auch auf 100% hoch.

Bernhard Geyer 12. Jun 2007 15:26

Re: Netto Datenrate bei Gigabit Verbindungen
 
Lokale Firewalls aktiv?

creality 12. Jun 2007 15:35

Re: Netto Datenrate bei Gigabit Verbindungen
 
Hallo,

keine Firewalls. Und auch keine Progressbar. Reine Formapplikation ohne Schnickschnack. Einzig eine JCL Lib zum Messen der zeit und zum ausrechnen der Datanrate.

Ich versuche grad das Tool um UDP zu erweitern. Mal sehen was da rauskommt.

creality 12. Jun 2007 15:37

Re: Netto Datenrate bei Gigabit Verbindungen
 
PS: Vergessen zu erwähnen.

Wenn ich Daten via Windows Freigabe übertrage, komme ich auch nur auf 15-18Mbyte/s. Rein theoretisch immernoch zu langsam. Meine Festplatte schafft ca. 40MByte bei Read/Write. Das dürfte nicht der Flaschenhals sein.

Bernhard Geyer 12. Jun 2007 15:45

Re: Netto Datenrate bei Gigabit Verbindungen
 
Schlechte Netzwerkkarte oder Vista am laufen?

Der_Unwissende 12. Jun 2007 15:57

Re: Netto Datenrate bei Gigabit Verbindungen
 
Zitat:

Zitat von creality
PS: Vergessen zu erwähnen.

Wenn ich Daten via Windows Freigabe übertrage, komme ich auch nur auf 15-18Mbyte/s.

HI,
die Windows-Freigabe sollte keine Referenz darstellen, da wird ein Protokoll verwendet, dass als sehr ineffizient gilt.

Zitat:

Zitat von creality
Rein theoretisch immernoch zu langsam. Meine Festplatte schafft ca. 40MByte bei Read/Write. Das dürfte nicht der Flaschenhals sein.

Was für eine Karte verwendest Du denn? Bei 40 MByte der Festplatte, worauf beziehen die sich? Dauertransfer? Durchschnitt bei mehreren Dateien (also inkl. SeekTime)? Und was Du nicht vergessen darfst ist immer, dass die Festplatte auch noch von anderen Programmen (nicht zuletzt Windows) verwendet wird. Hier kann es dann auch schnell dazu kommen, dass die andere Dinge zu tun hat.

Der Wichtigste Punkt ist aber ganz klar, was für eine Netzwerkkarte verwendest Du und was für ein Netzwerkkabel? Bei 40 MByte/s Festplatte klingt das für mich etwas nach OnBoard Ethernet-Adapter auf einem Laptop-Mainboard. Da brauchst Du Dich dann nicht wundern, da nur der Puffer mit 1000 MBit voll läuft (abzüglich dem Overhead des Übertragungsprotokolls). Jedenfalls sind die Leitungen i.d.R. hoffnungslos unterdimensioniert und mit etwas Pech landen die Daten auch entsprechend langsam am Bestimmungsort.
Die andere Frage ist dann noch, was für ein Kabel Du verwendest? Hast Du ein Cat5, ein Cat5e, ein Cat6, ..? Bei hohen Übertragungsraten aktueller HW kommt es immer besonders darauf an, dass Du Dich möglichst an die vorgegebenen Mindestanforderungen hälst. Hier dürften unshielded Kabel eine super Antenne für alle Störsignale darstellen und schnell ganze Pakete so stark beeinflussen, dass Du eine hohe Anzahl von nötigen Korrekturen hast und eben auch dazu, dass die Geschwindigkeit runtergeregelt wird.
Nicht zuletzt ist es nicht unwichtig, wer der Empfänger ist? Was wird hier wiederum für eine Karte verwendet? Wie viele andere Rechner sind mit dem Verbunden? Was liegt zwischen den beiden? Wenn hier ein (preiswerterer) Switch zum Einsatz kommt kann auch dort Zeit verloren gehen.

Du siehst, es gibt jede Menge Punkte, die entscheidend seien können. Zudem solltest Du mal schauen, in wie weit Du einfach mal die Rahmengröße erhöhst, gerade in einem LAN mit guten Leitungen sollte das wenig Probleme machen, wenn die meisten Pakete ohne Probleme/Störung übertragen werden.

Gruß Der Unwissende

Phoenix 12. Jun 2007 16:12

Re: Netto Datenrate bei Gigabit Verbindungen
 
Ggf. ein billiger LAN-Chip, der die Datenrate drosselt?

Schafft es Dein Chipsatz, die Daten von der Platte über den Bus durch den Speicher (im Worst Case durch die CPU) auf den Bus, über die Netzwerkkarte auch mit der maximalen Platten-Datenrate zu bewegen? Ich wage es zu bezweifeln ;-)

Schau mal hier: http://www.pro-linux.de/work/tuning/messen.html#ToC8

shmia 12. Jun 2007 16:25

Re: Netto Datenrate bei Gigabit Verbindungen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang mein Programm NetSpeed.
Es misst die Nettodatenrate zu einem Server auf dem "einfache TCP/IP-Dienste" laufen müssen.
Genauer: Datenpakete verschiedener Grösse werden über TCP oder UDP werden zum Echo-Port (7) geschickt.
In meinem lokalen Netzwerk mit 100 MBit vollduplex werden ca. 11 MByte/s erreicht. Das ist ein normaler Wert.
In deinem Fall müssten es ~ 100 MByte/s sein.

Nachtrag:
ich verwende nicht den Echo-Port, sondern den Discard-Port (9).
Der Discard-Port ist sozusagen ein Mülleimer, während der Echo-Port die Daten an den Absender zurückwirft.

mschaefer 12. Jun 2007 16:32

Re: Netto Datenrate bei Gigabit Verbindungen
 
Moin zusammen,

also meiner Erfahrung nach sind Prozessor und Festplatte und Motherboardbusse bei heutigen Systemen zu vernachlässigen. Bei den 54MBit Karten gibt es häufig eine Grenze bei 18MBit mit Verschlüsselung, die einfach soviel Bandbreite zieht. Ich habe öfters Probleme mit der Zusammenarbeit verschiedener Kartenhersteller gehabt. Gleiche Karten laufen immer besser zusammen.

Deutliche unterschiede habe ich in verschiedenen Kanälen festgestellt. WLan reagiert doch recht empfindlich auf Störungen. Also freien Kanal suchen. Manchmal hilft es Therserhold-Zeiten kleiner zu setzen und / oder Karten explizit auf eine feste Datenrate zu setzen, da das dauernde neu Verhandeln auch Zeit braucht.

Grüße // Martin

kalmi01 13. Jun 2007 06:33

Re: Netto Datenrate bei Gigabit Verbindungen
 
Moin moin,
Zitat:

Zitat von shmia
Im Anhang mein Programm NetSpeed.

Kannst Du bitte noch die '..\..\BIZERBA\LIB\UStopWatch.pas' dazu packen ?

creality 13. Jun 2007 07:04

Re: Netto Datenrate bei Gigabit Verbindungen
 
Morgen,

also um die Fragen zu beantworten:

Server: Dell Workstation Quad Core mit OnBoard Lan von Intel (Extreeme Gigabit blablabla), Client ist ein Dell Laptop ebenfalls mit OnboadLan (Broadcom NetXtreme 57xx Gigabit Controller).

Kein Switch, nur ein CrossOver Kabel. Kabellänge ist 3m. Das schlimmste ist, der Dell Server schickt die Daten noch langsamer raus als der laptop.

@shmia: Dein Tool werde ich sofort mal testen.

Und nochwas: Um wirkliche Messungen machen zu können, habe ich aus einer Datei auf der Platte einen MemStream erzeugt und verschicke direkt den MemStream über TCP direkt in einen Leeren MemStream auf der anderen Seite. So dürften die Festplattenprobleme eigentlich nicht stören da ich ja nur im Mem arbeite. Seltsamerweise stellt das keinen Geschwindigkeitsgewinn dar.

:pale:

SirThornberry 13. Jun 2007 07:56

Re: Netto Datenrate bei Gigabit Verbindungen
 
wenn du nur geschwindigkeitsmessungen machen willst brauchst du eigentlich gar keinen stream sondern schickst einfach nur Daten die empfangen und sofort verworfen werden. Ansonsten, wenn zu viel verschickt wird, wird auch irgendwann auf die Festplatte augelagert.

creality 13. Jun 2007 08:30

Re: Netto Datenrate bei Gigabit Verbindungen
 
Ich will eigentlich keine Messungen durchfürhren. Ist nur das notwenidige Übel da die Übertragung zu lange dauert. Ich muss ca. 60MByte/s übertragen.

OldGrumpy 13. Jun 2007 08:48

Re: Netto Datenrate bei Gigabit Verbindungen
 
Für solche Durchsätze mit garantierten Mindestdatenraten ist Ethernet keine gute Wahl, da gibts andere (speziellere) Methoden. Schau Dir mal die Durchsatztests der C't mit Gigabit-Ethernet-Chips an, der Sprung von Faktor 10 in der Bruttorate bedingt leider überhaupt nicht einen ebensolchen Sprung beim Nettodurchsatz. Was für Strecken musst Du überbrücken, welche Hardware ist Pflicht?

SirTwist 13. Jun 2007 09:30

Re: Netto Datenrate bei Gigabit Verbindungen
 
Ohne das Tool von shmia schlecht machen zu wollen, aber es gibt seit vielen Jahren das Programm "NetIO", das unter Windows, Linux, OS/2, DOS... läuft und einen recht aussagekräftigen Performancetest im Netzwerk durchführen kann.

Man findet das Programm am einfachsten auf dem Heise-Server.

Das Programm muss auf einem der PCs als Server gestartet werden, auf dem anderen als Client, der sich zu dem Serverprogramm verbindet. Dabei kann man angeben, ob TCP oder UDP benutzt werden soll und welcher Port genutzt werden soll.

Danach werden mit unterschiedlichen Paketgrößen Daten gesendet und empfangen. Die Messwerte werden für Sende- und Empfangsrichtung getrennt ausgegeben.

Hat mir schon oft weitergeholfen.

creality 13. Jun 2007 10:07

Re: Netto Datenrate bei Gigabit Verbindungen
 
@OLD:

Ich möchte quasi Bilder von einem Fotoapperat übers Lan verschicken. Der Foto macht 5Bilder/s mit 11MByte pro Bild. Also Input 55MByte/s. Ich dachte das Gigabit ausreichend ist, ich hatte mit Nettorate von 80MByte/s gerechnet da Brutto in etwa bei 120MByte liegt. Also 40MByte für Overhead und sonst was. Wenn das nicht aussreicht, muss ich auf "FibreChannel" aufrüsten. Allerdings ist das auch wieder eine Preisfrage...denn so eine Karte kostet wohl 2K€.

PS: OS ist und bleibt XP. Kein Vista.

OldGrumpy 13. Jun 2007 10:23

Re: Netto Datenrate bei Gigabit Verbindungen
 
11 MB Rohdaten sollten sich bei der niedrigen Bildrate aber mit schnellen Algorithmen schon "in Echtzeit" komprimieren lassen. Selbst wenn da nur 2:1 Kompression rauskommt ist damit schonmal viel gewonnen.

Ansonsten musst Du halt auf FC ausweichen. Wenn keine großen Strecken zu überwinden sind, könnte auch ein SCSI-Bus infrage kommen. Da müsste man dann aber mehr Arbeit in die Programmierung für den Transfer stecken.

Ansonsten mal die TCP-Parameter auf allen beteiligten Rechnern checken:

- Windowgröße (nein, nich auf dem Desktop)
- MaxMTU
- Sind alle Komponenten Jumboframe-tauglich und auch entsprechend konfiguriert?

Und unbedingt hochwertige Netzwerkkarten einsetzen. Billige Karten lagern oft Teile der Funktionalität in Software (den Treiber) aus, das führt bei massivem Durchsatz dann zu hohen Systemlasten die sonst lastneutral auf der Netzwerkkarte selbst abgewickelt würden. Meist erkennt man solche besseren NICs an Zusätzen wie "Server" :)

CCRDude 13. Jun 2007 10:34

Re: Netto Datenrate bei Gigabit Verbindungen
 
11 MB Rohdaten klingt sehr stark nach RAW, so ungefähr 10 Megapixel-Kamera. Und da bringt keine Komprimierung mehr etwas (bzw. die 0,5%, die man spart, stehen in keinem Verhältnis...).

creality 13. Jun 2007 10:37

Re: Netto Datenrate bei Gigabit Verbindungen
 
Tja mit den Frames ist so ne Sache.

JumboFrames...ehrlich gesagt, weiss ich nicht wo ich da nachguggn soll. Ich nehme Indy10 als Netzwerk Stack. UDP Frames dürfen meiner Meinung nach nur 512Byte groß sein, sonst werden sie später von der MAC geteilt (Bin mir aber nicht sicher).

Eine RLE finde ich, ist eine gute Möglichkeit um Bandbreite zu sparen. Sind ja immerhin RAW Bilder (Bayer codiert) und da dürfte das sogar funktionieren. Ich werds mal testen.

Die MTU ist default, sollte man die hochsetzen? und wenn ja, wie hoch?

Udontknow 13. Jun 2007 10:41

Re: Netto Datenrate bei Gigabit Verbindungen
 
Hallo!

Zum Code:

Delphi-Quellcode:
repeat
      for i := 1 to 50 do
      begin
   //      IdTCPClient1.WriteBuffer(s[1], bufsize); // Indy 9
         IdTCPClient1.IOHandler.Write(s);           // Indy 10
         Inc(packets);
      end;
   until sw.Seconds > 3.0;
Das ist nicht performant. Um große Datenmengen zu versenden, solltest du nicht ständig wiederholt kleine Schnipsel senden, sondern ein großes Paket schnüren, daß mit einem Sendebefehl auf die Reise geht.

Ich verweise mal auf folgenden Thread, dort gibt es am Threadende Codeschnipsel für die Übertragung eines größeren Streams...

Cu,
Udontknow

creality 13. Jun 2007 11:13

Re: Netto Datenrate bei Gigabit Verbindungen
 
Ja das ist richtig. Bei TCP macht es auch keinen Sinn sich selber um die Pakete zu kümmern.

So sende ich TCP (der Stream ist dabei 11MByte groß)
Delphi-Quellcode:
// Send Buffer Size
Context.Connection.IOHandler.Write(Size);

// Send Stream
Log('[Send STREAM]', clGreen);
AContext.Connection.IOHandler.Write(stream);
Allerdings geht das bei UDP nicht. Hier muss man selber aufteilen...bei:
Delphi-Quellcode:
udpserver.SendBuffer('192.168.0.222', 1025, IdGlobal.Id_IPv4, TempBuffer);
Dabei ist TempBuffer vom Typ: TIdBytes und Ebenfalls 11MByte groß. Hier wird aber eine Exception ausgelöst: Buffersize too big.

Allerdings ist das auch nicht das Thema. Ich hab mit dem Tool: NETIO vom Heiseserver die selben Werte erzielt. Maximal 15MByte beim Senden.

shmia 13. Jun 2007 12:52

Re: Netto Datenrate bei Gigabit Verbindungen
 
Zitat:

Zitat von creality
Ich hab mit dem Tool: NETIO vom Heiseserver die selben Werte erzielt. Maximal 15MByte beim Senden.

Hast du auch alle beteiligten Netzwerkkarten explizit auf 1000MB & full duplex eingestellt.
Bei der Einstellung "Auto" handeln die Karten die Übertragungsrate selber aus.
Dabei kann es passieren, dass sich jeder auf den anderen einstellen möchte => Leistungseinbruch

creality 13. Jun 2007 13:36

Re: Netto Datenrate bei Gigabit Verbindungen
 
Tja das ist eine gute Vermutung...Speed geht nur bis 100MBit Full. Im Treiber ist keine Einstellung von 1000MBit zu sehen. Treiber ist aber eben schon der aktuellste...

die selbe karte ist bei beiden Rechnern drin. aber im Windows Taskmenu steht beim Icon: 1GB

creality 13. Jun 2007 14:29

Re: Netto Datenrate bei Gigabit Verbindungen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Für die, dies interessiert:

Ich hab das kleine Tool von [shmia] noch ein bisschen erweitert...ich hoffe das is ok? Wenn nicht, dann lösch ich den Eintrag wieder. Einfach melden.

NEWS
--------------------
1. UDP Server implementiert
2. TCP Server implementiert
3. Tool ist Server und Client gleichzeitig
4. UDP IST NICHT FERTIG!

Usage
--------------------
1. Tool einmal auf einem Server starten und Serverparameter setzen
2. Tool einmal auf einem Client starten und Serverparameter eintragen
3. Connecten (TCP!)

ToDo
--------------------
1. UDP Fertig machen - hat jemand Zeit???
2. Optik bissel besser gestalten
3. Bugs ausbessern

Wer Lust hat, nehme sich das Tool und bastelt einfach dran rum. Vielleicht hilfts dem einen oder anderen. Wenn was geändert wurde, postet es wieder hier rein. Vielleicht entsteht so ein kleines feines Netzwerk Traffic Test Tool für Leute die sowas mal brauchen.

shmia 13. Jun 2007 15:26

Re: Netto Datenrate bei Gigabit Verbindungen
 
Zitat:

Zitat von creality
Ich hab das kleine Tool von [shmia] noch ein bisschen erweitert...ich hoffe das is ok?

Is ok. Sollte nur so sein, dass weiterhin die Möglichkeit besteht, über den Port 9 (Discard)
die Verbindung zu jedem beliebigen Windows- oder Unix-Server zu messen.
(ohne dass man das Tool auf dem Server starten muss)

creality 14. Jun 2007 06:47

Re: Netto Datenrate bei Gigabit Verbindungen
 
Ok, könnte man ja wieder einbinden.

Also Client/Server und/oder Discard oder Echo. Wenn die Ports nicht gebklockt sind. So wars bei mir. Darum der Server.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz