Performance and reliability improvement of a Python-based EPICS IOC by switching to pyDevSup

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.

Publication Details

Journal
JACOW
Published
2025-12-05
DOI
https://doi.org/10.18429/jacow-icalepcs2025-wemg014
Primary Topic
Computational Physics and Python Applications
Type
article
Field-Weighted Citation Impact
0.00
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

Performance and reliability improvement of a Python-based EPICS IOC by switching to pyDevSup

JACOW
Computational Physics and Python Applications
article

Performance and reliability improvement of a Python-based EPICS IOC by switching to pyDevSup

article en

Abstract

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.

JACOW
Peace, Justice and strong institutions
Openalex Percentile: Top 21%
Computational Physics and Python Applications
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.