mikrocontroller.net

Forum: Projekte & Code Latenzzeitmessung der seriellen Schnittstelle


Autor: Jakob F. (jmf123) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein kleines Programm geschrieben zur Latenzzeitmessung der 
Datenübertragung an der seriellen Schnittstelle.

Getestet unter Windows 32-Bit, FreeBSD und diversen 
Linux-Distributionen.

Über Feedback würde ich mich freuen.

: Bearbeitet durch User
Autor: Route_66 (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Jakob F. schrieb:
> Über Feedback würde ich mich freuen.

Hallo!
Ich grüble noch darüber, für welches Problem Du hier die Lösung 
anbietest?
Nur wenn ich dieses Problem mal haben sollte, würde ich eine EXE von 
einem Unbekannten runterladen. Erst nach dem Test auf meinem 
Quarantänecomputer könnte ich ein Feedback geben.
Noch suche ich das Problem...

Autor: Julian W. (julian-w) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Route_66 schrieb:
> Nur wenn ich dieses Problem mal haben sollte, würde ich eine EXE von
> einem Unbekannten runterladen. Erst nach dem Test auf meinem
> Quarantänecomputer könnte ich ein Feedback geben.

Im Link ist der Source-Code. Ich glaube die .exe ist was für Leute die 
sich das Programm nicht selbst bauen wollen.

Und Latenz messen kann für kritische Anwendung sicherlich interessant 
sein um zu wissen, wie lange es dauert bis der Befehl im PC auch die 
Außenwelt erreicht, aber konkrete Anwendung hätte ich jetzt auch nicht.
Eventuell kann der Threadstarter ja mal erklären warum er das gebraucht 
hat ;)

Autor: Jakob F. (jmf123) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Konkret habe ich Latenzzeit-Unterschiede eines USB-Seriell-Adapters 
(USB-2 Device) an USB-2- vs. USB-3-Hosts gemessen.

Der USB-Seriell-Adapter ist an einem USB-3-Host unter Linux flotter: im 
Schnitt messe ich für das Senden + Empfangen eines Bytes 0.96ms (USB-2) 
vs. 0.3ms (USB-3) bei 10000 Samples.

Autor: W.S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Julian W. schrieb:
> Und Latenz messen kann für kritische Anwendung sicherlich interessant
> sein um zu wissen, wie lange es dauert bis der Befehl im PC auch die
> Außenwelt erreicht,

ich halte sowas für völlig irrelevant, denn man sollte sich immer vor 
Augen halten, daß einem Programm/Thread die Rechenzeit vom BS nach 
dessen Gutdünken zugeteilt wird.

Deswegen sind etwaige Latenzen im unteren Millisekundenbereich herzlich 
unerheblich. Es ist vielmehr zu erwarten, daß in besagtem "kritischen" 
Fall das Programm erst 50 ms später ein Stück Rechenzeit bekommt und 
deshalb auch erst 50 ms später seine Bytes zur Ausgabe bereitstellen 
kann. Ob dann da noch 0.96 ms dazukommen, ist egal.

W.S.

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> ich halte sowas für völlig irrelevant, denn man sollte sich immer vor
> Augen halten, daß einem Programm/Thread die Rechenzeit vom BS nach
> dessen Gutdünken zugeteilt wird.

Hallo!
Genau das war mein Problem. Ich kann mir deshalb ja den Sinn und Nutzen 
dieses Programmes nicht erklären.

Autor: Jakob F. (jmf123) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> Deswegen sind etwaige Latenzen im unteren Millisekundenbereich herzlich
> unerheblich. Es ist vielmehr zu erwarten, daß in besagtem "kritischen"
> Fall das Programm erst 50 ms später ein Stück Rechenzeit bekommt und
> deshalb auch erst 50 ms später seine Bytes zur Ausgabe bereitstellen
> kann. Ob dann da noch 0.96 ms dazukommen, ist egal.

Das Programm kann unter Linux mit der Option -R gestartet werden, dann 
läuft der Messprozess in der SCHED_FIFO-Klasse. Wenn die Treiber als 
Tasklet laufen und deren Prioritäten entsprechend optimiert sind (vgl. 
etwa http://subversion.ffado.org/wiki/IrqPriorities ), können Ausreißer 
in der Latenzzeit noch weiter minimiert werden.

Autor: Jakob F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe vorhin ein kurzes Video gemacht:
Youtube-Video "Demo of serial-latency-test"

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Programm ist völlig nutzlos.
Es wird nur die Latenzzeit Deines Programms und Deiner Konfiguration 
ermittelt. Die reale Latenz muss die Verarbeitung im MC, die des 
Übertragungsweges, sowie die Erkennung im Anwenderprogramm 
berücksichtigen. Die Latenz ist also naturgemäß je nach MC und 
PC-Anwenderprogramm unterschiedlich. Was soll also Dein Programm zur 
Erkenntnisfindung beitragen? Da braucht es keine zusätzliche 
Latenzmess-Software, es reicht ein 10 Euro Logic-Analyzer um alles 
herauszufinden was man wissen möchte.

Bei meinen Messungen und meinen Programmen liegt die Latenzzeit zwischen 
2 und 4 ms. Wenn der PC allerdings meint was anderes hätte Vorrang kann 
das bis zu 500 ms sein.

Autor: Jakob F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe keinen Logic-Analyter, deswegen ist das Programm für mich von 
Nutzen.

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anscheinend hast Du nicht verstanden was ich oben geschrieben habe.
Dein Programm misst die Latenzzeit an eben diesem.

Die Aussagekraft für beliebige andere Anwender-Programme ist daher 
gleich Null. Daher ist es nutzlos für andere und eher auch für Dich, 
denn wie gesagt, es macht nur eine Aussage für/über Dein Testprogramm.

Autor: Jakob F. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Für andere Programme eine Aussagekraft zu finden, ist nicht der Anspruch 
des Programms.

Ich nutze das Programm vor allem, um auf unterschiedlichen 
Betriebssystemen (Linux, BSD, Windows, OS X) oder unterschiedlicher 
Hardware (Seriell-Adapter an USB 2 vs. USB 3) zu testen, so kann ich die 
Messergebnisse vergleichen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.