Igor Kovalenko <kovalenko@comcast.net> wrote:
“David Gibbs” <> dagibbs@qnx.com> > wrote in message
news:cetqm8$439$> 1@inn.qnx.com> …
Robert Muil <> r.muil@crcmining.com.au> > wrote:
Now that could certainly explain the symptoms.
Any way to stop pulses queuing? In other words, a missed pulse is
cancelled?
No, no way to stop them being queued – they are guaranteed to be
delivered.
Well, with a single-pulse queued to a process, and it getting any
reasonable
amount of CPU time, it shouldn’t happen.
That is, to see this sort of symptom with a single pulse to the server,
you’d have to miss (at least) 100s of thousands of pulses. It’s the
I suspect you don’t have to fall behind that far. I’ve seen a drastic
slowdown effect with about 1005ms + 10020ms pulses going to a single
channel on 800Mhz CPU.
That’s two pulses. If they are the same priority, it is a different
situation, far worse, the problem can (and will) occur far more quickly.
I’d expect that to exhibit symptons at the 100s to 1000s of pulses level.
(The queueing has optimizations to allow folding of about 250 identical
pulses together – reducing queue length; if two different pulses of
the same priority are alternating (or, as in your example, 4 of type a,
1 of type b, 4 of type a, etc), due to the promise of ordered delivery
for pulses of the same priority, they can’t be “folded” in the queue
and the queue grows far more rapidly.
In fact under severe load in that fashion, the system
does not just ‘slow down’. It essentially folds. Interrupts may be serviced
with HUGE latencies (on order of SECONDS), or perhaps they are just not
being serviced at all for extended periods of time.
Well, it keeps slowing down, until all CPU time is spent trying to
enqueue pulses.
The problem is, the event queues need to be kept sorted (per channel). The
longer they get, the more time is spent on sorting. This is why splitting
the load among many channels helps considerably. In that particular case,
splitting the pulses among 100 channels resolved all performance problems.
I’d have expected that one channel for each pulse (2 channels) would have
probably done it. 100 channels seems…overkill.
-David
Please follow-up to newsgroup, rather than personal email.
David Gibbs
QNX Training Services
dagibbs@qnx.com