使用并行工具在PBS中运行一百万个列表

问题描述 投票:1回答:1

我的工作量巨大(几百万),包含列表,并且希望运行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月

amazon-ec2 parallel-processing openmpi gnu-parallel pbs
1个回答
0
投票

我不确定tool会做什么。但是,如果复制花费大部分时间,并且如果tool仅读取文件,那么您也许可以将文件符号链接到$TMP_DIR中,而不是进行复制。

是否可以更快执行此操作的一个很好的指示是查看群集中5台计算机的top。如果他们都使用所有内核的> 90%,那么您将无法期望更快地获得它。

© www.soinside.com 2019 - 2024. All rights reserved.