20111012 - Channel finder

advertisement
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
ChannelFinder at BNL
channelfinder.nsls2.bnl.gov
update
daemon
/cf-update
NFS
IOCs
Web
proxy
Glassfish
Web service
dependency
data flow
CSS
Scripts to
- populate properties
- create lattice
Getting channels from the IOCs
channelfinder.nsls2.bnl.gov
/cf-update
dependency
data flow
NFS
IOCs
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 /cfupdate 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
dependency
data flow
Scripts to
- populate properties
- create lattice
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
Channel Name
handle
SR:C02-MG:G04A{HFCor:FM1}
SR:C02-MG:G04A{VFCor:FM1}
Fld-I
Fld-SP
Fld-I
Fld-SP
READBACK
SETPOINT
READBACK
SETPOINT
elemName
FXM1G4C02A
FYM1G4C02A
elemType
HFCOR
VFCOR
elemField
x
y
devName
FM1G4C02A
sEnd
65.5222
cell
C02
girder
G4
symmetry
A
length
0.044
ordinal
263
eget
tags
264
eput
eget
x
eput
y
sys.SR
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
CSS & ChannelFinder
• See next talk!
Download