ECMD Geschwindigkeit: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
K (Software für Messungen: Java-Implementierung des Tests auf github.com (als gist))
(Messungen auf verschiedener Hardware: added measurement with ATMega1284p)
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
  
 
=== Pollin AVR-NET-IO mit ATMega32 ===
 
=== Pollin AVR-NET-IO mit ATMega32 ===
==== Stark reduzierte Konfiguration (TCP, UDP, USART for ECMDs, Time support, no httpd) ====
+
'''Stark reduzierte Konfiguration (TCP, UDP, USART for ECMDs, Time support, no httpd)'''
  
 
{| border='1'
 
{| border='1'
Zeile 39: Zeile 39:
  
 
Die verwendete ethersex Version ist der Commit [http://github.com/ethersex/ethersex/commit/e9c8928fcbf110fb5ddb5aacc08226a012e6da64 e9c8928] mit einer Laufzeit (whm) von mittlerweile 817 Stunden (34 days). Kaum andere Werte ergibt die aktuellere Version des Commits [http://github.com/ethersex/ethersex/commit/608809bf3b64dedab1a0dd531dc3b007ca3ff665 608809b].
 
Die verwendete ethersex Version ist der Commit [http://github.com/ethersex/ethersex/commit/e9c8928fcbf110fb5ddb5aacc08226a012e6da64 e9c8928] mit einer Laufzeit (whm) von mittlerweile 817 Stunden (34 days). Kaum andere Werte ergibt die aktuellere Version des Commits [http://github.com/ethersex/ethersex/commit/608809bf3b64dedab1a0dd531dc3b007ca3ff665 608809b].
 +
 +
Gemessen von pklaus.
 +
 +
=== Pollin AVR-NET-IO mit ATMega1284p (16MHz) ===
 +
'''Standard-Konfiguration (TCP, kein UDP, kein System clock support, inkl. httpd)'''
 +
 +
{| border='1'
 +
| ''Beantwortete Anfragen pro Sekunde''
 +
| ''Weg der Anfrage''
 +
| ''gesandtes ECMD''
 +
|-
 +
| 348
 +
| Netzwerk, TCP
 +
| adc get
 +
|-
 +
| 453
 +
| Netzwerk, UDP
 +
| adc get
 +
|-
 +
|}
 +
 +
Die verwendete ethersex Version ist der Commit [http://github.com/ethersex/ethersex/commit/5f7cc061426379ba0b844bba5eddc073beb6df2e 5f7cc06].
  
 
Gemessen von pklaus.
 
Gemessen von pklaus.
Zeile 128: Zeile 150:
 
== Software für Messungen ==
 
== Software für Messungen ==
  
Für die Messung wurde das Python-Projekt avrnetio von pklaus verwendet. Es ist  
+
Für die Messung wurde das Python-Projekt avrnetio von pklaus verwendet. Es ist [http://github.com/pklaus/avrnetio hier von github] erhältlich. Für die Kommunikation über die serielle Schnittstelle wird pySerial verwendet. Die TCP/UDP Kommunikation ist mit python sockets implementiert; TCP hierbei mit persistenter Verbindung. Konkret genutzt wurden die beiden Skripte example.highSpeedMeasurement.py und example.highSpeedMeasurementSerial.py, in denen für einen eigenen Test die IP Adresse (und ev. der Port) anzupassen ist.
[http://github.com/pklaus/avrnetio 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
+
Zudem wurde die Geschwindigkeitsmessung auch schon [http://list.zerties.org/pipermail/ethersex-devel/2009-February/000724.html von Oliver Reimann in Java implementiert] . Sein Code ist (von pklaus leicht modifiziert) als [http://gist.github.com/272095 gist auf github.com]
  
 
[[Kategorie:ECMD]]
 
[[Kategorie:ECMD]]

Aktuelle Version vom 10. April 2011, 13:52 Uhr

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.

Pollin AVR-NET-IO mit ATMega1284p (16MHz)

Standard-Konfiguration (TCP, kein UDP, kein System clock support, inkl. httpd)

Beantwortete Anfragen pro Sekunde Weg der Anfrage gesandtes ECMD
348 Netzwerk, TCP adc get
453 Netzwerk, UDP adc get

Die verwendete ethersex Version ist der Commit 5f7cc06.

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 Kommunikation über die serielle Schnittstelle wird pySerial verwendet. Die TCP/UDP Kommunikation ist mit python sockets implementiert; TCP hierbei mit persistenter Verbindung. Konkret genutzt wurden die beiden Skripte example.highSpeedMeasurement.py und example.highSpeedMeasurementSerial.py, in denen für einen eigenen Test die IP Adresse (und ev. der Port) anzupassen ist.

Zudem wurde die Geschwindigkeitsmessung auch schon von Oliver Reimann in Java implementiert . Sein Code ist (von pklaus leicht modifiziert) als gist auf github.com