Hi Brian,
How big are your waveform records?
Mark
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Brian Bevins
Sent: Tuesday, March 18, 2014 11:27 AM
To: [email protected]
Subject: Re: Prioritizing Channel Access per Record?
On 03/18/14 12:03, Ralph Lange wrote:
On 18.03.2014 16:47, Brian Bevins wrote:
Is there any way to specify that CA delivery of updates from certain
records should be prioritized over other records on the same ioc?
I've got an application where a bunch of ai's are processed at 10Hz
and some relatively big (for us) waveforms are processed at about
0.3-0.5 Hz. The ioc is not heavily loaded and all record processing
seems to happen in a timely way, but from the client end (EDM) the
"fast" records all pause for ~0.5 sec whenever the waveforms push out
their CA updates.
The ai's are already being processed at a higher priority, but this
doesn't seem to help their updates get pushed out with higher priority.
Is there some tinkering I can do with the priorities of the CA
threads to get what I want? How can I tell which thread will get
which record updates? Is there something more obvious I'm missing?
Thanks,
--Brian
The CA thread pairs on the server (IOC) are created per client.
The client can set the priority as an argument to the
ca_create_channel() call [1].
If the client-set priorities are honored on the server depends on the
server side OS and/or configuration.
On real-time Linux, the MCoreUtils module [2] (EPICS 3.15 only)
contains a rule-based engine to tinker with IOC thread priorities and
policies.
Cheers,
~Ralph
[1]
http://www.aps.anl.gov/epics/base/R3-14/12-docs/CAref.html#ca_create_channel
[2] http://epics.sourceforge.net/mcoreutils/
Thanks for the quick reply, Ralph.
Using client-set priorities occurred to me, but then it seems I would
need to write my own client to monitor and display the slow (or fast)
records. Standard clients are all pretty much going to use a default
priority in ca_create_channel(). If there is an existing general purpose
client that allows setting the priorities, I'd love to hear about it.
I'm currently using R3.14.12.3 on RTEMS, and I don't yet know if that
supports client-set priority. If it does, then writing a little display
program might work.
If I were to switch to rt linux and make use of mcoreutils, it sounds
like I would essentially run two virtual iocs on the same machine, one
at a higher priority. Is that right?
Thanks,
--Brian