Netzwerk Test mit iperf -> inkonsistente Ergebnisse

  • Hallo,


    Kennt jemand iperf? Das soll die Netzwerkübertragung messen.

    In meinen Beobachtungen liefert es inkonsistente Ergebnisse.

    Was mache ich falsch?


    Mein Netzwerk hat zwei Teile (durch TV-Koax Kabel verbuden via MoCA. Warum und wieso tut nichts zur Sache)


    Teil 1:

    Router

    RPI4#1 (hier iperf server)


    Teil2:

    1GB switch

    PC (Win7)

    RPI4#2


    Anzeige von iperf jeweils zum Server auf RPI#1

    PC iperf (win64 build) 307Mbit/sec

    RPI iperf (ARM Version) 931Mbit/sec


    Test Dateikopie:

    2.097E9 Byte von PC nach RPI#1 126sec -> 133Mbit/sec

    1.196E9 Byte von RPI#2 nach RPI#1 70sec -> 136Mbit/sec


    Wo kommt die Diskrepanz her?


    Clear Skies,

    Gert

  • Hi Gert,


    beim TCP-Protokoll gibt gibt es eine sog. "Window-Size". Die muss auf Server- und Client-Seite zusammen passen für optimalen Transfer. Von RPi zu RPi wird diese gleich sein. und von Windows aus unterschiedlich. Versuche es mal mit den Optionen "-V", um mehr Info zu bekommen und mit "-w 128k" von Windows aus, um diese Windowsize zu erhöhen.


    Beim Datei kopieren, kommt es darauf an, worüber Du das machst, eventuell verschlüsselt? Dann ist eine CPU einfach langsamer als die Daten ankommen.


    Gruß

    Jörg

  • Hi Jörg,


    Danke für die Info. Die Blockgröße scheint es nicht zu sein. Beide verwenden 128k. Die iperf Version bei Windows ist 3.1 und bei Linux 3.6. Aber ob das so einen signifikanten Unterschied macht?



    Beim Kopieren verwende ich SMB. Windows und auch der RPI haben eine Partition als SMB-Share. Von da wird eine Datei zum anderen RPI kopiert. (Per drag-drop im Dateimanager) Natürlich kann da 'Overhead' in SMB sein. Aber das sollte bei beiden gleich anfallen.


    Naja, der reale Anwendungsfall ist ja die Kopie, und da sind beide gleich. Komisch nur, dass iperf so daneben liegt. Das wird bei einer Menge RPI Youtube Tutorials immer als Vergleichsreferenz für Netzwerkperformance genommen.


    Danke nochmal für die Ratschläge & Clear Skies,

    Gert

  • Hi Gert,


    der einzige Unterschied der mir noch auffällt, ist TCP MSS (maxumum segment size). "0" bedeutet eigentlich default (1448). Setze die mal auf Windows-Seite fix auf den Wert 1448 mit der Option "-M 1448".


    Zum Kopieren, wo kopierst Du den hin? Auf die SD-Karte, eine externe USB-Festplatte (und hier SSD oder HDD)? Und wenn USB, in welchem Port steckt die Platte (die blauen sind die schnelleren). Du kannst die Schreibgeschwindigkeit mit `dd if=/dev/zero of=testfile bs=4M count=10 oflag=dsync && rm testfile` testen. Wenn Du das noch komplexer testen willst, gibt es den Befehl 'fio', der ist aber nicht installiert nehme ich an.


    Gruß

    Jörg

    Einmal editiert, zuletzt von j4s8 () aus folgendem Grund: Edit (noch mehr Info, da ich es erst später gesehen habe): die "byte blocks" gibt nicht die TCP-Windowsize an, sondern die Daten die gesendet werden. Wenn Du die wirkliche TCP-Windowsize angezeigt haben willst, musst Du die debug-Option nehme (-d) aber Achtung, das erzeugt sehr viel Output. Das mit "-w 128k" hast Du aber nicht ausprobiert wie e aussieht?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!