- 论坛徽章:
- 0
|
本帖最后由 addictlinux 于 2012-07-19 17:25 编辑
问题:在PC集群中(node1...node256 个节点) 需要在每个节点上做某个测试,此测试时间比较长(需要2小时左右)
如何编写一个脚本,将作业并行做,不是做完一个再做下一个。
想了几个招,但是没解决问题
想法1: 利用pdsh,但是每次只能同时做32个节点的作业,256个节点,我需要等(256/32)x2=16小时才能做完。
想法2:
编写的脚本1
cat /tmp/nodes_list
node 1
node 2
...
node 256
cat /tmp/test01.sh
#!/bin/sh
command=$@;
for I in `cat ./nodes_list | grep -v ^#`
do
echo $I;
ssh $I $command;
done
执行命令:
/tmp/test01.sh "/opt/intel/impi/4.0.3/bin/mpirun -np 2 ./run_linpack"
是每个节点执行完后,再做下一个,也不行! 这样我的测试时间是:2x256=512 小时。
编写脚本2
cat /tmp/test02.sh
#!/bin/bash
for i in `cat $1|grep -v '^\#'`
do
echo $i
# rsh $i $2
rsh $i $2 &
done
执行命令:
/tmp/test02.sh /tmp/nodes_list "/opt/intel/impi/4.0.3/bin/mpirun -np 2 ./run_linpack"
OK,这次是没问题了!
但是,我需要收集查看每个节点上运行的log
即:
/tmp/test02.sh /tmp/nodes_list "/opt/intel/impi/4.0.3/bin/mpirun -np 2 ./run_linpack | tee ./log/`hostname`_log01"
此hostname 始终为执行此条命令的 主机名!
请问大家,有什么好的方法。谢谢。 |
|