On Wednesday 25 July 2001 15:02, Dan Morrill wrote:
> Our application must process messages generated from various
> network nodes and transmitted over Ethernet.
>
> We have calculated that we will have 57,600 messages per second,
> at 368 bits per message.  We're using raw Ethernet frames (no TCP/IP.)
> This comes out to 21,119,800 bits per second -- i.e. around 20MBit/sec.
>
> We're using a 100bT Ethernet LAN, so the raw bandwidth (we think)
> should be under control.   However, each of these 57,600 messages must
> be actually processed by various (generally small) "protection
> algorithms." Most messages require no response but some may indicate a
> fault and need to be responded to.
>
> We're currently attempting to do this on a 1000MHz Pentium III box.
> Turnaround time for any given message that requires a response can
> be no greater than 2 milliseconds.  (It occurred to me the other day
> that we are more or less being asked to build an oscilloscope that
> listens over Ethernet. :)
>
>
> This is just a general question;  I'm attempting to draw on the
> expertise of the group.  Do we have a snowball's chance in Hades of
> pulling this off w/ RTLinux?  :)  Any suggestions or pitfalls?  ("You
> need a dual processor box."  "Don't shoot yourself in the foot by doing
> Foo.")

Well, 2 ms is a loooong time around RTL, but do watch out for requests 
queueing up! If possible, just respond to incoming messages ASAP when 
needed - less overhead and no risk of overflowing some FIFO or running 
out of message structs somewhere between a receive and a transmit thread. 

If you need the buffering to be done on that level (does increase 
throughput in some situations; required unless you can generate any 
response in bounded and sufficiently short time), try to keep the number 
of dependencies (locks, blocking on various "provider" threads etc) low, 
and if possible, calculate buffers/pools and timeouts so that it's 
impossible to over/underflow.

Also make sure it's not possible to get trapped in a situation where one 
late response delays all responses following it in the queue. If the 
responses depend on various other threads and/or may take "long" to 
generate, it might be necessary to run the response handling in parallel 
(so one response can block without stalling the entire queue), perhaps 
using one thread per response (using a thread pool, perhaps), or one 
thread and one queue per "response class".


//David Olofson --- Programmer, Reologica Instruments AB

.- M A I A -------------------------------------------------.
|      Multimedia Application Integration Architecture      |
| A Free/Open Source Plugin API for Professional Multimedia |
`----------------------> http://www.linuxaudiodev.com/maia -'
.- David Olofson -------------------------------------------.
| Audio Hacker - Open Source Advocate - Singer - Songwriter |
`--------------------------------------> [EMAIL PROTECTED] -'

----- End of forwarded message from [EMAIL PROTECTED] -----
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/

Reply via email to