我的工作量巨大(几百万),包含列表,并且希望运行Java编写的工具来执行功能比较。该工具在
中完成计算real 0m0.179s
user 0m0.005s
sys 0m0.000s sec
在GNU并行环境中使用pbs扭矩调度程序运行5个节点(每个节点有72 cpus),工具运行正常并产生结果,但是当我为每个节点设置72个作业时,它应该一次运行72 x 5个作业,但我可以看到只有25-35个工作!在每个节点上检查cpu利用率也显示利用率低。
我希望一次运行72 X 5或更多的作业,并利用所有可用的源(72 X 5 cpus)产生结果。
正如我提到的,要运行约2亿个作业,我希望通过使用/增加节点数/ CPU的数量来更快地(1-2小时)完成它。
当前代码,输入和作业状态:
example.lst(大约有3亿行)
ZNF512-xxxx_2_N-THRA-xxtx_2_N
ZNF512-xxxx_2_N-THRA-xxtx_3_N
ZNF512-xxxx_2_N-THRA-xxtx_4_N
.......
cat job_script.sh
#!/bin/bash
#PBS -l nodes=5:ppn=72
#PBS -N job01
#PBS -j oe
#work dir
export WDIR=/shared/data/work_dir
cd $WDIR;
# use available 72 cpu in each node
export JOBS_PER_NODE=72
#gnu parallel command
parallelrun="parallel -j $JOBS_PER_NODE --slf $PBS_NODEFILE --wd $WDIR --joblog process.log --resume"
$parallelrun -a example.lst sh run_script.sh {}
cat run_script.sh
#!/bin/bash
# parallel command options
i=$1
data=/shared/TF_data
# create tmp dir and work in
TMP_DIR=/shared/data/work_dir/$i
mkdir -p $TMP_DIR
cd $TMP_DIR/
# get file name
mk=$(echo "$i" | cut -d- -f1-2)
nk=$(echo "$i" | cut -d- -f3-6)
#run a tool to compare the features of pair files
/shared/software/tool_v2.1/tool -s1 $data/inf_tf/$mk -s1cf $data/features/$mk-cf -s1ss $data/features/$mk-ss -s2 $data/inf_tf/$nk.pdb -s2cf $data/features/$nk-cf.pdb -s2ss $data/features/$nk-ss.pdb > $data/$i.out
# move output files
mv matrix.txt $data/glosa_tf/matrix/$mk"_"$nk.txt
mv ali_struct.pdb $data/glosa_tf/aligned/$nk"_"$mk.pdb
# move back and remove tmp dir
cd $TMP_DIR/../
rm -rf $TMP_DIR
exit 0
PBS提交
qsub job_script.sh
qstat
[ec2-user@ip-172-31-5-92 work_dir]$ qstat
Job ID Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
23.ip-172-31-5-92.ec2.interna job01 ec2-user 00:02:03 R batch
登录到节点之一:ssh ip-172-31-9-208
top - 09:28:03 up 15 min, 1 user, load average: 14.77, 13.44, 8.08
Tasks: 928 total, 1 running, 434 sleeping, 0 stopped, 166 zombie
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 98.4%id, 1.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 193694612k total, 1811200k used, 191883412k free, 94680k buffers
Swap: 0k total, 0k used, 0k free, 707960k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22974 ec2-user 20 0 160m 21m 4116 D 1.3 0.0 0:23.40 perl
9 root 20 0 0 0 0 I 0.3 0.0 0:01.63 rcu_sched
15346 ec2-user 20 0 0 0 0 Z 0.3 0.0 0:00.01 ssh <defunct>
15348 ec2-user 20 0 16028 2820 1820 R 0.3 0.0 0:00.10 top
15621 ec2-user 20 0 169m 7584 6684 S 0.3 0.0 0:00.01 ssh
15625 ec2-user 20 0 171m 7472 6552 S 0.3 0.0 0:00.01 ssh
15626 ec2-user 20 0 126m 3924 3492 S 0.3 0.0 0:00.01 perl
15674 ec2-user 20 0 171m 7704 6780 S 0.3 0.0 0:00.01 ssh
15677 ec2-user 20 0 169m 7620 6720 S 0.3 0.0 0:00.01 ssh
15678 ec2-user 20 0 171m 7556 6632 S 0.3 0.0 0:00.01 ssh
15681 ec2-user 20 0 171m 6820 5936 D 0.3 0.0 0:00.01 ssh
15689 ec2-user 20 0 171m 6828 5944 D 0.3 0.0 0:00.01 ssh
.....
登录到另一个节点:ssh ip-172-31-13-215
top - 09:30:07 up 18 min, 1 user, load average: 6.50, 6.47, 4.23
Tasks: 698 total, 1 running, 382 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.1%id, 0.8%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 193694612k total, 1721584k used, 191973028k free, 95684k buffers
Swap: 0k total, 0k used, 0k free, 706332k cached
....
登录到另一个节点:ssh ip-172-31-13-211
top - 09:33:44 up 21 min, 1 user, load average: 8.15, 7.95, 5.77
Tasks: 735 total, 2 running, 417 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.1%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 193694612k total, 1759556k used, 191935056k free, 96456k buffers
Swap: 0k total, 0k used, 0k free, 714672k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
29403 ec2-user 20 0 150m 5044 3640 D 0.7 0.0 0:00.02 glosa
4874 root 20 0 241m 3132 2488 S 0.3 0.0 0:00.80 rsyslogd
29155 ec2-user 20 0 15868 2840 1992 R 0.3 0.0 0:00.09 top
29629 root 20 0 117m 7172 6084 S 0.3 0.0 0:00.01 sshd
顶部的所有节点都显示相似的状态,并且一次仅运行〜26个就可以产生结果!
[我的aws-parallelcluster包含5个节点(每个节点具有72 cpus),带有扭矩调度程序和GNU Parallel 2018,2018年3月
我不确定tool
会做什么。但是,如果复制花费大部分时间,并且如果tool
仅读取文件,那么您也许可以将文件符号链接到$TMP_DIR
中,而不是进行复制。
是否可以更快执行此操作的一个很好的指示是查看群集中5台计算机的top
。如果他们都使用所有内核的> 90%,那么您将无法期望更快地获得它。