Difference between revisions of "NDPFAccounting"
Line 55: | Line 55: | ||
Note that you do need actual dates mapfiles, since poolaccounts will expire after some time and get re-cycled (usually after 100 days of inactivity). | Note that you do need actual dates mapfiles, since poolaccounts will expire after some time and get re-cycled (usually after 100 days of inactivity). | ||
− | The mapfiles are generated by the poolmaprun script (part of the '''managepoolmap''' package) on the NFS server hosting the gridmapdir (today: vlaai). This script will ''both'' create the mapfile of today ''and afterwards'' release any poolaccount mappings that have been idle for 100 days. This script is run from cron on the gridmapdir server: | + | The mapfiles are generated by the poolmaprun script (part of the '''managepoolmap''' package, vlaai currently has managepoolmap-1.1-2 installed) on the NFS server hosting the gridmapdir (today: vlaai). This script will ''both'' create the mapfile of today ''and afterwards'' release any poolaccount mappings that have been idle for 100 days. This script is run from cron on the gridmapdir server: |
/etc/cron.d/manage_gridmapdir: | /etc/cron.d/manage_gridmapdir: | ||
58 23 * * * root MAX_AGE=100 CLEANING=1 /usr/local/bin/poolmaprun | 58 23 * * * root MAX_AGE=100 CLEANING=1 /usr/local/bin/poolmaprun | ||
− | The cron job is installed automatically by the RPM | + | The cron job is installed automatically by the RPM. |
− | |||
The script must run on the server since the directory is (and should be) root-owned and the files are written (as '<tt>.poolmap.YYYYMMDD</tt>') to this directory. | The script must run on the server since the directory is (and should be) root-owned and the files are written (as '<tt>.poolmap.YYYYMMDD</tt>') to this directory. | ||
Really historic poolmaps are then later moved to a subdirectory <tt>gridmapdir/.history/</tt> | Really historic poolmaps are then later moved to a subdirectory <tt>gridmapdir/.history/</tt> | ||
− | |||
− | |||
== Re-inserting historic data == | == Re-inserting historic data == |
Revision as of 10:27, 24 December 2008
Systems involved
vlaai | gridmapdir NFS | create poolmap files based on the gridmapdir state on a daily basis |
stro | Torque server | conversion from Torque accounting files and inserting these into the NDPF accounting database on fulda, using a poolmapfile (it will try to collect one automatically if it can mount the gridmapdir) |
klomp | MON box | conversion of data from accounting database to lcgrecords (UR-WG format), and upload through R-GMA |
NDPF Local Accounting
The local accounting is the most important element, and must (and is :-) fully reliable, because it is used as the basis for the cost reimbursement for projects where we contribute in-kind contributions in the form of compute cycles. These data are collected (yearly) from the NDPF accounting database on a per-VO basis.
Data is inserted into this atabase on a daily basis. The records are (or should) inserted just after midnight, when the pbs/torque accounting files have been closed and are complete. Since the accounting is based on the "E" records in that file, we thus get all completed jobs. Jobs that are still running will not be accounted -- they will be filed only then they are finished.
Master insertion
Insertion in the database requires the collaboration of two components:
- the mapping from poolaccounts to grid user DNs
- the extraction of the pbs data from the accounting file, and linking the unix users of the facility to their grid credentials
At the moment, the grid group (FQAN) mappings are not part of this scheme, and only unix groups are stored in the database. The unix group-to-gridVO mapping is only done in the EGEE upload phase. This is partly historical, but since the VO-FQAN mapping side of the grid software is in constant flux anyway it is better like it is done now.
To ease the insertion, a meta-utility has been developed: ndpf-acctfeed. It is to be run on the PBS master (stro) every night, and by default will process yesterday's accounting file:
Usage: ndpf-acctfeed [-v] [-h] [-f] [--mapfile <poolmap>|--gridmapdir <dir>] [--date|-d Ymd] [--nocapacity] [-n|--dryrun] [--pbsaccdir dir] [--progacc command] [--progcapacity command]
and in accounting.ncm-cron.cron:
15 0 * * * root (date --iso-8601=seconds --utc; PATH=/sbin:/bin:/usr/sbin:/usr/bin:/share/acct/bin; /share/acct/bin/merge_new_accdata) >> /var/log/accounting.ncm-cron.log 2>&1
The utility will do its very best to find a mapping from unix uids to gridDNs. By default it will look for the .poolmap.YYYYMMDD files that are created at midnight on the gridmapdir NFS server in the gridmapdir (currently on vlaai at 23:58 local time). If such a poolmap cannot be found, it will first try the file you specified on the command line without the YYYYMMDD postfix, then will read the gridmapdir (/share/gridmapdir by default) and create a temporary poolmapfile just for this run. If both the gridmapdir and the poolmapfile(s) are unreadable, the utility aborts.
PS: the ndpf-acctfeed meta-tool replaces the historic 'merge_new_accdata' script.
Collecting data from PBS/Torque
The file /etc/pbsaccdb.conf must be present on the collecting system (i.e. the Torque server) and be formatted as described in NDPFAccouting_pbsaccdbconf.
Scaling and the GHzHourEquivalent
Incorporating grid mappings
The grid mappings are matches to the unix uids by the pbsaccdb.pl script, based on a mapfile. This map file is formatted with one mapping per line, with a single TAB character (\t) between the uid and the DN strings, like in:
unixuid /DNstring
This file is not generated by pbsaccdb.pl, but needs to be prepared and passed as a command-line argument (or a sensible default is taken, based on the date specification in the pbs accounting filename given). Normally, the ndpf-acctfeed meta-utility takes care of matching the poolmapfile and the accounting file based on dates, but also this utility will look for a 'true' mapfile that reflects the actual grid-DN-mappings in use on that date. So, such a file must be generated daily. Note that you do need actual dates mapfiles, since poolaccounts will expire after some time and get re-cycled (usually after 100 days of inactivity).
The mapfiles are generated by the poolmaprun script (part of the managepoolmap package, vlaai currently has managepoolmap-1.1-2 installed) on the NFS server hosting the gridmapdir (today: vlaai). This script will both create the mapfile of today and afterwards release any poolaccount mappings that have been idle for 100 days. This script is run from cron on the gridmapdir server:
/etc/cron.d/manage_gridmapdir: 58 23 * * * root MAX_AGE=100 CLEANING=1 /usr/local/bin/poolmaprun
The cron job is installed automatically by the RPM. The script must run on the server since the directory is (and should be) root-owned and the files are written (as '.poolmap.YYYYMMDD') to this directory. Really historic poolmaps are then later moved to a subdirectory gridmapdir/.history/