[关闭]
@nicklhy 2016-04-26T03:07:34.000000Z 字数 2665 阅读 5939

集群服务器PBS作业系统常用命令

集群服务器

News

  1. qsub debug功能bug修复:之前用qsub -d xx.job进行python -m ipdb调试可能出现卡住的问题,后查明原因是因为timeout命令和pdb调试模块的一些冲突,现在改变实现方式后bug已经解决。

PBS任务系统介绍

集群服务器为了方便管理,所有用户都必须通过PBS作业系统(torque)提交任务的方式来运行自己的程序,而不是随意选择一个计算结点随意运行,对于PBS任务系统的详细说明请查看官方文档,这里只对其使用进行简要说明。
PBS任务系统的任务提交流程非常简单,大致如下:
1. 假设任务需要执行的命令(可执行文件、带参数的长命令等)为 python test.py;
2. 编写任务提交配置文件 pbs_test.job;
3. 通过qsub命令提交任务;
4. 通过qpeek、showq、qstat、qdel等命令查看、停止任务;

提交任务配置文件

用户为了运行自己的程序必须准备一个用于提交任务的配置文件,假设用户的想要执行的命令为 :

  1. python train_imagenet.py --gpus 5,6,7,8

该程序需要占用3号计算结点的4个CPU和4个GPU(PBS系统本身并不支持GPU动态调度,因此一般把GPU和CPU设置成相同数量),那么可以编写一个用于提交任务的配置文件 pbs_imagenet.job:

  1. #!/bin/bash
  2. #PBS -N work
  3. #PBS -l nodes=1:compute-0-3:ppn=4,walltime=10:00:00
  4. #PBS -j oe
  5. cd $PBS_O_WORKDIR
  6. nprocs=`cat $PBS_NODEFILE | wc -l`
  7. cat $PBS_NODEFILE > NODEFILE
  8. python train_imagenet.py --gpus 5,6,7,8

其中:
1. 第2行的"-N work1"表示任务名字,可以自己随意选择,在用qstat命令查看任务时会显示;
2. 第3行的compute-0-3表示3号计算结点(目前可选项为compute-0-1, compute-0-2, compute-0-3三个);
3. 第3行的ppn=4表示使用4个CPU;
4. 第3行的nodes=1表示使用1个计算结点;
5. 第3行的walltime=10:00:00表示该程序预计用时为10个小时,10个小时后即使程序未结束也会被强制终止;
6. 第4行的"-j oe"表示需要保存程序的标准输出(stdout)和标准错误(stderr);
7. 第6、7行为某些MPI程序需要用到的多机并行配置,普通程序可有可无;
8. 第8行为用户自己需要执行的程序,如果有多条命令,依次在后面添加即可;

命令介绍

下面对常用的几个命令进行介绍:
- qsub: 用来提交任务,例如qsub xxx.job,执行后会返回一个任务号,表示提交成功,否则会返回一些错误信息;
- showq: 显示当前集群正在运行、等待的所有任务及已占用的计算资源,注意,只能看到自己提交的任务列表,而不能看到其他用户提交的任务列表;
- qstat: 显示自己提交的任务列表
- qdel: 终止任务,例如qdel 1234,即为终止1234号任务的意思,同样,每个用户也只能终止自己提交的任务;
- qpeek: 用以查看某个任务的输出,加上-f参数可以实时查看任务输出,否则每次运行只显示部分输出,用法为qpeek -f 1234;
- fetch-gpu, fetch-cpu, fetch-io: 用于查看某个计算结点的资源使用情况,例如fetch-gpu -n 1,查看1号结点的GPU使用情况

常见问题

  1. #!/bin/bash
  2. #PBS -N work
  3. #PBS -l nodes=1:compute-0-3:ppn=4,walltime=10:00:00
  4. #PBS -j oe
  5. cd $PBS_O_WORKDIR
  6. nprocs=`cat $PBS_NODEFILE | wc -l`
  7. cat $PBS_NODEFILE > NODEFILE
  8. python -m ipdb train_imagenet.py --gpus 5,6,7,8
之后使用qsub的debug模式进行提交,qsub -d pbs_imagenet.job,即可按照正常的单步调试方式继续了。
**注意**:该命令选项"-d"专门为调试使用,并不会真的把该程序提交到PBS任务系统,而是直接放到计算结点上执行,为了防止用户通过该功能绕过PBS作业系统,因此设置了超时选项,即用户每次使用该调试功能不能超过**30分钟**,30分钟后会自动终止。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注