Forum: Projekte & Code Latenzzeitmessung der seriellen Schnittstelle


von Jakob F. (jmf123) Benutzerseite


Angehängte Dateien:

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
von Route_66 (Gast)


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...

von Julian W. (julian-w) Benutzerseite


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 ;)

von Jakob F. (jmf123) Benutzerseite


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.

von W.S. (Gast)


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.

von Route_66 (Gast)


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.

von Jakob F. (jmf123) Benutzerseite


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.

von Jakob F. (Gast)


Lesenswert?

Ich habe vorhin ein kurzes Video gemacht:
https://youtu.be/2HOwFQcZfV4

von Bastler (Gast)


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.

von Jakob F. (Gast)


Lesenswert?

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

von Bastler (Gast)


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.

von Jakob F. (Gast)


Angehängte Dateien:

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.