160 likes | 236 Views
AliEn2 and GSI batch farm/disks/tape. Current status Kilian Schwarz. Status GSI batch farm. 4 machines dedicated to ALICE (alice queue) (Dual P4 Xeon 2 GHz, 1 GB RAM) New queue (bsarge) in testing state (ca. 20 Opteron, 2.3 GHz, 4 GB RAM, Currently Debian Sarge 32bit)
E N D
AliEn2and GSI batch farm/disks/tape Current status Kilian Schwarz
Status GSI batch farm • 4 machines dedicated to ALICE (alice queue) (Dual P4 Xeon 2 GHz, 1 GB RAM) • New queue (bsarge) in testing state (ca. 20 Opteron, 2.3 GHz, 4 GB RAM, Currently Debian Sarge 32bit) • ROOT/AliRoot exist compiled for Debian Sarge (gcc 3.3.5) access via . Alilogin v4-03-04-sarge . First AliRoot test runs successful
Status GSI disk • /d/alice01/03/04/05 dedicated for ALICE altogether still 220 GB space free • 3 new fileserver provide 8 TB disk space for Grid usage (LCG SRM) – interface to local users still investigated (xrootd ?) • 2 new fileservers available with 6 TB disk space. Need to be built in by systems group
Status GSI tape • 3 ALICE tape archives available • Alice (generic use), • Aliprod (AliEn use), • Aliceraw (for raw data)
Status AliEn2 Newest version (AliEn2.5) installed and working
production - GSI participates in SC3 and DC05currently 6 jobs in parallel (alice queue)new Sarge machines being included soon On new Sarge queue in principle 96 jobs in parallel possible (limited only by GSI bandwidth) SC3 is planned to run via Christmas holidays At GSI central IT services are not planned to be supervised GSI
Access to AliEn • Get certificate (http://wiki.gsi.de/Grid) • New AliEn user has to be created (workflow unclear !!!) • Mkdir $HOME/.alien • Echo „export AlIEN_USER=user“ > $HOME/.alien/Environment • ln –s $HOME/.globus $HOME/.alien/globus • >. /u/aliprod/bin/.alienlogin • > alien register-cert (AFS password required) • > alien proxy-init • > alien (login) User story discussed in ALICE-LCG-TF: User support and documentation needed SC4: individual user analysis
Production via AliEn • Ingredients: sim.C, rec.C, simRun.C, production.jdl • sim.C void rec() { AliSimulation simu; TStopwatch timer; timer.Start(); sim.Run(); timer.Stop(); timer.Print();} • rec.C void rec() { AliReconstruction reco; TStopwatch timer; timer.Start(); reco.Run(); timer.Stop(); timer.Print();}
if (seed==0) { fprintf(stderr,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); fprintf(stderr,"!!!! WARNING! Seeding variable for MC is 0 !!!!\n"); fprintf(stderr,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); } else { fprintf(stdout,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); fprintf(stdout,"!!! MC Seed is %d \n",seed); fprintf(stdout,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); } // set the seed environment variable gSystem->Setenv("CONFIG_SEED",sseed); gSystem->Setenv("DC_RUN",srun); gSystem->Setenv("DC_EVENT",sevent); gSystem->Exec("cp $ROOTSYS/etc/system.rootrc .rootrc"); gSystem->Exec("aliroot -b -q sim.C > sim.log 2>&1"); gSystem->Exec("aliroot -b -q rec.C > rec.log 2>&1");} • simRun.C // #define VERBOSEARGS// simrun.C{ // extract the run and event variables given with --run <x> --event <y> int nrun = 0; int nevent = 0; int seed = 0; char sseed[1024]; char srun[1024]; char sevent[1024]; sprintf(srun,""); sprintf(sevent,""); for (int i=0; i< gApplication->Argc();i++){#ifdef VERBOSEARGS printf("Arg %d: %s\n",i,gApplication->Argv(i));#endif if (!(strcmp(gApplication->Argv(i),"--run"))) nrun = atoi(gApplication->Argv(i+1)); sprintf(srun,"%d",nrun); if (!(strcmp(gApplication->Argv(i),"--event"))) nevent = atoi(gApplication->Argv(i+1)); sprintf(sevent,"%d",nevent); }seed = nrun * 100000 + nevent; sprintf(sseed,"%d",seed); Main à la pâte: simRun.C
"LF:/alice/cern.ch/user/a/aliprod/pdc05_flow/production/configs/sim.C","LF:/alice/cern.ch/user/a/aliprod/pdc05_flow/production/configs/sim.C", "LF:/alice/cern.ch/user/a/aliprod/pdc05_flow/production/configs/rec.C" }; OutputArchive={"root_archive:*.root@Alice::CERN::Castor2", "log_archive:*.log,stdout,stderr@Alice::CERN::se01"}; OutputDir="/alice/cern.ch/user/a/aliprod/production_2005/flow/output_allfiles/$1/#alien_counter_03i#"; splitarguments="simrun.C --run $1 --event #alien_counter#";split="production:1-50"; Workdirectorysize={"1500MB"}; • production.jdl Executable = "aliroot";Jobtag={"comment:PDC05 flow events“, "round::2005“, "tag:v4-03-04", "type:Flow"}; Packages={"AliRoot::v4-03-04“, "GEANT3::v1-3"}; TTL = "86400"; Validationcommand ="/alice/cern.ch/user/a/aliprod/production_2005/flow/configs/validation.sh"; Requirements = ( other.CE == "Alice::LCG::Catania" ); InputFile= {"LF:/alice/cern.ch/user/a/aliprod/pdc05_flow/production/configs/Config.C", "LF:/alice/cern.ch/user/a/aliprod/pdc05_flow/production/configs/simrun.C", Main à la pâte: jdl
Add locally produced files in AliEn File Catalogue • e.g. > alien alien:> cd alien:> add ks_newfile file://lxg0503.gsi.de/misc/kschwarz/testjobs/Config.C alien:>“Registering file in ALICE::GSI::File“ alien:>“File inserted into catalogue“
Submit the job, monitor, get output • > alien login • alien:> submit production.jdl • alien:> top • alien:> spy jobID nodeinfo/stdout/stderr • alien:> cd outputdirectory • alien:> get outputfiles
Analysis via AliEn • Ingredients: esdanalysis.jdl, AliESD.par (PROOF Archive), AliEnBatchAnalysis.C, esdTree.C/h (Selector files) • method: same as with production – create files, register them in AliEn FC, submit job, get output.
AliEnBatchAnalysis.C • Int_t AlienBatchAnalysis( • const char *collectionfile, • const char *selectorfile, • const char* pararchivename, • const char *chainname="esdTree" ) { • ////////////////////////////////////////// • // Libraries required to load • // gSystem.Load("libRAliEn.so"); • // gSystem.Load("libXMLIO.so"); • gSystem->Load("libapmoncpp.so"); • ////////////////////////////////////////// • ////////////////////////////////////////////////////////////////// • // Setup PAR File • if (pararchivename) { • char processline[1024]; • sprintf(processline,".! tar xvzf %s.par",pararchivename); • gROOT->ProcessLine(processline); • const char* ocwd = gSystem->WorkingDirectory(); • gSystem->ChangeDirectory(pararchivename); • // check for BUILD.sh and execute • if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) { • printf("*******************************\n"); • printf("*** Building PAR archive ***\n"); • printf("*******************************\n"); • if (gSystem->Exec("PROOF-INF/BUILD.sh")) { • Error("AlienBatchAnalysis","Cannot Build the PAR Archive! - Abort!"); • return -1; • } • } // check for SETUP.C and execute if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) { printf("*******************************\n"); printf("*** Setup PAR archive ***\n"); printf("*******************************\n"); gROOT->Macro("PROOF-INF/SETUP.C"); } gSystem->ChangeDirectory("../"); } ////////////////////////////////////////////////////////////////// // Connect to AliEn printf("*******************************\n"); printf("*** Connect to AliEn ***\n"); printf("*******************************\n"); TGrid::Connect("alien://"); ////////////////////////////////////////////////////////////////// // Create Collection printf("*******************************\n"); printf("*** Create Collection ***\n"); printf("*** Wk-Dir = |%s| \n",gSystem->WorkingDirectory()); printf("*** Coll = |%s| \n",collectionfile); printf("*******************************\n"); TAlienCollection* coll = TAlienCollection::Open(collectionfile); coll->Print(); ////////////////////////////////////////////////////////////////// printf("*******************************\n"); printf("*** Convert Collection ***\n"); printf("*******************************\n"); TGridResult* result = coll->GetGridResult("",1); TList* analysisfilelist = result->GetFileInfoList(); analysisfilelist->Print();
AlienBatchAnalysis.C part 2 • ////////////////////////////////////////////////////////////////// • // Create A Chain • printf("*******************************\n"); • printf("*** Create Chain ***\n"); • printf("*******************************\n"); • TChain* analysischain = new TChain(chainname); • analysischain->AddFileInfoList(analysisfilelist); • analysischain->Print(); • ///////////////////////////////////////////////////////////////// • // Run the Analysis Selector • printf("*******************************\n"); • printf("*** Run Analysis Selector %s\n",selectorfile); • printf("*******************************\n"); • analysischain->Process(selectorfile);
Collection XML file • <!-- comment ============================================================================ --> • <!-- = glite - splitted collection = --> • <!-- = (A) A.J.P + J.F.O = --> • <!-- ***************************** Child-Collection **************************** ** --> • <glite> • <collection name="dump-8" father="dump" index="8"> • <event name="1034"> • <file name="AliESDs.root" comment="" date="Aug 28 03:38" group="admin" guid="0038ada6-e1fd-112f-9804-c0a80186beef" path="/alice/production/aliprod/2004/dc04/jet-q-cent1/72-86GeV/00160/00222/AliESDs.root" permissions="frwxr-xr-x" pfn="file://alifarm03.to.infn.it/alinas/aliprod/02/51989/0038ada6-e1fd-112f-9804-c0a80186beef.1093657085" rootd="root://alifarm03.to.infn.it:13789//alinas/aliprod/02/51989/0038ada6-e1fd-112f-9804-c0a80186beef.1093657085" se="Alice::Torino::File" size="33978652" user="admin"> • <mirror name="Alice::Torino::File" domain="to.infn.it" latitude="45.06" location="Torino" longitude="7.667" master="1" rootd="root://alifarm03.to.infn.it:13789//alinas/aliprod/02/51989/0038ada6-e1fd-112f-9804-c0a80186beef.1093657085" site="Torino" /> • </file> • </event> • <event name="107"> • <file name="AliESDs.root" comment="" date="Aug 28 08:01" group="admin" guid="00126358-1fb0-1130-83f8-c0a80174beef" path="/alice/production/aliprod/2004/dc04/jet-q-cent1/72-86GeV/00157/00424/AliESDs.root" permissions="frwxr-xr-x" pfn="file://alifarm03.to.infn.it/alinas/aliprod/08/27711/00126358-1fb0-1130-83f8-c0a80174beef.1093672880" rootd="root://alifarm03.to.infn.it:13789//alinas/aliprod/08/27711/00126358-1fb0-1130-83f8-c0a80174beef.1093672880" se="Alice::Torino::File" size="36644323" user="admin"> • …