Solaris real time? My experience has been very good,
but you have to design the application to take advantage
of what works and what does not.
My application has 2.11 million bits per second continuausly
coming in, and I can read it with no data loss on a Solaris x86
p5 system. Single processor, 32m of ram.
To do so, first, we put a FIFO on the hardware so the
interrupt rate went down to about one every 60 milliseconds.
Then I constructed a software FIFO behind the hardware FIFO
large enough to accomidate almost a whole second's worth of data.
The reason for that, is that the part of the IO driver
copying data from kernel memory to user memory is part of
a normal process, and even with real time priority, you can't
trust the scheduler to dispatch your real time process very
well. The typical latency is 10 milliseconds, but worst case
is very much worse.
Now, my FIFOs never overflow, as long as the overall
interrupt rate in the rest of the box stays low, say less than
1500 per second. Bad ethernet cards or cheap IDE disks
are right out, since they trade off having the processor do
too much of the work, and their interrupt rate is too high.
Especially the IDE disks. Scsi, like the 2940 controller
fixes that perfectly.
Solaris latency makes me think it would not be a good
system for process control loop kinds of real time. But
for telemetry ingest, which is what I'm doing, I'm quite
certain I could crank the rate up to at least 10 million bits
per second and it would still work just fine.
John M. Benson
Space Science and Engineering
University of Wisconsin