ECMD Geschwindigkeit: Unterschied zwischen den Versionen
Pklaus (Diskussion | Beiträge) K (→Pollin AVR-NET-IO mit ATMega32: details zur Messung hinzugefügt) |
Pklaus (Diskussion | Beiträge) K (→Software für Messungen: Java-Implementierung des Tests auf github.com (als gist)) |
||
Zeile 133: | Zeile 133: | ||
Für die serielle Kommunikation wird pySerial verwendet, für Netzwerk python sockets (TCP mit persistenter Verbindung). Konkret genutzt wurden die beiden Skripte example.highSpeedMeasurement.py und example.highSpeedMeasurementSerial.py, die für eine eigene Untersuchung anzupassen wären. | Für die serielle Kommunikation wird pySerial verwendet, für Netzwerk python sockets (TCP mit persistenter Verbindung). Konkret genutzt wurden die beiden Skripte example.highSpeedMeasurement.py und example.highSpeedMeasurementSerial.py, die für eine eigene Untersuchung anzupassen wären. | ||
− | + | Ebenso wurde die Geschwindigkeitsmessung auch schon von Oliver Reimann in Java implementiert: http://list.zerties.org/pipermail/ethersex-devel/2009-February/000724.html . Sein Code ist (von pklaus leicht modifiziert) auch hier zu finden: http://gist.github.com/272095 | |
[[Kategorie:ECMD]] | [[Kategorie:ECMD]] |
Version vom 8. Jänner 2010, 16:43 Uhr
Inhaltsverzeichnis
ECMD Geschwindigkeit
Wenn du dein ethersex mit ECMD in einer hohen Geschwindigkeit angesprechen möchtest, ist für dich die Rate wichtig, in der das ethersex in der Lage ist, ECMD Anfragen zu beantworten. Im Folgenden sind einige Werte aufgeführt, die einen Anhaltspunkt dazu geben können.
Messungen auf verschiedener Hardware
Pollin AVR-NET-IO mit ATMega32
Stark reduzierte Konfiguration (TCP, UDP, USART for ECMDs, Time support, no httpd)
Beantwortete Anfragen pro Sekunde | Weg der Anfrage | gesandtes ECMD |
480 | Netzwerk, TCP | adc get |
627 | Netzwerk, TCP | whm |
525 | Netzwerk, UDP | adc get |
688 | Netzwerk, UDP | whm |
17 | T-DSL 2000, TCP | adc get |
32 | RS232 (115200 baud) | adc get |
Die verwendete ethersex Version ist der Commit e9c8928 mit einer Laufzeit (whm) von mittlerweile 817 Stunden (34 days). Kaum andere Werte ergibt die aktuellere Version des Commits 608809b.
Gemessen von pklaus.
Atmega168p, USB mit FT232R
Beantwortete Anfragen pro Sekunde | Weg der Anfrage | gesandtes ECMD |
299 | TCP, serielles ZBUS über FT232R, 460800 Baud | whm |
250 | TCP, serielles ZBUS über FT232R, 460800 Baud | adc get |
Der Atmega168p läuft mit 18.432 MHz und lässt sich damit mit maximal 460800 Baud ansteuern. Bei 921600 Baud ging nichts mehr, vermutlich kommt das nächste Byte noch innerhalb des Receive-Interrupts. Mögliche Zwischenwerte wie z.B. 691200 hab ich nicht probiert, weil auf dem PC dann das Setzen der Baudrate komplizierter wird.
Details zum verwendeten Board gibts hier, gemessen von Gerd.
Atmega32 mit 12 MHz, Software-USB
Beantwortete Anfragen pro Sekunde | Weg der Anfrage | gesandtes ECMD |
53 | TCP, Software-USB | whm |
44 | TCP, Software-USB | adc get |
Gemessen von Andy.
Ein Atmega168 mit 16 MHz erreicht die selben Werte. Hier scheint der USB-Stack den Durchsatz zu begrenzen.
Pollin AVR-NET-IO, Atmega644p, 16 MHz
Stark reduzierte Konfiguration
Beantwortete Anfragen pro Sekunde | Weg der Anfrage | gesandtes ECMD |
607 | TCP, Ethernet | whm |
462 | TCP, Ethernet | adc get |
Konfiguration mit rfm12,Syslog,NTP,http usw.
Beantwortete Anfragen pro Sekunde | Weg der Anfrage | gesandtes ECMD |
116 | TCP, Ethernet | whm |
111 | TCP, Ethernet | adc get |
Gemessen von Andy.
Wie man hier gut erkennen kann, ist die verwendete Konfiguration ein wichtiges Kriterium für die tatsächlich erreichbare Geschwindigkeit.
Software für Messungen
Für die Messung wurde das Python-Projekt avrnetio von pklaus verwendet. Es ist hier von github erhältlich.
Für die serielle Kommunikation wird pySerial verwendet, für Netzwerk python sockets (TCP mit persistenter Verbindung). Konkret genutzt wurden die beiden Skripte example.highSpeedMeasurement.py und example.highSpeedMeasurementSerial.py, die für eine eigene Untersuchung anzupassen wären.
Ebenso wurde die Geschwindigkeitsmessung auch schon von Oliver Reimann in Java implementiert: http://list.zerties.org/pipermail/ethersex-devel/2009-February/000724.html . Sein Code ist (von pklaus leicht modifiziert) auch hier zu finden: http://gist.github.com/272095