CRAB job 1. CRAB이란? CRAB: CMS Remote Analysis Builder 원격으로 Tier-2에접속해서일을하는프로그램이다. 사용자의컴퓨터가아닌외부의 Tier-2에서일이돌아가므로사용자의 terminal이꺼진다해도일이끊기지않는다. 2. 전제조건 private key 가있어야한다. VO member 여야한다. 3. sitedb CMS에서해당 file의관련 site와사용자를찾기위한 database 와 web interface를말한다. crab stageout 이나 publication에사용되기도하고 group이나 people을정의할때도사용된다. 보통은자동적으로 NICE account와 mapping이된다. 잘못 mapping이되었을경우에만다시설정해주면된다. 4. 환경설정 crab 을사용하려면먼저환경을설정해야한다. 이환경은사용할 tier 에따라다르다. 우리 그룹은 caf 를이용하므로다음과같이설정한다.( 다음은 bash 기반명령어이다.) CMSSW 의 src 에서 cmsenv 까지해준뒤 source /afs/cern.ch/cms/lcg/lcg-2/ui/cms_ui_env.sh source /afs/cern.ch/cms/ccs/wm/scripts/crab/crab.sh 경북대서버를사용할경우다음과같이설정한다. 먼저경북대에는 CRAB이없으므로 https://twiki.cern.ch/twiki/bin/view/cmspublic/swguidecrab 에서최근버전을다운받아설치한다. 역시 CMSSW의 src에서 cmsenv까지해준뒤 source ~/CRAB_2_8_6/crab.sh 5. file 작성 CRAB은 python file을원격으로보내실행하도록하는프로그램이다. 그러므로일반적으로 python file이있는 directory에 crab job file을만든다. file 이름은 default 값이 crab.cfg이다. 다른이름을사용할경우에는실행시지정해주면된다. file 내의내용들은 [] 로구분된다. [CRAB], [CMSSW], [USER], [GRID] 4 가지의주제가있는데편의상의구분같아보이지만각
주제별로명령들이따로있는것을보면주제끼리의순서는상관없어도명령들의위치를지 켜야할지도모른다. 하지만실험은해보지않았으니심심하면체크해봐도된다. [CRAB] CRAB 을하기위한가장기본적인세팅이다. jobtype = cmssw scheduler = glite 등이있다. 보통 CRAB 을이용해실행하는것은 CMSSW 이다. 그리고 scheduler 는종류가있는데필요 에따라맞는 scheduler 를사용하면된다. [CMSSW] 실행에관한대부분의정보가여기에들어간다. lumi_mask = ~~~.txt total_number_of_lumis = -1 lumis_per_job = ~~ dbs_url = http:~~~ datasetpath = ~~~ pset = ~_cfg.py runselection =~-~ output_file = ~.root pycfg_params = noprint 등이있다. lumi_mask란사용할 JSON file의이름이다. JSON file은 text file로주어지므로.txt가들어간다. 이 JSON file의이름은 DAS(Data Aggregation Service) 페이지에서찾는다. (https://cmsweb.cern.ch/das/) JSON file은사용할 run에해당하는 lumisection이설정되어있는 file이다. 이 JSON file이실행할 file과같은 directory에들어있어야만적용된다. total_number_of_lumis 는얼마나많은 lumisection 에대해실행할것인가를말한다. JSON file 은하나의통합 file 이고 lumisection 으로구분이된다. 그러므로 lumisection 에대한설 정이필요한데 -1 로할경우모든 lumisection 에대해실행하게된다. lumis_per_job. 많은 lumisection 에대해실행하다보면너무시간이오래걸릴수있다. 그 래서 CRAB 도 job 을쪼개서실행할수있다. lumis_per_job 은하나의 job 에얼마만큼의 lumisection 을넣을지정해주는것이다.
number_of_job. 반대로 job 의숫자도정해줄수있다. 그러면 job 숫자에맞게 lumisection 이쪼개져들어간다. dbs_url 은사용할 source file 이있는사이트이다. source file 이 CMS server 안에있지않 다면사이트를알려줘야한다. datasetpath 는사용할 source file 이있는경로이다. pset 은 CRAB 을통해실행할 python file 의이름이다. runselection. JSON file 의경우공용이기때문에자신의원하는 run 만따로사용하기도한 다. 이때 reunselection 을사용하면 JSON file 의 run 범위와교집합만실행하게된다. 전부 실행하려면 runselection 을사용하지않으면된다. output_file 은결과물을어떤이름으로출력할것인지이다. pycfg_params = noprint. python file 에서 VarParsing 을사용할경우이렇게세팅해야만 한다. [USER] 유저가원하는것에대한세팅을한다. 저장장소 working directory 등이다. email = ~ ui_working_dir = ~ storage_element = cluster142.knu.ac.kr storage_path = ~~ user_remote_dir = ~ return_data = 0 copy_data = 1 local_stage_out= 0 email 은 CRAB job 에대한정보를받을메일의주소이다. ui_working_dir 는 CRAB 을돌리기위한파일들과결과에대한 log 등을모아놓는 directory 이다. 현재 crab file 이있는 directory 안에 ui_working_dir 에설정된 directory 가만들어 진다. storage_element 는결과를저장할저장소를말한다. 예로들어진것은경북대서버이다. storage_path 는저장소내의경로를말한다.
user_remote_dir 는저장소내의경로를따라간뒤에최종적으로저장하는 directory 를말한 다. 해당 directory 가없을경우에새로만든다. return_data 는결과를 ui_working_dir 에받아오는것으로보인다. 값이 1 일때실행되고 10 MB 이하의경우에만사용한다. copy_data 도있는데대용량의경우사용하는데 user_remote_dir 에받아오는것으로보인 다. [GRID] grid 의활용에관한세팅을한다. rb = CERN virtual_organization = cms CERN 과 CMS 라는기본설정이다. Tier 에대한 white list 나 black list 도여기서설정한다. CRAB 실행시의 option 들과앞에서나온설명들은 help 로확인하면된다. 6. 실행 그러면실행과정을보자. crab create cfg filename.cfg 이러면 CRAB job을할수있는 file들이생성된다. 그리고 cfg file에서설정된 directory가생성된다. crab은기본적으로 crab.cfg file을사용하지만이 directory 안에서다른 job을할수도있다. 그래서 cfg file이여러개가된다면어떤작업을할것인지정해줘야한다. -cfg의역할이그것이다. crab submit c directory 여기서 directory란앞에서 create를통해만들어진 directory를말한다. 앞의이유와같이 directory도여러개가될수있기때문에어떤 directory에작업을할것인지정해줘야한다. crab create submit cfg filename.cfg 로한번에처리하기도한다. 이럴땐 c 과정이 필요없다. crab 이성공적으로 submit 되었다면 crab status c directory 로상태를확인할수있다. job 이모두돌아갔다는결과가나오면
crab getouput c directory 로결과에대한내용을저장할수있다. 특정 job에 trouble이생겼을때 (ex: 13, 119) crab -get(or -getoutput) 13, 119 crab -resubmit 13, 119 을하면다시작업을할수있다. error가나서작업이되지않은것이라면 error 번호가나온다. 이번호가무엇을의미하는지알아보려면 https://twiki.cern.ch/twiki/bin/viewauth/cms/jobexitcodes 에서확인할수있다. 그리고자세한내용은 getoutput 뒤에 create때만들어진 directory에들어가면 /res/filename.stdout 을확인하면된다. reference: http://www.cms-kr.org/twiki/bin/view/heavyion/crabforhidilepton https://twiki.cern.ch/twiki/bin/view/cmspublic/workbookcrabtutorial https://twiki.cern.ch/twiki/bin/view/cmspublic/swguidecrab (CRAB main site)