Received: from FNAL.FNAL.Gov (fnal.fnal.gov [131.225.9.8]) by cdfsga.fnal.gov (8.9.3/8.9.0) with ESMTP id TAA26686; Fri, 2 Apr 1999 19:24:36 -0600 (CST) Received: from kfesg.lbl.gov ("port 15052"@kfesg.lbl.gov) by FNAL.FNAL.GOV (PMDF V5.1-12 #3998) with SMTP id <01J9KHOWYY620004T7@FNAL.FNAL.GOV>; Fri, 2 Apr 1999 19:24:18 -0600 CDT Received: from localhost (shapiro@localhost) by kfesg.lbl.gov (950413.SGI.8.6.12/950213.SGI.AUTOCF) via SMTP id RAA03007; Fri, 02 Apr 1999 17:24:14 -0800 Date: Fri, 02 Apr 1999 17:24:13 -0800 (PST) From: Marjorie Shapiro Subject: A starting point for discussion... To: bauerg@fnal.gov, chenyc@fnal.gov, cranshaw@fnal.gov, jbk@fnal.gov, kirsten@fnal.gov, ksmcf@fnal.gov, mark lancaster , paus@fnal.gov, PCalafiura@LBL.gov, rharris@fnal.gov, wolbers@fnal.gov Cc: patrick@fnal.gov, sexton@fnal.gov Message-id: MIME-version: 1.0 Content-type: TEXT/PLAIN; charset=US-ASCII I am forwarding a copy of an Email message Jim Kowalkowski sent out in Dec summarizing some discussions he had with Kevin and Kirsten on Level 3 downloading of database constants. The note contrasts the offline (read user analysis for offline) access patterns to those in the farm and discusses one possible solution for farm downloading where constants are put in flat files that are shipped to the nodes. Of course, no decisions have been made about the access method, but I thought it would be useful for people to read this message before next week's meeting and come to the meeting with an opinion about whether or not this architecture is what you want. Thanks Marjorie Date: Wed, 16 Dec 1998 22:39:17 -0600 From: Jim Kowalkowski To: Jack Cranshaw , Kevin McFarland , KIRSTEN , Marjorie Shapiro , Dennis Box , Mark Lancaster , Liz Sexton-Kennedy , Paolo Calafiura Cc: Paul Marciniak Subject: Notes from Level4 DB meeting today... Hi everyone, I just want to briefly summarize what we discussed in the meeting we had today concerning Level3 calibration database access. This is to make sure my understanding is correct (from a high level) and for the benefit of the people who were not present. ----------------- Offline Summary: The current offline architecture (planned) is basically a set of database servers which AC++ processes attach to (as clients). Each database server manages a connection to the database. The server process loads calibrations from the database into the server memory on demand from the client AC++ processes. The server caches the calibration for a period of time (basically) so the database access only occurs once for many accesses from AC++ farm node processes. The AC++ client processes also cache the calibrations in their memory for repeated access by module code running within the program. A diagram here would be nice - but this is supposed to be brief. This is a demand driven system. The cache is filled in the AC++ process as well as the server process as calibrations are needed by code in the AC++ program. If we peek into the running AC++ program, we see a calibration managment system. This calibration management system has children which are really the I/O packages. You would basically see one I/O package per component/attribute pair in use. Each I/O package has a cache available for holding calibration objects in use. The calibration management system allows high-level functions such as "flush the cache", and "set default calibration (calset)". The user gets access to the data in the cache by using attribute-managers. There is one manager class per attribute/ calibration object. The user uses a get/put interface of the attr-manager class to manipule data in the cache/database. If we peek into the running server process, we see the exact facility - the server app is designed to deliver calibration objects to AC++ calibration management systems. It tranfers data to I/O packages in the AC++ process. ------------------ Online discussion: After a set of calibration data is made available in the database, a set of validator processes is kicked off. These processes prepare calibrations required by level3. When these processes are done, they kick off a job on each of a set of Level3 gateway nodes. The job on each of the level3 gateway nodes is an AC++ program. The purpose of this job is to cause the calibration management system to be loaded with all the "current" calibrations required by the level3 farm. This will required some sort of input file listing the required component/attribute pairs. After initialization, the AC++ process will have a complete set of "current" calibration objects in memory, held within the calibration management system cache. The AC++ process now issues a command to the calibration database management system - "save to file xxx" (a new feature). This causes all the calibration objects held in all the caches to be written to a single file called xxx. The intention here is that a second command can be issued to another calibration management system in another AC++ called "restore from file xxx". This command will presumably restore all the objects as they were in the process that issued the "save". The AC++ process now transfers the file xxx to all the farms nodes that it knows about and puts the file in a well-defined place with a well-defined name. When the farm node AC++ process starts at the being of a run, this file will be there for it to digest. All the calibration data it needs will be available - no database or server access is required while it is running. It would be desireable for the file to be put into shared memory so only one copy per node is required and multiple executables on the same node can access the same copy. This differs from the offline in that there is no real "database server". A set of programs create files, ship them to farm nodes, and exit. The "process" is driven by calibration data being written into the database. The "save" feature of the calibration management system does not currently exist. Some thought must go into doing this in a timely fashion. Some calibration management system utility may need to be created to allow forcing available I/O packages to be created and load the "Current" calibration that they control access to. A second solution may be to consider using SQL to prepare the files from the calibrations in the database instead of an AC++ program. Please fill in any missing parts of the picture (Kevin, Kisten, Jack). I realize that this text is not very easy to digest, but it is getting late. Is there anyone I missed on the distribution list of this email. Jim -- Jim Kowalkowski - jbk@fnal.gov D0: 630/840-2215 - 5th floor of the D0 assembly building CDF: 630/840-6457 - 169F in the CDF trailers WWW: http://www-cdf.fnal.gov/internal/people/links/JamesKowalkowski/my.html http://www-d0.fnal.gov/~jbk/index.html