Notes from the Controller Design Review:

Thread priorities – the exec, collection, and loop threads should all be set at a priority higher than the general epics thread priority 

Data copies – see if there are places where we can reduce the amount of data being copied from location to location in memory.

Threads – try not to delete threads, Epics utility libraries not be too good about managing resources in creating and deleting threads.. This is not typical functionality for an EPICS IOC.

We may want to do the full pattern matching inside the fiducial routine, and send PATTERN_EVENT only to ?interested? loops.

State and Actuator values are ?products? of the feedback loops – this data could be made available in BSA, but it is not normal BSA data in that it doesn?t always come at beam rate, it is generated at feedback loop rate – how will this work with BSA? Needs investigation.

The loop thread does not need to save the actuator values when starting up, and it does not need to replace them when stopping. Other applications will allow the operators to manage the actuator reference values.  The Feedback Controller IOC is required to have those PVs available for the other apps to use.

The EpicsSend Thread could be replaces with the Epics-provided callback task for a Scan I/O Request.  Need to investigate this.  We could implement

The storing of data and diagnostics into PVs using this functionality. After completing the loop calculation, each loop could make a Scan I/O Request to start the handling of data and diagnostics – these requests would be queued in an Epics Callback queue, and completed by an Epics thread that would run at a lower priority than the loop threads – effectively delaying the data management until all loop threads are done.  Kukhee may be using this with the PAU – he could help us.

Data and diagnostics with device support – keep this info in memory – the PVs that process from the Scan I/O Request will access this memory via a device support layer, updating the PV from memory.  Also could have a PV that processes on request to dump a 1000 point data buffer?

  • No labels