EPICS Multi-Core Utilities 1.2.2-SNAPSHOT
Real-Time Utilities for EPICS IOCs on Multi-Core Linux
This documentation covers the C API and the iocShell commands of the EPICS Multi-Core Utilities.
The EPICS Multi-Core Utilities library contains tools that allow tweaking of real-time parameters for EPICS IOC threads running on multi-core processors under the Linux operating system.
These tools are intended to set up multi-core IOCs for fast controllers, by:
An extended version of the
epicsThreadShow() command, showing scheduling policy and CPU affinity in addition to the usual output.
Details can be found in the documentation for module Real-Time threadShow Routines.
A module allowing to specify rules, which consist of a regular expression to match the thread name against, and a set of commands that allow to specify the real-time properties of a thread.
Whenever the EPICS IOC starts a thread, its name is matched against all existing rules, and for matching rules the commands are applied.
Details can be found in the documentation for module Rule-Based Thread Properties.
A module allowing to lock the IOC process virtual memory into RAM. This makes sure that no swapping occurs, and thus avoids page faults which would introduce latency and lead to indeterministic timing.
Details can be found in the documentation for module Memory Locking.
The sources are on GitHub at https://github.com/epics-modules/MCoreUtils
They can be checked out using
Releases can be found on GitHub (see above) or at http://sourceforge.net/projects/epics/files/mcoreutils/
make -C example
To use the Multi-Core Utilities in an IOC application tree, you have to add a definition to
.../configure/RELEASE that points to the location of the
In the directory that builds your IOC binary, the
Makefile has to make sure the IOC is only built for Linux. Then add the dbd file and the Library, e.g.:
That's it. Enjoy!