We are planning a GRID UK Meeting:-
See also our work program project status
Date Thursday 7 February 2008 Time: 11:00 - 15:00 Where: Martin Wood building Mendelssohn RoomThe Mendelssohn Room is situated on the ground floor on the right hand side of the Martin Wood Lecture Theatre.
The theme of this meeting will batch job submission and the migration of all our NFS/dCache disk and legacy ADS tape data to CASTOR.
Here are the topics I have thought of to date, please send suggestions ASAP.
The following have said they will attend:-
Oxford: Nick, Alex + 3 others Sussex: Marta RAL: Tobi UCL: Justin
We have to take a series of decisions:-
Migration and catalogues are further discussed here
There is a wish list of future additions. Are more required?
Date Thursday 15 November 2007 Time: 10:00 - 16:00 (?) Where: UCL physics building, on the ground floor, room E1See UCL High Energy Physics - How to get here
People coming from Euston *Station* should come in on the Gower Place entrance, enter the building, go by the mail boxes, take a right and walk all the way down to the end of the hall to find E1. People coming from Warren Street or from Euston *Square* (Circle Line, et al) should come in through the quadrangle as our room E1 is next to the door out to the cloisters and the quad.
The theme of this meeting will be the migration of all computing at RAL to the GRID given that qsub submission to the RAL PBS farm terminates at the start of January 2008. It will mostly be a series of discussions of experiences to date and plans for the future. At this stage no presentations are planned although I (Nick) will try to give short talks "on demand" on any GRID topic covered by our web
Important: Anyone who attends and has ambitions to run GRID jobs in the near future is strongly encouraged to get a GRID certificate and attempt to work through the primer so that they have at least run one loon job via Ganga.
Here are the topics I have thought of to date, please send suggestions ASAP.
| Job control, interrogation, exit codes | |
|---|---|
| Question/Problem | Response |
| Why isn't my job running? When will it run? | Solved |
| Can I peek at the job during execution (e.g., something like qcat)? | Outstanding Problem |
| Where are my jobs running? | Solved |
| Can I order a job resubmitted? | Partly Solved |
| Can I hold jobs that are not yet running? More generally, can I signal my jobs in any way (e.g., to kill them)? | Partly Solved |
| Is there ``queued'' status distinct from ``submitted'' and ``running''? | Yes, it's called SCHEDULED. Solved |
| Ganga GUI | |
| Question/Problem | Response |
| People reported their experiences with the ganga GUI. It seemed that about 1/2 could not make it work. Phil R. stated that he had a fix. Phil should post his fix somewhere. | This can be fixed during installtion. It has been Solved |
| Job resources | |
| Question/Problem | Response |
| How do we request CPU,disk,memory resources for jobs? | By directing the job to a queue with adequate resources. Solved |
| How do we figure out the limits of different queues/CEs? For example: lcgce02.gridpp.rl.ac.uk:2119/jobmanager-lcgpbs-grid500M. Possible solution: j.backend. interface in ganga? | Solved |
| Best Practices | |
| Question/Problem | Response |
| How should you pass files into your job? (a) list files on command line (b) ASCII file with list of file names (DCM urls?) (c) pass a DCM/SAM query | Before we can develop best practices we need examples of the types of jobs to be submitted. Quote handling is even harder because of the extra layers (e.g.Ganga, JDL) although, for submission via GBS the script runs within a wrapper which at least offers a way to rebuild parameters immediately prior to shell invocation. |
| How should you pass information into your root macro? Macro functions can take C++ datatypes, though perhaps they should not. Making sure the shell doesn't remove quotes can be a real pain. Some concrete examples might be useful here. Really, make attempts to spread knowledge like this around. Otherwise everyone has to spend frustrating time reinventing the wheel. | |
| External UIs | |
| Question/Problem | Response |
| How do we select a list of input files (e.g., from ``meta-data'' like date and file type/name-pattern) in order to drive jobs from outside RAL? Possible solution: DCM at RAL publishes catalogue in SE, DCM elsewhere reads that, allows selections. Also, maybe as time goes on we use LFC? This is a major unsolved problem. | A solution similar to this has been implemented. This problem is Solved |
| How do we get files back to the universities? Maybe universities should run SEs then jobs just copy output directly with grid tools? Seems difficult. Jobs store files in SE (e.g., at RAL). Another process running at the university looks in logfiles and pulls files out of the SE? Seems clunky/annoying to Mike. This is a major unsolved problem. We should attempt to understand how other experiments tackle this issue. | We are exploring tools, that indicate that a Solution Identified but it is also an Outstanding Problem |
| Control and Ownership of Files on a SE | |
| Question/Problem | Response |
| Who owns files on a SE? Are file permissions like UNIX? Does the system know which VO user wrote a file? | If we use GRID middleware we all own everything and have to be careful! Solved |
| How do we protect ourselves from one user deleting everyone else's data? | |
| How do we intentionally delete files, clean up disk? How painful is it? (Doesn't really matter!!) |
Files can be removed using local or GRID protocols; using GRID
middleware ought not to be more harder. What may well be harder is if we use the LFC and keeping it in sync with our SEs. I have been told: I think the best strategy is a change of philosophy - don't care about how tidy the SRM is; the LFC is your view of your data, the SRMs are just a dumping ground for files, which, because we mount the namespace, you can have a poke around in if you want to. The LFC getting out of sync with the SRMs is an occupational hazard unfortunately. I'd suggest that if the lcg-del fails, then retrying and seeing if the error message changes and tidying up the lfc with the lfc-* commands. Given that LFC cannot even see most of our data (NFS/FNAL) it is not encouraging is it? Solved |
| Support for Test Releases. | |
| Question/Problem | Response |
| How can I run jobs that include private, uncommitted code? | We now have a tool to do this. Solved |
RAL Tier 1 Derek Ross D.Ross@rl.ac.uk Oxford Tier 2 Pete Gronbech P.Gronbech1@physics.ox.ac.uk
http://www-pnp.physics.ox.ac.uk/~west/minos/dcm_catalogues/The second phase of the plan: to have DCM at other UIs refresh their local copies from time to time, is also now in place.
To try this out please proceed as follows, which assume bash, so csh users will have to make the obvious changes:-
cd (my top level directory)
mkdir GridApps cvs -d :pserver:anonymous@minoscvs.fnal.gov:/cvs/minoscvs/rep1 get minossoft/GridTools mv minossoft/GridTools/ ./ rm -r minossoft cd GridTools export MOG_TOOLS=`pwd` source $MOG_TOOLS/Scripts/setup/setup_minos_lcg_grid.sh
Pick a name for your site, it can be arbitrary but examples we have so far are:-
ral_t1_ui oxford_t2_uiTell RSD what name to use and set up a configuration for it.
local_name= (what ever name you have chosen) cd $MOG_TOOLS/RemoteSoftwareDeployment/config echo $local_name > minos.site_name cp example.config minos-$local_name.configYou could tweak the .config if you want to, but the default ought to be O.K.
Have a test run of RSD
rsdIt should give help instructions and near the top you should see the line
VO name: MINOS_VO_GRIDPP_AC_UK (from default or minos-[your site name here].config)
rsd install $MOG_TOOLS/../GridApps SamWebClient:v0_9_2_NULL-build_1\ --soft_link=pro:deleteThis tells RSD to install version v0_9_2_NULL below $MOG_TOOLS/../GridApps and to make a soft 'pro' link to it. If all goes well the log should end:-
RSD terminating. No error reportedand then by resourcing the setup script you should be able to use it
source $MOG_TOOLS/Scripts/setup/setup_minos_lcg_grid.sh
[ should see the line: Setting up SamWebClient ]
samLocate --file=N00008695_0023.cosmic.sntp.R1_18.0.root
[ should give: /pnfs/minos/reco_near/R1_18/sntp_data/2005-10 ]
Tell DCM what the site name is and what SEs it can access using the Oxford setup as typical.
cd $MOG_TOOLS/DataCacheManager/config/ echo $local_name > minos.site_name cp minos.site_oxford_t2_ui.se_access minos.site_$local_name.se_accessNow you need to tell DCM about the local disks and directories.
data_dir= (the top directory of your data disk) rm -f minos.site_$local_name.local_disks (should not exists, but just in case) echo Group minos >> minos.site_$local_name.local_disks echo Scratch_dir /tmp >> minos.site_$local_name.local_disks echo @Disks $data_dir >> minos.site_$local_name.local_disks echo @Exclude_dirs $data_dir >> minos.site_$local_name.local_disks echo Soft_links_dir $data_dir/dcm_catalogue >> minos.site_$local_name.local_disks echo Catalogue_dir $data_dir/dcm_catalogue/DCM >> minos.site_$local_name.local_disks echo Resource_lock_dir $data_dir/dcm_resource_locks >> minos.site_$local_name.local_disksDCM is capable of surveying everything below @Disks and provide a catalogue, but we assume that you don't need this feature which is why @Exclude_dirs is set to the same thing.
Now create all the required directories giving group write access.
mkdir --mode 0775 $data_dir/dcm_catalogue mkdir --mode 0775 $data_dir/dcm_cache mkdir --mode 0775 $data_dir/dcm_catalogue/DCM mkdir --mode 0775 $data_dir/dcm_resource_locksConfirm that dcm runs
dcmIt should type its help and near the top list 'host_name' (the name you chose) and the SEs it can see and the local disk setup.
dcm surveyIt will take no time to survey the local disk because everything was excluded but then will take about 15 minutes to download a ~ 0.3GB file from FNAL and reformat it for DCM usage.
Note: DCM does not automatically refetch this file as it does take a while so will slip out of date. One way to prevent this is to have a nightly cron job that just executes this command.
dcm get --accept_dcm_url [ file_name like N00008695_002%.cosmic.sntp.R1_18.0.root ] [ should locate 4 files in fnal-dcache-enstore ] dcm get --accept_dcm_url N00006771_cat0.spill.sntp.R1_18_2.0.root [ should locate one file in ral_t1-dcache-tape ] dcm get --accept_dcm_url AnaNue-N00009062_0018.spill.sntp.cedar.0.root [ should locate a file in ral_t1_ui-nfs ]Note that you cannot actually get data from SEs at RAL with DCM yet, it isn't supported, but you could get data from FNAL if you needed to.
The second of these in particular is very tedious and slow. However, it should be fairly straight forward to develop scripts to deal with the tedium, the far more important question is whether the underlying services are sufficiently reliable that scripts based on them will work or whether we have to report failure at the UB.
n14001003_0001_L010185.sntp.R1_18_2.rootbut not the location, and you want to copy it locally. This takes 1 step:-
dcm get n14001003_0001_L010185.sntp.R1_18_2.rootbut only for data that is in dCache but not on RAL NFS disk in which case you will get the error:-
?Request get to SE ral_t1_ui-nfs not supported from ...In which case see the section below.
I have created the following directory tree
drwxrwxr-x 1 nwest minos 512 Nov 24 10:40 /pnfs/gridpp.rl.ac.uk/data/minos/in_transit drwxrwxr-x 1 nwest minos 512 Nov 24 10:40 /pnfs/gridpp.rl.ac.uk/data/minos/in_transit/oxford/ drwxrwxr-x 1 nwest minos 512 Nov 24 11:53 /pnfs/gridpp.rl.ac.uk/data/minos/in_transit/oxford/west/so that I have a private place into which I can copy files. I suggest that others build on this for their private files.
Important Give the directories group write access; you will be running a GRID job to copy files into your directory and then, as far as dCache is concerned you will be minosnnn e.g. minos003.
Now you have to submit a GRID job to copy a file into your area. Start by creating a JDL file along the example cp_nfs_to_se_in_transit.jdl:-
Executable = "/opt/d-cache/dcap/bin/dccp";
Arguments = "/stage/minos-data1/west/dcm_tests/LVJ_F00034638_0000.mdaq.root /pnfs/gridpp.rl.ac.uk/data/minos/in_transit/oxford/west/";
StdOutput = "dccp.out";
StdError = "dccp.err";
OutputSandbox = {"dccp.out", "dccp.err"};
VirtualOrganisation = "minos.vo.gridpp.ac.uk";
Requirements = other.GlueCEUniqueID == "lcgce02.gridpp.rl.ac.uk:2119/jobmanager-lcgpbs-gridS";
as you can see it just runs dccp to copy the file from disk to the
in-transit area.Run run_test_job.perl to submit and monitor this job:-
perl $MOG_SCRIPTS/jobs/run_test_job.perl cp_nfs_to_se_in_transit.jdlThe job typically takes 5 - 10 minutes to submit and run and it should end something like this:-
Retrieving job output ...
Job output returned to /tmp/run_test_job_20408/west_-K9zj1FdvuGvkBhm2Tbctw:-
File: dccp.out begins (first 20 lines max):-
File: dccp.err begins (first 20 lines max):-
403597 bytes in 1 seconds (394.14 KB/sec)
Cleaning up and removing /tmp/run_test_job_20408
The URL prefix to use globus-url-copy copy is
gsiftp://gftp0446.gridpp.rl.ac.uk:2811//form the copy command using the syntax
globus-url-copy <remote-url> file:<absolute-file-name>For my example
globus-url-copy \
gsiftp://gftp0446.gridpp.rl.ac.uk:2811//pnfs/gridpp.rl.ac.uk/data/minos/in_transit/oxford/west/LVJ_F00034638_0000.mdaq.root \
file:/tmp/LVJ_F00034638_0000.mdaq.root
To get more output use
-vb | -verbose
during the transfer, display the number of bytes transferred
and the transfer rate per second
-dbg |-debugftp
Debug ftp connections. Prints control channel communication
to stderr
This requires the submission of a second GRID job with JDL, say rm_from_se_in_transit.jdl along the lines:-
Executable = "/bin/rm";
Arguments = "/pnfs/gridpp.rl.ac.uk/data/minos/in_transit/oxford/west/LVJ_F00034638_0000.mdaq.root";
StdOutput = "rm.out";
StdError = "rm.err";
OutputSandbox = {"rm.out", "rm.err"};
VirtualOrganisation = "minos.vo.gridpp.ac.uk";
Requirements = other.GlueCEUniqueID == "lcgce02.gridpp.rl.ac.uk:2119/jobmanager-lcgpbs-gridS";
which can be submitted as before:-
perl $MOG_SCRIPTS/jobs/run_test_job.perl rm_from_se_in_transit.jdland should end without error:-
Job output returned to /tmp/run_test_job_20771/west_QP4jEQ5jHliuBOSWuffOHA:- File: rm.out begins (first 20 lines max):- File: rm.err begins (first 20 lines max):- Cleaning up and removing /tmp/run_test_job_20771
Date Monday 19 March Time: 10:00 - 16:00 Where: Oxford. Fisher room (next to common room)
It will maintain an ASCII file of files in RAL's dCache and CASTOR to augment the file it already has of dCache at FNAL. This will allow it to locate files that satisfy wild-card queries. It will have the ability to return requested files in a text file and the option to control whether they have to be local files or just URLs that can be passed to TFile::Open().
The DCM local catalogue service will be retained while we have NFS disks for it to catalogue.