我可以访问使用“扭矩”的群集(我认为),并且我们使用PBS脚本提交作业。我需要运行超过200个用Java开发的应用程序实例。该应用程序充当形成P2P网络的对等方,这意味着这些实例通过套接字相互通信。
我能够在集群的单个节点上运行100个实例来进行测试,但是在单个节点上运行200个实例却无法正常工作,并且我无法请求更多资源(内存,内核等)。 )
我的问题是:我应该按照自己的方式来做吗?使用串行脚本,在其中我一个个地启动所有实例,然后将它们发送到后台,然后等待它们吗?
是否可以使用并行脚本来完成此任务,在该脚本中我可以要求2个节点并在每个节点中实例化我的应用程序的100个实例?在这种情况下,我还有其他问题:我该怎么办?是否可以保证两个作业同时运行?所有200个实例必须同时运行。
- 为了形成P2P网络,在串行作业中必须至少知道一个对等IP地址,我可以在脚本中获取节点IP地址并将其作为参数传递给应用程序,但是在具有2个节点的并行作业中,我该如何做这个?
这是我当前正在使用的脚本的一部分...
#PBS -l nodes=1:ppn=4
#PBS -l pmem=6GB
#PBS -l walltime=00:20:00
IP=`/sbin/ifconfig eth0 | grep 'inet ' | awk '{print $2}' | sed 's/addr://'`
PORT_PEER=3000
java -jar $JAR $JAR_PARAMS -ip=$IP -port=$PORT_PEER & # first peer, others connect to this one..
for i in {1..99}
do
PORT_PEER=`expr $PORT_PEER + 2`;
java -jar $JAR $JAR_PARAMS -ip=$IP -port=$PORT_PEER -bootstrap=$IP:3000 &
sleep 1s
done
wait # wait here until all instances terminates