PBS 脚本命令的调度
- PBS 脚本
- 运行命令
- **如何跑?**
- 准备 PBS 脚本?
- 成品
本文涉及:
- PBS 命令
- Shell 命令
- Python 命令
使用命令行运行作业,需要在 HPC 中放好 PBS 脚本。 如何写一个 PBS 脚本,下面以自己的 PBS 脚本为例。
PBS 脚本
PBS 基本命令
笔记:指定作业名(最大15个字符)
#PBS -N Test
笔记:指定 PBS 系统运行程序的节点名和节点数(如:1 个节点,1 个核心)
#PBS -l nodes=1:ppn=24
笔记:指定 PBS 系统运行 30 小时
#PBS -l walltime=30:00:00
笔记:指定作业的队列为 batch 队列
#PBS -q batch
笔记:设置作业的优先级,范围在-1024 ~ +1023,越大优先级越高
#PBS -p 1022
笔记:该参数指定标准错误输出的位置,缺省的情况下,PBS 系统把标准输出和标准错误输出放在用户qsub 命令提交作业的目录下。
#PBS -o /home/physics/output
#PBS -e /home/physics/output_err
笔记:进入工作目录 $PBS_O_WORKDIR
cd $PBS_O_WORKDIR
笔记:打印作业被 PBS 系统指定的作业号,脚本在执行时的作业名,作业队列信息
echo This jobs is $PBS_JOBID@PBS_JOBNAME@$PBS_QUEUE
笔记:逐行打印作业名字到 Test_01.txt 文件中
echo my job id is $PBS_JOBID | tee Test_01.txt
笔记:逐行打印运行的节点
echo run nodes is followomg: | tee -a Test_01.txt
笔记:将 PBS 系统指定的作业运行的节点名写入到 Test_01.txt
cat $PBS_NPDEFILE | tee -a Test_01.txt
笔记:打印运行的开始时间写入 Test_01.txt
echo begin time is 'date' | tee -a Test_01.txt
id='echo $PBS_JOBID|awk -F. '{print $1}' '
笔记:对使用的核心数进行统计
NP='cat $PBS_NODEFILE|wc -l'
笔记:export 到本作业的环境变量,使用 ScienceTools 环境
export FERMI_DIR=/public/home/yitingfeng/ScienceTools-v11r5p3-fssc-20180124-x86_64-unknown-linux-gnu-libc2.17/x86_64-unknown-linux-gnu-libc2.17
笔记:找到 FERMI_DIR 下的 fermi-init.sh,使 fermi-init 库生效
source $FERMI_DIR/fermi-init.sh
笔记:运行程序
python gtlike-sourceone-530.py
笔记:打印结束时间
echo end time is 'date' | tee -a Test_01.txt
运行命令
首先登录 Xshell ,已经登录成功界面:
以跑易老师的程序为例:
易老师超算中心目录
如何跑?
使用 2 步切换到运行程序目录
cd ~/DCF
cd ./3FGLJ0303.4-2407
提交作业
qsub <PBS作业脚本>
qsub gtlike-fat-532.pbs
生成一个作业号(运行成功的标志)
4309.admin1
查看作业状态
qstat 4309.admin1 (或者 qstat 4309)
取消作业
qdel 4309.admin1
更改作业队列
qmove high 4309.admin1
更改预计的运行时间
qalter -l walltime=50:00:00 4309.admin1
准备 PBS 脚本?
查看服务器所有提交作业状态
qstat
Job Id | name | User | Time Use | S | Queue |
---|---|---|---|---|---|
作业标识符 PBS 自动指定 | 作业名 | 用户名 | 作业已经运行的时间 | 作业状态 | 队列名 |
列出正在运行作业的作业号,作业名,用户,运行时间,队列名信息:
qstat -t
S | 作业状态 |
---|---|
E | 退出 |
Q | 排队 |
H | 挂起 |
R | 运行 |
C | 结束 |
交换作业顺序
qorder 4299.admin1 4309.admin1
使用下面的命令查看所有节点运行状态
pestat
node | state | Load | Rhymem | ncpus | Allmem | Resi | usrs | Tasks | Joblist |
---|---|---|---|---|---|---|---|---|---|
节点名 | 节点状态 | 节点负载 | 物理内存数 MB | cpu / 核心数 | 分配内存数 | 寄存器数 | 用户数 | 作业数 | 作业列表 |
state | 表示的具体情况: |
---|---|
excel | 所有 CPU 资源已经被占用; |
busy | CPU 已经接近满负荷运行(次选节点); |
free | 全部或部分 CPU 空闲(首选节点); |
offl | 已离线(管理员手动指定离线,谁都用不了)。 |
查看队列信息:
qstat -q
Queue | 说明 |
---|---|
middle | 中间 |
high | 高的 |
batch | 批量 |
low | 低的 |
defaultAp | 默认应用程序 |
列出队列的一些隐藏信息
qstat -Q
列出 PBS 服务器相关信息:
qstat -B
只有一个管理员,服务器上有 3 个作业,2 个挂起,1 个正在运行。
成品
#PBS -N Test
#PBS -l nodes=1:ppn=24
#PBS -l walltime=30:00:00
#PBS -q batch
#PBS -p 1022
#PBS -o /home/physics/output
#PBS -e /home/physics/output_err
cd $PBS_O_WORKDIR
echo This jobs is $PBS_JOBID@PBS_JOBNAME@$PBS_QUEUE
echo my job id is $PBS_JOBID | tee Test_01.txt
echo run nodes is followomg: | tee -a Test_01.txt
cat $PBS_NPDEFILE | tee -a Test_01.txt
echo begin time is 'date' | tee -a Test_01.txt
id='echo $PBS_JOBID|awk -F. '{print $1}' '
NP='cat $PBS_NODEFILE|wc -l'
export FERMI_DIR=/public/home/yitingfeng/ScienceTools-v11r5p3-fssc-20180124-x86_64-unknown-linux-gnu-libc2.17/x86_64-unknown-linux-gnu-libc2.17
source $FERMI_DIR/fermi-init.sh
python gtlike-sourceone-530.py
echo end time is 'date' | tee -a Test_01.txt