12.2 LHAASO¶
12.2.1 概况¶
| 资源类型 | 资源量 | 说明 |
|---|---|---|
| 登录节点 | ||
| HTCondor | ||
| Slurm | ||
| home目录 | ||
| 工作目录 | /eos/user/ |
1TB 空间,25 万文件数 |
站点说明¶
LHAASO实验目前有两个计算集群,分别是北京本地计算集群和稻城海子山计算集群。北京本地计算集群是LHAASO实验数据处理的中心站点,负责LHAASO实验数据的存储、处理、分析以及长期保存等功能;稻城海子山计算集群主要用于对在线获取的数据进行快速预处理和压缩。
由于稻城计算集群主要由特殊用户使用,因此本手册主要介绍北京本地计算集群使用情况。
12.2.2 计算服务¶
- 申请计算集群账号
请参考 4.1 账号申请,得到 LHAASO 实验计算负责人同意后,用户可获得 AFS 账号。
- 作业提交和管理
请参考 9.1.1 HTCondor 作业 小节中关于作业提交的说明。
环境设置¶
计算集群上使用HepJob工具集来管理作业,在使用之前,建议首先进行环境变量设置,具体方法为:
HepJob涉及的所有命令在/afs/ihep.ac.cn/soft/common/sysgroup/hep_job/bin下,建议将该目录加入用户环境变量 PATH 中:
- bash 用户
- tcsh 用户
提交 HTCondor 计算集群的作业文件必须具备可执行权限。可使用以下命令查看和赋予文件权限:
- 查看文件权限
上面的例子中 job.sh 不具有可执行权限,执行如下命令可赋予文件可执行权限
计算作业提交¶
在作业提交和查询时,需要指定所使用的用户组,即 -g 选项。对于北京集群,须指定使用 lhaaso 组;对于稻城集群,须指定使用 lhaasorun 组。具体使用方法如下:
1)北京计算集群作业提交
-
作业提交
-
作业查询
bash hep_q -g lhaaso -u userid -
作业删除
注意
-g lhaaso 并不是必选项,如果集群账号的主组是 lhaaso,则不需要添加此选项。查看集群账号主组的方法是:
gid 即为 km2amc 账号的主组,这里是 lhaaso,则提交作业不需要再加 -g lhaaso 选项。
如果想要修改集群账号的主组,由 ybj 改为 lhaaso,请向 ihep_computing_service@ihep.ac.cn 发送邮件申请,并抄送吴超勇老师 wucy@ihep.ac.cn。
2)稻城计算集群作业提交
-
作业提交
-
作业查询
bash hep_q -g lhaasorun -u userid -
作业删除
作业提交高级用法¶
对于需要批量提交的作业,可使用以下方法进行作业提交,可极大优化提交效率。
实例说明:此实例所要解决的问题是原始数据目录下子文件很多时,需大批量产生作业脚本,再提交脚本运行,造成集群卡顿的问题。
解决方式:使用带参数批量提交作业,将脚本数量减少到几个。
这里提供两种方式:非 Cluster 的方式提交和 Cluster 的方式提交,其中 Cluster 的方式是目前 hep_sub 支持的,能够大大提升作业提交的速度。
比如原始目录下有很多个 dat 文件,需要分别提交作业。
方法 1:非 Cluster 的方式提交
1)首先需要提前写好要执行的带外部输入变量的运行脚本(test.sh):
2)带参数提交作业(subjob.sh):
run=1
run1=3
while [ $run -le $run1 ]
do
hep_sub test.sh -g lhaaso -argu "Raw_${run}.dat"
run=`expr $run + 1`
done
方法 2:使用 Cluster 的方式提交
1)首先需要提前写好要执行的带外部输入变量的运行脚本(test.sh):
procid=$1
raw_id=$(expr $1 + 1)
input="Raw_${raw_id}.txt"
rawfile=you want
outfile=you want
./run.exe ${rawfile}/${input} ${outfile}/${1}.root
2)使用 Cluster 方式提交作业(subjob.sh):
北京计算集群作业时长及优先级¶
1)LHAASO作业时长及优先级 在登录节点上,可运行命令,按组查看作业时长限制。具体命令为:
2)作业优先级设置对于北京计算集群,为保证公用账号的作业任务,依据LHAASO实验组要求,设定一些账号的作业优先级。具体情况为:
| 账号名 | 作业优先级数量 |
|---|---|
| wfctamc | 2000 |
| lhaasorec | 2000 |
| wcdarec | 1000 |
| wcdaplusrec | 500 |
| wfctarec | 400 |
| gmxiang | 500 |
12.2.3 存储服务¶
针对实验数据使用的不同场景,计算集群提供不同的存储系统。目前按数据访问场景分为四类,分别是home目录,软件目录,实验数据存储目录,用户脚本存储目录。
| 数据存储场景 | 用途 | 目录名称 | 空间限额/文件数限额 | 访问方式 | 查看使用份额命令 |
|---|---|---|---|---|---|
| Home目录 | afs账号配置文件,脚本 | /afs/ihep.ac.cn/users/a-z/username | 500MB/none | 直接访问 | fs listquota /afs/ihep.ac.cn/users/username |
| 软件目录 | 公共软件 | /cvmfs/lhaaso.ihep.ac.cn/anysw | - | 直接访问 | 只有实验联系人有权限发布软件 |
| 实验数据存储 | 用于存放实验原始数据,重建数据,部分分析数据,模拟数据,刻度数据 | /eos/lhaaso | - | 无法直接访问,需通过xrootd方式访问 | - |
| 实验数据存储 | 实验数据,如一些模拟作业数据,不能够使用xrootd协议访问的 | /lhaasofs/data | - | 直接访问 | - |
| 个人实验数据存储 | 存储个人实验数据 | /eos/user/a-z/username | 1TB/25万个 | 无法直接访问,需通过xrootd方式访问 | eos quota |
| 个人工作目录 | 用于存放用户脚本,作业日志输出文件 | /home/lhaaso/username | 200GB/30万个 | 直接访问 | homequota |
在申请集群账号时,用户通常只有/afs/ihep.ac.cn/users/a-z/username和/eos/user/a-z/user,如果需要申请/lhaasofs/user/username目录,请向陈松战(chensz@ihep.ac.cn)和(zham@ihep.ac.cn)两位老师申请,申请批准后,将会建立该目录账号。
/eos/lhaaso 实验数据目录说明¶
| 目录名称 | 空间限额/文件数限额 | 查看使用份额的命令 | 存放用途 | 负责人 |
|---|---|---|---|---|
| /eos/lhaaso/raw | none/none | eos quota /eos/lhaaso/raw | 原始数据 | 计算中心 |
| /eos/lhaaso/spt | none/none | eos quota /eos/lhaaso/spt | 各实验单粒子数据 | 计算中心 |
| /eos/lhaaso/decode | none/none | eos quota /eos/lhaaso/decode | decode数据 | LHAASO组 |
| /eos/lhaaso/rec | none/none | eos quota /eos/lhaaso/rec | 重建数据 | LHAASO组 |
| /eos/lhaaso/cal | none/none | eos quota /eos/lhaaso/cal | 标定参数数据 | LHAASO组 |
| /eos/lhaaso/monitor | none/none | eos quota /eos/lhaaso/monitor | 数据质量监测数据及月影和Crab监测数据 | LHAASO组 |
上述每个目录下设 km2a、wcda、wcdapls、wfcta 子目录,每个目录由相应实验专人负责。数据按年/月/日/分级目录存储。
磁带数据¶
LHAASO 目前使用的 Castor 和 stager 服务器是 nslhaaso.ihep.ac.cn,磁带库服务器是 tplhaaso01.ihep.ac.cn。磁带备份目录是 /castor/ihep.ac.cn/lhaaso/raw,目前是按照 年/月(即 yyyy/mm)进行存储。
EOS 使用说明¶
EOS文件系统是一套基于xrootd框架的面向EB级数据存储的分布式文件系统。具体情况请参考8.4 EOS 文件存储。 1)EOS 访问文件
xrootd 协议访问 EOS 系统,访问方式为:
说明
- xrootd 默认使用 1094 端口
- 在端口后需要使用
// - filepath 需要使用 绝对路径
此处的 EOS_MGM_URL 为实例的服务器地址,北京 EOS 集群服务器地址为 root://eos01.ihep.ac.cn,稻城 EOS 集群服务器地址为 root://lhmteos01.lhaaso.ihep.ac.cn,该环境变量已配置在登录节点和计算节点中,可通过以下命令检查是否存在:
北京集群:
如果不存在,请自行设置:
稻城集群:
如果不存在,请自行设置:
提醒
可以将 EOS_MGM_URL 环境变量,写入 ~/.bash_profile 文件中,这样每次登录时,会自动加载。
注意
当用户在使用 /eos 盘时,只能通过 eos 命令来访问。
| Eos命令(推荐使用) | Linux命令(不可用) | 说明 |
|---|---|---|
| eos ls | ls | 查看文件列表 |
| eos cp | cp | 拷贝文件 |
| eos mv eos file rename | mv | 移动文件 |
| eos cp /eos/user/myfile -|cat | cat | 查看文件内容 |
| eos cp /eos/user/myfile -|tail | tail | 查看文件内容 |
| eos mkdir | mkdir | 创建文件夹 |
| eos touch | touch | 创建文件 |
| eos newfind -f /eos/mypath | 无 | 查找某一个目录下所有文件列表(包含子目录) |
| eos newfind -d /eos/mypath | 无 | 查找某一个目录下所有目录列表(包含子目录) |
| eos ln | ln | 创建软链接 |
| eos quota | 无 | 查看个人空间使用大小(/eos/user/a-z/username) |
| eos stat -f | ls | 判断文件是否存在,如果不存在,返回值为空 |
| eos file info | stat | 可查看文件的 Modify 修改时间和 Change 状态改动时间 |
其中,Linux 下的 cat 和 tail 命令可以用 xrdfs 相应命令代替,需要在 xrdfs 后面加上 EOS 的域名,比如 LHAASO EOS,就是 eos01 或 eos01.ihep.ac.cn:
- 查看文件全部内容:
xrdfs eos01 cat /eos/user/myfile - 查看文件尾部 N bytes 内容:
xrdfs eos01 tail -c N /eos/user/myfile - 实时查看文件尾部内容:
xrdfs eos01 tail -f /eos/user/myfile
2)作业中访问 EOS
作业中使用 xrootd 的前提 是物理软件需要支持 xrootd 协议。对于 ROOT 软件,目前已支持 xrootd 方式,但需要注意目前有三种方式产生 TFile 对象:
- 声明:
TFile(PATHNAME):不支持 xrootd - 新文件:
new TFile (PATHNAME):不支持 xrootd - 打开方法:
TFile::Open(PATHNAME):支持 xrootd
举例:
- 对于 ROOT 格式的文件,可以直接用
TFile::Open打开:
- 对于非 ROOT 格式的文件,也可以用 ROOT 的 TFile 类直接读写,需要在文件名后增加一个参数
?filetype=raw。举例:
void rawfile(){
int size;
char buf[1024];
TFile *rf = TFile::Open("root://eos01.ihep.ac.cn//eos/user/c/chyd/set.log?filetype=raw");
size = rf->GetSize();
printf("size is %d\n", size);
memset(buf, 0, 1024);
rf->ReadBuffer(buf, 1024);
printf("%s\n", buf);
rf->Close();
}
3)支持 xrootd 的 hadd
hadd 支持通过 xrootd 方式对文件进行合并,需要首先 source 环境变量,之后通过 histadd 命令就可以使用了。具体使用方式为:
输出示例:
Function: An alternative "hadd" made by <zhiguo.yao@ihep.ac.cn>
SYNOPSIS:
histadd [ -o outfile ]
[ -topdir | +topdir ] [ -folder folder1 [ -folder folder2 ... ] ]
[ -tree | +tree ]
[ -list listfile1 [ -list listfile2 ... ] ]
[ -inclhist histname1 [ -inclhist histname2 ... ] ]
[ -exclhist histname1 [ -exclhist histname2 ... ] ]
[ filename1 [ filename2 ... ] ]
BRIEF EXPLANATIONS:
-topdir: Add objects in the top directory of every root file (default).
+topdir: Ignore all objects in the top directory.
-folder folder: Activate adding the TFolder "folder".
*** Note: Only folders specfied by option "-folder folder" are added.
-tree: Add TTree objects (default).
+tree: Ignore all TTree objects.
-inclhist histname: include histname in the top directory. Default: all.
-exclhist histname: exclude histname in the top directory. Default: nothing.
-list listfile: Add every lines in "listfile" to the input list.
*** Note: Lines with leading "#" will be ignored!
filename: Add "filename" to the input list.
*** Note: (Many) list files and file names can be specified simultanously.
*** Note: EOS files will be automatically accessed via the xrootd protocol.
12.2.4 LHAASO 提交作业实例¶
-
应用程序:支持 xrootd 访问 /eos 盘文件
-
确保在使用 ROOT 打开文件时,使用
TFile::Open()方式打开 - 对于 EOS 盘上的文件,传入参数时,添加
EOS_MGM_URL=root://eos01.ihep.ac.cn/前缀 -
记住调用
TFile::Close()关闭文件 -
作业脚本:批量提交
12.2.5 注意事项¶
-
单一目录下不要有过多(几万以上)数据或脚本等文件,建议按照一定规律创建子目录,将文件放在子目录下, 单目录文件数量控制在 1000 以内。
-
作业中避免使用
ls \*或rm \*之类的操作,如果确需使用,建议在登录节点上提前将需要用到的目录 生成一个文件列表,在作业中通过查找文件列表来访问数据。另外在登录节点,如果只需查看文件名信息,可以使用/bin/ls代替ls命令,可以加快速度。如果需要查看 /eos 目录,则使用eos ls 目录绝对路径,速度会更快。 -
任务脚本写成一个模板,将要分析的文件名、数据目录和其他程序参数 作为脚本参数在用 hep_sub 提交时传递给脚本,例如
hep_sub my_job.sh -argu "aaa" "bbb",而不用生成许多类似的脚本,如my_job_aaa.sh、my_job_bbb.sh。 -
直接将生成的数据文件放在 eos 上(可以使用 xrootd 方式读写文件),后面有需要可以用
eos file rename将文件移动到指定目录。 -
对于 hadd 操作,避免使用
hadd \*.root,这样如果目录内文件很多,对文件系统压力会非常大。建议提前将需要合并的文件生成到一个列表里,再用 hadd 进行合并;而对于 ROOT 文件存在于 /eos 上,因为 hadd 操作可以支持 xrootd 方式的,所以只需要在文件名(绝对路径)前面增加root://eos01.ihep.ac.cn/这个前缀就可以。 -
体积不大的个人程序文件(几 MB),如
my_program如果没有存放在 CVMFS 上,则可以在脚本中用eos cp命令将程序复制到运行节点的/tmp/目录下,在复制之前可以先判断是否存在,不存在时再复制,然后运行/tmp/my_program my_para。
12.2.6 稻城集群使用¶
注意
稻城现在的个人目录在 WCDA 开始比较正式的快速重建后将会被全部清除掉,仅只保留 wcdarec、wcdaplsrec 两个公共目录(理论上)。
1)稻城计算集群说明
目前稻城计算集群有 1748 个 CPU 核、1.63PB 存储空间,有 2 个登录节点。
2)提交稻城集群作业步骤
a. 使用 AFS 账号登录稻城登录节点
节点名:lhmtlogin01.lhaaso.ihep.ac.cn、lhmtlogin02.lhaaso.ihep.ac.cn
登录方式:AFS 账号名、密码
目前已建立 wcdarec 账号,路径是 /eos/daocheng/user/w/wcdarec。
b. 拷贝作业脚本
目前稻城计算节点上有两个挂载目录,一个是 AFS 目录,另一个是 /eos/daocheng 的存储目录。所以,需要把相关作业脚本通过 rsync 命令拷贝到 /eos/daocheng 下面。
c. 提交作业
由于 AFS 目录不能写文件,如果要使用 AFS 目录来提交作业的话,需要重定向一下作业输出和错误输出文件位置。
可以直接在 /eos/daocheng 目录下提交作业。
d. 作业拷回
目前只支持通过 rsync 拷贝回本地。
3)作业提交及查询命令
提交作业:
查询作业:
删除作业:
查看作业 held 原因:
XCache 缓存代理服务¶
为降低访问时延,计算中心为 LHAASO 用户访问稻城 EOS 数据提供了 XCache 缓存代理服务,服务器地址是 lhaasocache.ihep.ac.cn。使用方法也很简单,在访问稻城数据时,将稻城 EOS 地址直接替换为前面的地址即可。
替换为:
-
在北京登录节点,通过 ROOT 访问稻城 EOS 集群数据
登录 lxlogin,执行:
-
查看稻城 EOS 集群数据情况
首先登录 lxlogin,执行:
进入 xrdfs 的命令行后,可以敲入
help查看相关命令,比如查看目录情况:ls /eos/daocheng/raw。
注意
- 目前采用的缓存代理服务,只提供 只读 权限,即只能查看稻城 EOS 集群上的文件,而不能进行修改。
- 由于目前是缓存代理服务,所以初次访问时速度并不会增快,随着数据访问越来越多,越来越频繁,缓存的数据也就越多,缓存命中率也就越高,届时文件访问速度也会有明显改善。
- 如果使用了 cvmfs 上的 lhaaso 环境,默认会使用 cvmfs 上的 xrdfs,由于目前 cvmfs 上的依赖包不全,会找不到相应的库,所以建议直接使用系统自带的 xrdfs——
/usr/bin/xrdfs。
12.2.7 其他注意事项¶
注意
不要在 ~/.bashrc 中 source 存储文件系统(如 /workfs 等)的文件,因为这样会在登录到集群时,如果某个存储文件系统盘卡住,会造成无法登录或登录时间太长。比如这种不建议:
有些作业删除后显示"X"状态,对于这种作业,需要使用 hep_rm -forcex jobid 来删除这种状态的作业。
常见问题(FAQ)¶
见常见问题。
有问题?输入后跳转到对话页继续交流