Channel Finder operational experience at BNL work by: Gabriele Carcassi, Robert Petkus, Guobao Shen, Kunal Shroff, Lingyun Yang, written by: Gabriele Carcassi performed by: Kunal Shroff
Scripts to - populate properties - create lattice ChannelFinder at BNL channelfinder.nsls2.bnl.gov IOCs update daemon /cf-update NFS Web proxy Glassfish Web service CSS Scripts to - populate properties - create lattice dependency data flow
Getting channels from the IOCs channelfinder.nsls2.bnl.gov IOCs /cf-update NFS dependency data flow
Getting channels from the IOCs channelfinder.nsls2.bnl.gov exports the directory /cf-update through NFS Each IOC directly or indirectly has access to it When the IOC boots, the startup script saves the output of a dbl command to a file Filename format: hostname.iocname.dbl
Updating channel list channelfinder.nsls2.bnl.gov update daemon /cf-update Glassfish Web service dependency data flow
Updating channel list Daemon monitors for changes in the /cf- update directory and updates channelfinder Setup a script in /etc/init.d Uses /usr/bin/inoticoming to monitor for changes in the directory Uses CFUpdateIOC.py script coming with channel finder python client to perform the update Ignores all the channels that ends in “_” (NSLS-II convention for “internal” channels)
Updating channel list Update process feels very fast System has been very reliable no problems so far
Glassfish setup channelfinder.nsls2.bnl.gov Glassfish Web service dependency data flow
Glassfish setup Running Glassfish 3.1 Single instance of Glassfish for multiple applications Will be the same deployment server for our log service (collaboration with MSU) Each application available as an alias Top application changes according to the alias http://channelfinder.nsls2.bnl.gov – ChannelFinder http://log.nsls2.bnl.gov – log
Glassfish setup Glassfish runs as glassfish user Glassfish redirects to PAM for authentication This is supported only as root user We had to make glassfish member of the shadow group and allow it to access /etc/shadow (for local accounts) and /etc/pam_ldap.conf (for ldap accounts) Runs fine now
Glassfish setup In ldap created the following groups: cf-admins, admins cf-channels, users that adds/removes channels, currently only cf-update cf-properties, users that can add properties, a couple of people in our group and physics group cf-tags, users that can only add tags, more people in the physics group aphla, accelerator physics high level application, to group tags/properties from that group
Glassfish setup Main problems Increase max file descriptors OutOfMemory error Used to hit it, now we don’t anymore Quantum-bug: stopped appearing once we setup the infrastructure to debug it when it would happen again
Usage from high level physics channelfinder.nsls2.bnl.gov Glassfish Web service Scripts to - populate properties - create lattice dependency data flow
Usage from high level physics Our physics group adds properties/tags From Linyun Yang (accelerator physics) talk: From Channel Access to Channel Finder Service: Channel Accesses in Python and Matlab are simple to use. High level applications (HLA) deals with thousands of magnets, instruments and more channels. Organized/structured channel information is necessary. Channels linked to accelerator lattice and diagnostics are even better. Searching instead of remembering is easier for HLA users. A “dictionary” service can help HLA to manage the channels and build a lattice structure to which the AP is familiar. (they done simulation, analysis with it in the design).
device FM1G4C02A
Usage from high level physics Physics group can re-create the lattice from the information in channel finder By tags, different lattices can be built, and elements can be shared between them. Sharing is important for injection, where LTD1 and LTD2 shares a lot of elements with LTB
CSS & ChannelFinder channelfinder.nsls2.bnl.gov Glassfish Web service dependency data flow
CSS & ChannelFinder See next talk!