Improving performance and reliability of a Python-based EPICS IOC by switching to pyDevSup

WEMG014
24 Sept 2025, 15:36
3m
Grand Ballroom (Palmer House Hilton Chicago)

Grand Ballroom

Palmer House Hilton Chicago

17 East Monroe Street Chicago, IL 60603, United States of America
Poster Presentation with Mini Oral MC10: Software Architecture & Technology Evolution WEMG Mini-Orals (MC01, MC05, MC10)

Speaker

Érico Nogueira Rolim (Brazilian Synchrotron Light Laboratory)

Description

The power supplies used for FOFB correctors at SIRIUS expose only electrical current values, making it necessary to perform conversions to and from beam kick values. To take advantage of the canonical Python implementation of this conversion, a separate IOC was developed using pyEPICS and PCASPy. This technology stack imposed some limitations, making it necessary to limit the update rate, and, even then, requiring one independent instance of the IOC per ring sector (20 in total) to avoid PV timeouts and disconnects; disconnection events when one of the power supplies was down also had cascading issues with reconnection and memory corruption.
This motivated us to pursue more modern alternatives for integrating Python code into an IOC, specifically one that could take advantage of the Channel Access (CA) integration already present in EPICS databases, avoiding any of the bridges between CA and Python. We evaluated the pythonSoftIOC project and the pyDevice and pyDevSup support modules, which we present in this work. We settled on pyDevSup due to the development experience it provided.
This work also presents benchmarks comparing the performance gains with the new IOC and aims to explore the architecture differences that enabled them.

Author

Gustavo de Souza dos Reis (Brazilian Synchrotron Light Laboratory)

Co-authors

Ana Clara de Souza Oliveira (Brazilian Center for Research in Energy and Materials) Érico Nogueira Rolim (Brazilian Synchrotron Light Laboratory)

Presentation materials

There are no materials yet.