Latenzzeitmessung der seriellen Schnittstelle

(Firma: Linux© User Group Augsburg e.V) Persönliche Seite #3522096
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.
Angehängte Dateien:
Gast #3523306
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...
Persönliche Seite #3523965
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 ;)
(Firma: Linux© User Group Augsburg e.V) Persönliche Seite #3529916
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.
Gast #3530191
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.
(Firma: Linux© User Group Augsburg e.V) Persönliche Seite #3533171
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.
Gast #4185973
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.
Gast #4185995
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.
Gast #4186104
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren