Performance UDP Wahl des Controllers

Gast #764038
Lesenswert?

Hallo allerseits,

ich habe vor ein kleines Projekt mit einem Controller durch zu führen. 
Hauptbestandteil dabei ist viele Daten über einen UPD Socket zu 
verschicken. Die einzelnen UDP Packete haben etwa eine größe von 50 
Bytes. Der Controller soll es schaffen weit über 1000 Telegramm zu 
empfangen zu bearbeiten und ca 50 Telegramm zu senden.

Jetzt habe ich schon ein Test mit Controller durch geführt und musste 
natürlich fest stellen das dieser meinen Anforderungen nicht genügt.

Um nicht noch maßig Zeit und Controller zu verschwenden würde ich gerne 
als nächstes einen Controller wählen der meinen Anforderungen genügt.

Derzeit überlege ich einen Dimm Pc mit ca 200 Mhz zu nehmen. Allerdings 
habe ich nicht einen blassen schimmer ob der es bringt.

Welches OS ist für solch eine Aufgabe geeignet. Bremsen mich Os wie 
yLinux oder WinCe 6.0 zu stark aus?.

Würde mich sehr über eure Antworten freuen.

Schöne Grüße
#764043
Lesenswert?

@ Tom (Gast)

>verschicken. Die einzelnen UDP Packete haben etwa eine größe von 50
>Bytes. Der Controller soll es schaffen weit über 1000 Telegramm zu
>empfangen zu bearbeiten und ca 50 Telegramm zu senden.

Macht 50kB in RX Richtung. In welcher Zeit? Gleichzeitig?

>Derzeit überlege ich einen Dimm Pc mit ca 200 Mhz zu nehmen. Allerdings
>habe ich nicht einen blassen schimmer ob der es bringt.

???
So eine DIMM Speicherriegel kann man nicht ohen weiteres an einen uC 
anschliessen.

>Welches OS ist für solch eine Aufgabe geeignet. Bremsen mich Os wie
>yLinux oder WinCe 6.0 zu stark aus?.

Naja, kommt drauf an was sonst noch gemacht werden soll.

MFg
Falk
Gast #764055
Lesenswert?

Hallo,

wow das ging aber jetz mal schnell. Vielen Dank schonmal für die Antwort

-Macht 50kB in RX Richtung. In welcher Zeit? Gleichzeitig?

Ja richtig. Dies muss aber nicht unbedingt gleichzeitig sein!
mehr wäre mir aber lieber. Optimal wären 300KByte. Aber Achtung die 
Datenrate hängt stark von der größe der UDP Telegramme ab! D.h ein 
Controller der 1000KByte bei einer Datengröße von 1000 Byte schafft, 
schafft bei einer größe von 50 Byte eine wesentlich geringere 
Datenrate!!!

-So eine DIMM Speicherriegel kann man nicht ohen weiteres an einen uC
anschliessen.

Meinte keinen Speicher sonder einen Controller der auf eine Checkkarten 
großen Karte sitzt und auf einen Dimm Sockel gesteckt werden kann
wie z.B
http://de.kontron.com/index.php?id=82&cat=34

-Naja, kommt drauf an was sonst noch gemacht werden soll.

Schätzungsweise
-10 Task
-10 Queus
-10 Semaphoren
-4 UARTs mit Treiber
-Webserver
-ftp Server
-logik

sollte also noch ein bisschen Platz sein.

Kennt jemand Performance Statistiken von senden und empfangen von UDP 
Telegrammen? Wie berechnet man so etwas

Schöne Grüße
#764083
Lesenswert?

@ Andi (Gast)

>-Macht 50kB in RX Richtung. In welcher Zeit? Gleichzeitig?

>Ja richtig. Dies muss aber nicht unbedingt gleichzeitig sein!

IN WELCHER ZEIT? 1 Sekunde oder eine Stunde?

>http://de.kontron.com/index.php?id=82&cat=34

Nett.

>Schätzungsweise
>-10 Task
>-10 Queus
>-10 Semaphoren
>-4 UARTs mit Treiber
>-Webserver
>-ftp Server
>-logik

Was sollen den die Task machen? Und was soll mit den 50kB UDP Daten 
passieren?

Ich würde mal schätzen, dass so ein 133MHz Mini-PC mit schlankem OS das 
recht gut hinbekommen sollte.

MFG
Falk
Gast #764088
Lesenswert?

>-Macht 50kB in RX Richtung. In welcher Zeit? Gleichzeitig?

>Ja richtig. Dies muss aber nicht unbedingt gleichzeitig sein!

Hi,

>-Macht 50kB in RX Richtung. In welcher Zeit? Gleichzeitig?

>Ja richtig. Dies muss aber nicht unbedingt gleichzeitig sein!

1 Sekunde. Sonst wäre es ja zu einfach

>Schätzungsweise
>-10 Task
>-10 Queus
>-10 Semaphoren
>-4 UARTs mit Treiber
>-Webserver
>-ftp Server
>-logik

Was sollen den die Task machen? Und was soll mit den 50kB UDP Daten
passieren?

Task/Queus/Semaphoren sind für die UARTs und den eigentlichen Empfang 
und senden von Daten.(und noch ein paar andere Kleinigkeiten).

Es werden Daten von UDP über die seriellen Schnittstellen und umgekehrt 
gesendet. Dabei erfolgt noch ein bisschen Konvertierung der Daten mehr 
aber nicht!!

ftp und web sind mehr zur Konfiguration!

Schöne Grüße
#764108
Lesenswert?

@ Andi (Gast)

>Task/Queus/Semaphoren sind für die UARTs und den eigentlichen Empfang
>und senden von Daten.(und noch ein paar andere Kleinigkeiten).

>Es werden Daten von UDP über die seriellen Schnittstellen und umgekehrt
>gesendet. Dabei erfolgt noch ein bisschen Konvertierung der Daten mehr
>aber nicht!!

Na wenn DAS ein 133 MHz Prozessor nicht gebacken kriegt dann weiss ich 
es auch nicht. Das ist 1 Paket/ms. Das sind 133000 Takte! Die UARTs 
sollten FIFOs haben, ist aber glaub ich heute selbstverständlich.

>ftp und web sind mehr zur Konfiguration!

Also Nebensache und kann eher langsam sein.

MFG
Falk
#764153
Lesenswert?

@ Andi (Gast)

>mhh ja rein Gefühls mäßig hätte ich das auch gedacht. Aber zum Beispiel
>der Beck IPC mit 96 Mhz
>http://www.beck-ipc.com/de/products/sc2x/index.asp

>schafft keine 1000 Telegramme pro Sekunde.

Naja. Was ist das denn für ein Prozessor? AFAIK ein 386er im 
Kleinformat. Kommt dann auch auf das OS und die restliche Software an, 
und, was denn genau mit den Paketen gemacht werden muss (volle UPD 
Verarbeitung, Prüfsummen etc.)
Naja, die frage ist nicht einfach zu beantworten.

>Das Probelm ist nun, bevor ich mir eine neue Plattform aussuche würde
>ich mir gern recht sicher sein, dass es funktioniert.

Wenn es soooo einfach wäre . . .;-)

MFG
Falk
Gast #764162
Lesenswert?

Na dann mach mal....

1000 Telegramme ist schon einiges,
aber die Kenndaten spielen ja auch noch mit:
Wie schnell ist denn Dein Ethernet ?
Wer ist noch auf dem Segment unterwegs ?

Wenn die Rahmenbedingungen nicht stimmen,
dann kannst Du nicht sicher sein, dass es überhaupt so
funktioniert.

Lass Dich aber nicht entmutigen, vielleicht geht es ja doch.
Gast #764165
Lesenswert?

Hallo Falk,

du hast recht die Frage ist eben nicht ganz einfach zu beantworten!

Welche Prozessor im Beck Ipc enthalten ist weiß ich leider nicht!

Um das ganze mal ein bisschen einzuschränken. Sagen wir mal die CPU soll 
nach empfang eines UDP Telegramms dieses koppieren und sofort wieder 
über UDP verschicken.

Um das UDP Protokoll an sich möchte ich mich eigentlich nicht kümmern. 
Das soll das OD machen. WinCE oder Linux.

Schöne Grüße
Gast #764212
Lesenswert?

es hängt auch viel von dem OS ab. Wenn man das umgeht und die Pakete 
selber verschickt schafft man auch 2000 pro s auf einem 386er mit 25Mhz 
(das sind die Eckdaten einer Customhardware die wir einsetzen). Mit 
WindowsCE auf X86 Basis klappt das auch ganz gut, aber auch hier gehts 
schneller wenn man nicht durch den OS IP Stack laufen muß.
Wenn man kleine Pakete hat die in einen Ethernetframe passen und man 
sich nicht um Fragmentierung kümmern muß ist es auch nicht so schwierig 
die UDP Datagramme selber zu bauen.
Gast #764223
Lesenswert?

Hallo JojoS,

intressant!!!! Vielen Dank schonmal für die Informationen vor weg. Ich 
glaube das hat mir ganz schön geholgen: Dennoch habe ich nun einiege 
Fragen.

-Was ist Fragmentierung
-Woher weißt Du das??
-Wenn Packete selber verschickt und erstellt, dann muss es doch das OS 
auch unterstützen selber Packete zu verschicken uns zu senden oder?
Wie programmiert man so etwas. Kennst Du Beispiele für zum Beispiel 
linux oder Win CE?
-Was macht das Os dann noch, dass das direkte schicken so viel schneller 
ist

Vielen Dank schonmal für die Beantwortung der Fragen und Schöne Grüße
Gast #764236
Lesenswert?

@  Andi (Gast)

>ja gut. Aber reicht nun Arm mit 200Mhz und Linux für die Anwendung???
>Das ist meine Frage.

- 1000 x 50 Byte INPUT
- work
- 50 x 50 Byte OUTPUT

Was machst du mit den empfangenen Daten ? Wenn das nicht soo viel ist 
reicht mit Sicherheit auch eine andere 32bit CPU mit weniger MHz. Du 
solltest vorher noch abklären ob du Fließkomma-Berechnungen benutzt und 
in welchem Umfang.
Gast #764240
Lesenswert?

Hallo ARM,

Fließkomma benötiege ich nicht. Alles nur Bit und Byte Operationen. 
Diese sollen wie schon gesagt im wesentlichen dann auf die UARTs 
gesendet werden.

Was mich aber nun doch noch mehr intressiert ist die Wahl des OS. 
Derzeit hatte ich vor ein recht gut ausgebautes Os zu nehmen wie Linux 
oder WinCe. Damit mit ich zum Beispiel mit dem FTP bzw Web Server nicht 
so viel ärger haben.

Warum ich immer noch ein bisschen zweifle ist wegen der BeckIpc 
geschichte.

Wenn Jojos wirklich recht hat und durch das um gehen des Betriebssystems 
wesentlich mehr UDP Telegramme gesendet/empfangen werden können 
intressiert mich dies schon enorm. Die Frage ist nur wie macht man das?


Schöne Grüße und Vielen Dank für die guten und hilfreichen Antworten
Gast #764249
Lesenswert?

Hallo,


ich habe keine guten Erfahrungen mit dem BeckPC. Die Programmierung war 
damals sehr eigen. Man brauchte ein uralt BorlandC und der Netzwerktest 
war dann auch nicht so berauschend (vor ~3Jahren).

Falls du Linux benutzen willst,  schau ob es ein BSP (Board Support 
Package) gibt und welche Anwendungen (ftp/www ...) schon mit bei sind. 
Linux/Windows Entwicklungsumgebung/Compiler .... . Falls du alles selber 
bauen musst, kann das sehr abendfuellend werden und ist einem Anfänger 
nicht zu empfehlen ! Wenn deine Wahl auf WinCE fällt, kannst du dich 
schonmal drauf einstellen für die Entwicklungsumgebung etwas Geld zu 
bezahlen.
Gast #764253
Lesenswert?

Nachtrag:

>Wenn Jojos wirklich recht hat und durch das um gehen des Betriebssystems
>wesentlich mehr UDP Telegramme gesendet/empfangen werden können
>intressiert mich dies schon enorm. Die Frage ist nur wie macht man das?

Das kann ich mir beim BeckIpc gut vorstellen.
Gast #764257
Lesenswert?

das UDP ist z.B. im Wikipedia einfach beschrieben. Ist eben 'nur' eine 
Struktur von Headerdaten die man richtig ausfüllen muß. Beim UDP gibt es 
ja kein Handshake oder irgendeine Fehlerkontrolle. Man bekommt höchstens 
auf IP Level eine Antwort das die Gegenstelle keine Daten auf Port xy 
erwartet wenn man ein System anfunkt wo keiner auf dem Port lauscht.
Die Fragmentierung kann bei der Weiterleitung der Pakete entstehen, z.B. 
ist bei IP über ein Analogmodem die MTU kleiner als bei Ethernet und die 
grösseren Frames müssen dann in kleinere aufgeteilt werden. Aber bei 
reiner Ethernet Verbindung dürfte das keine Rolle spielen.
Im OS steckt im IP Stack eine ganze Menge mehr, z.B. die Prüfung der 
Felder auf gültige Daten. Früher wurde das weniger gecheckt bis dann die 
ganzen berühmten 'Denial of Service' Attacken kamen die solche Lücken 
ausgenutzt haben. Dann gehen die Pakete ja evtl. noch durch eine 
Firewall, werden verschiedenen Protokollen angeboten, werden vielleicht 
mehrfach umkopiert usw.
Gast #764263
Lesenswert?

Hallo,

ich komme mit 64Mhz 32Bit CPU/100Mbit Netz bei einer TCP-Verbindung auf 
über 1MByte/sek. . Aja, Linux-Kernel 2.4.XX. . Ich sehe nur Probleme bei 
sehr wenig Speicher, schlechter Netzwerkhardwareanbindung oder einer 
sehr sehr langsamen CPU.
Gast #764286
Lesenswert?

Was willste denn von einem OS ? Es sind im Wesentlich nur I/O 
operationen. Vorne an den UDP noch einen Header dranpfriemeln sollte 
nicht so schwer sein. Sollte eigentlich mit einem 20MHz AVR machbar 
sein. Der macht in einer milisekunde 20k operationen. Da sollte man doch 
noch 2 packete zu je 50 bye herumschieben koennen.
Gast #764336
Lesenswert?

Weil es den Anforderungen von Tom nicht genügt ?

> Was mich aber nun doch noch mehr intressiert ist die Wahl des OS.
> Derzeit hatte ich vor ein recht gut ausgebautes Os zu nehmen wie Linux
> oder WinCe. Damit mit ich zum Beispiel mit dem FTP bzw Web Server nicht
> so viel ärger haben.
Gast #764928
Lesenswert?

Hallo,

also vielen Dank für die vielen Antworten



@6623
-Ich werde auf alle Fälle ein Board mit fertigem OS nehmen, damit ich 
wenig äger haben und Threads, Queues, Semaphoren, Web, Ftp, DHSP, 
etc....

@Arm
-"ich komme mit 64Mhz 32Bit CPU/100Mbit Netz bei einer TCP-Verbindung 
auf
über 1MByte/sek. . Aja, Linux-Kernel 2.4.XX. . Ich sehe nur Probleme bei
sehr wenig Speicher, schlechter Netzwerkhardwareanbindung oder einer
sehr sehr langsamen CPU."

Das schafft der Beck Ipc auch bei extrem großen Datenpacketen. Wie groß 
sind Deine Packete die Du verschickst?


@JojoS
Ok verstanden habe ich das jetzt. Was mir noch nicht ganz klar ist wie 
die Implementierung erfolgt. z.B. bei Linux oder Win Ce. Denn das Os 
wird ja keine Funktion haben wie send_raw_ip_packet oder? Wie kommt man 
also direkt an die Schnittstelle ran ohne über den TCP/IP Stack zu 
gehen. Kannst Du mie zum Beispiel für Linux ein Beispiel 
geben/Literatur/Web links


Vielen Dank schonmal für eure Antworten und Schöne Grüße
Gast #765119
Lesenswert?

bei WindowsCE muß man sich da mit NDIS und Miniport Treibern 
beschäftigen. Wir haben das von einer externen Firma entwickeln lassen 
und ich kenne die Details auch nicht. 
http://msdn2.microsoft.com/en-us/library/ms895493.aspx ist vielleicht 
ein Anfang, aber die CE Entwicklung ist nicht ganz trivial und man 
braucht ein Board Support Package vom HW Hersteller. Der sollte auch 
Tipps in Richtung Entwicklungsresourcen geben können.
Mit Linux kenne ich mich so gut wie garnicht aus, da müssen dir andere 
weiterhelfen.
Und es gibt noch Libpcap / Winpcap, das sind Paket Capture / Sende 
Funktionen für Linux und XP. Mit der C# Variante sharp-pcap baue ich 
gerade einen Analyzer für die schnelle zyklische Datenübertragung mit 
UDP. In der WinPCap Variante ist auch ein Beispiel für das Senden von 
UDP Daten.

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