AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Datentransfer über Netzwerk (schnell) (XE2 - INDY)
Thema durchsuchen
Ansicht
Themen-Optionen

Datentransfer über Netzwerk (schnell) (XE2 - INDY)

Ein Thema von harry113 · begonnen am 11. Mär 2013 · letzter Beitrag vom 11. Mär 2013
Antwort Antwort
harry113

Registriert seit: 11. Mär 2013
2 Beiträge
 
#1

Datentransfer über Netzwerk (schnell) (XE2 - INDY)

  Alt 11. Mär 2013, 10:32
Datentransfer über Netzwerk (schnell)

Aufgabenstellung:

Pc sendet über Netzwerk (TCP/IP) eine Datei (auf eigene Hardware)

Erledigt wird das über Delphi XE2 und den mitgelieferten Indy Komponenten
(IdTCPClient.IOHandler.Write(aStream, 0, false)

Funktioniert soweit auch, aber es muss noch die Geschwindigkeit erhöht werden (PC-seitig). Derzeitig erreiche ich ca. 56MB/s mit einem Quadcore i5-Gigabit Netzwerkkarte.


Welche Möglichkeiten habe ich die Performance zu erhöhen?
(Einstellungen / andere Komponenten etc...)

Was ist erfahrungsgemäß ca. die max. mögliche Datendurchsatzrate bei Gigabit Netzwerk und Indy?

Irgendwelche weiteren Tips/Einstellungen?

TIA,

harry

Geändert von harry113 (11. Mär 2013 um 10:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Datentransfer über Netzwerk (schnell) (XE2 - INDY)

  Alt 11. Mär 2013, 10:44
Wie schnell kannst du denn die Datei beim Client von der Platte lesen?
Wie schnell kannst du denn die Datei beim Server auf die Platte schreiben?

Schreibe ein kleines Testprogramm, was einen (Memory)Stream (auf beiden Seiten!) mit unterschiedlichen Größen vom Client zu Server schickt und messe die Zeit. Damit kannst du den max. Durchsatz ermitteln.

Der langsamste Part (Client lesen von Platte, Übertragung der Daten, Server schreiben auf Platte) bestimmt den max. Durchsatz für dein Programm.

Klingt zwar komisch, ist aber so
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
harry113

Registriert seit: 11. Mär 2013
2 Beiträge
 
#3

AW: Datentransfer über Netzwerk (schnell) (XE2 - INDY)

  Alt 11. Mär 2013, 11:00
Hi,

>Wie schnell kannst du denn die Datei beim Client von der Platte lesen?
ca. 400 MB/s (Solid State)

>Wie schnell kannst du denn die Datei beim Server auf die Platte schreiben?
ist eigene Hardware, Daten werden dort entgegengenommen und direkt ins Ram geschrieben -> ca. 85MB/s (aufgrund Hardware-Limitationen)

Testprogramm derzeitig liefert ca. 56 MB/s und da sollte noch etwas "Luft" nach oben sein... Der Hardware-Entwickler meint das der PC "relativ" lange braucht um die Ack's der Datenpakete auszuwerten. Derzeit werden 6 Datenpakete a 1460 Bytes geschickt, danach die Ack's und danach die nächsten 6 Datenpakete. Mehr Datenpakete oder grössere Datenpakete schicken geht nicht (begrenzter Eingangspuffer auf Hardware).

Kann ich Pc-seitig noch was unternehmen um den Datendurchsatz zu erhöhen?

TIA,

harry
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Datentransfer über Netzwerk (schnell) (XE2 - INDY)

  Alt 11. Mär 2013, 12:06
Welche Möglichkeiten habe ich die Performance zu erhöhen?
(Einstellungen / andere Komponenten etc...)
Die Ararat Synapse Komponenten (Open Source) sind teilweise etwas "schlanker" als Indy implementiert. In meinen Performancetests lagen sie meist um einge Prozent über den Indy Komponenten - vielleicht sind sie auch in diesem Anwendungsfall geeignet. Von der Ansteuerung her sind sie Indy ähnlich (synchrone / blockierende Sockets).
Michael Justin
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Datentransfer über Netzwerk (schnell) (XE2 - INDY)

  Alt 11. Mär 2013, 12:47
Wenn es wirklich um pure Geschwindigkeit geht, warum nicht gleich direkt über native WinSocket-Aufrufe? Schneller als das kann es mit Sicherheit nicht werden, oder?
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 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