贊同,已經試驗成功。
后來查手冊: $man qdel
-p 的功能是強制凈化隊列。
這個 “p” 可能是 “purge” 的縮略形式
qsub,qdel,qmgr,qstat,qhost
PBS 是公開源代碼的作業管理系統,在此環境下運行,用戶不需要指定程序在哪些節點上運行,程序
所需的硬件資源由PBS 管理和分配。
1、PBS 命令
PBS 提供4 條命令用於作業管理。
(1)
qsub 命令—用於提交作業腳本
命令格式:
qsub [-a date_time] [-c interval] [-C directive_prefix]
[-e path] [-I] [-j join] [-k keep] [-l resource_list] [-m mail_options]
[-M user_list][-N name] [-o path] [-p priority] [-q destination] [-r c]
[-S path_list] [-u user_list][-v variable_list] [-V]
[-W additional_attributes] [-z]
[script]
參數說明:因為所采用的選項一般放在pbs 腳本中提交,所以具體見PBS 腳本選項。
例:# qsub aaa.pbs 提交某作業,系統將產生一個作業號
qsub -cwd -S /bin/bash -l vf=1.5G,p=8,h=compute-0-15 -P project -q all.q -p 100 -N test -o std.o -e std.e
run.sh
-cwd #
指定當前路徑為工作目錄,
sge
的日志會輸出到當前路徑。
-S #
指定遠程計算節點的
shell
路徑
-l #
指定資源請求,多個請求用逗號
(,)
隔開
vf=1.5G #
任務的預估內存,內存估計的值應稍微大於真實的內存,內存預估偏小可能會導致節點跑掛。
h=compute-0-15 #
指定任務跑在
compute-0-15
節點上
p=8 #
指定要申請的
CPU
核心數
-q #
指定要投遞到的隊列,如果不指定的話,
SGE
會在用戶可使用的隊列中選擇一個。
-P #
參數指明任務所屬的項目
-p #
設置優先級,優先級高的優先執行
-N #
指定任務名稱
-o #
指定標准輸出路徑
-e #
指定標准錯誤路徑
run.sh #
為任務腳本
(2)
qdel 命令—用於刪除已提交的作業
命令格式:qdel [-W 間隔時間] 作業號
命令行參數:
例:# qdel -W 15 211 15 秒后刪除作業號為211 的作業
(3)
qmgr 命令—用於隊列管理
qmgr -c "create queue batch queue_type=execution"
qmgr -c "set queue batch started=true"
qmgr -c "set queue batch enabled=true"
qmgr -c "set queue batch resources_default.nodes=1"
qmgr -c "set queue batch resources_default.walltime=3600"
qmgr -c "set server default_queue=batch"
(4)
qstat 命令—用於查詢作業狀態信息
命令格式:qatat [-f][-a][-i] [-n][-s] [-R] [-Q][-q][-B][-u]
參數說明:
-f jobid 列出指定作業的信息
-a 列出系統所有作業
-i 列出不在運行的作業
-n 列出分配給此作業的結點
-s 列出隊列管理員與scheduler 所提供的建議
-R 列出磁盤預留信息
-Q 操作符是destination id,指明請求的是隊列狀態
-q 列出隊列狀態,並以alternative 形式顯示
-au userid 列出指定用戶的所有作業
-B 列出PBS Server 信息
-r 列出所有正在運行的作業
-Qf queue 列出指定隊列的信息
-u 若操作符為作業號,則列出其狀態。
若操作符為destination id,則列出運行在其上的屬於user_list 中用戶的作業狀態。
例:# qstat -f 211 查詢作業號為211 的作業的具體信息。
這個命令默認顯示當前用戶的任務狀態(r/qw/Eqw),不顯示資源消耗情況
$ qstat -u zhandl
job-ID prior name user state submit/start at queue slots
ja-task-ID
--------------------------------------------------------------------------------------------
591148 0.55000 test.sh zhandl r 01/27/2016 08:54:16 rna.q@compute-0-26.local 1
如果要查看任務詳細信息可以使用
qstat -j job-ID
參數或者
qsee
(之前分享的腳本)
$ qsee -u zhandl
job-name job-ID node@queue memory_host memory_job
cpu_time pro_code
-------- ------ ---------- ----------- ----------
test.sh 591148 compute-0-26@rna.q (3.9G/62.8G, 17.5M/62.5G) vmem=1.2G/1.2G (VF=15G)
01:28:49
可以看到消耗的資源、cpu時間等。另
qstat -f
可以查看節點狀態(a/au/o)和load信息
$ qstat -f|grep compute-0-1
reseq.q@compute-0-1.local BIP 0/5/38 28.63 linux-x64
reseq.q@compute-0-10.local BIP 0/10/38 19.23 linux-x64
reseq.q@compute-0-11.local BIP 0/5/38 35.23 linux-x64
reseq.q@compute-0-12.local BIP 0/6/38 35.39 linux-x64
reseq.q@compute-0-13.local BIP 0/6/38 28.47 linux-x64
reseq.q@compute-0-14.local BIP 0/5/38 30.65 linux-x64
reseq.q@compute-0-15.local BIP 0/4/38 27.32 linux-x64
rna.q@compute-0-16.local BIP 0/21/38 -NA- linux-x64 au
rna.q@compute-0-17.local BIP 0/8/38 31.26 linux-x64
rna.q@compute-0-18.local BIP 0/9/38 25.13 linux-x64
rna.q@compute-0-19.local BIP 0/10/38 7.09 linux-x64
如上面看到
compute-0-16
已被跑掛,狀態為
au
,load為
-NA-
.
qstat -f 結果中的states
(a)larm, (u)nreachable, (E)rror
state (au) whenever:
- A node is down
- A node is hung/frozen
- Network problems
(4)
qhost 命令—用於看集群資源
這個命令是查看集群資源的,如直接
qhost
會列出節點信息
$ qhost|tail -n 5
compute-0-8 linux-x64 40 28.80 63.0G 28.3G 62.5G 23.3M
compute-0-9 linux-x64 40 23.98 63.0G 16.2G 62.5G 20.9M
mysql linux-x64 12 4.01 63.0G 9.8G 62.5G 78.6M
super-0-1 linux-x64 80 10.13 1009.9G 227.0G 128.0G 0.0
test linux-x64 12 12.74 63.0G 17.0G 62.5G 8.5M
也可以查看節點的任務信息
$ qhost -j |grep super
super-0-1 linux-x64 80 9.40 1009.9G 227.1G 128.0G 0.0
585895 0.55000 denovo.sh fufangni r 01/26/2016 16:51:06 super.q@su MASTER
587179 0.55000 denovo.sh fufangni r 01/26/2016 16:52:25 super.q@su MASTER
591156 0.55000 denovo_lat yukaicheng r 01/27/2016 09:17:48 super.q@su MASTER
所需的硬件資源由PBS 管理和分配。
1、PBS 命令
PBS 提供4 條命令用於作業管理。
(1) qsub 命令—用於提交作業腳本
命令格式:
qsub [-a date_time] [-c interval] [-C directive_prefix]
[-e path] [-I] [-j join] [-k keep] [-l resource_list] [-m mail_options]
[-M user_list][-N name] [-o path] [-p priority] [-q destination] [-r c]
[-S path_list] [-u user_list][-v variable_list] [-V]
[-W additional_attributes] [-z]
[script]
參數說明:因為所采用的選項一般放在pbs 腳本中提交,所以具體見PBS 腳本選項。
例:# qsub aaa.pbs 提交某作業,系統將產生一個作業號
(2) qstat 命令—用於查詢作業狀態信息
命令格式:qatat [-f][-a][-i] [-n][-s] [-R] [-Q][-q][-B][-u]
參數說明:
-f jobid 列出指定作業的信息
-a 列出系統所有作業
-i 列出不在運行的作業
-n 列出分配給此作業的結點
-s 列出隊列管理員與scheduler 所提供的建議
-R 列出磁盤預留信息
-Q 操作符是destination id,指明請求的是隊列狀態
-q 列出隊列狀態,並以alternative 形式顯示
-au userid 列出指定用戶的所有作業
-B 列出PBS Server 信息
-r 列出所有正在運行的作業
-Qf queue 列出指定隊列的信息
-u 若操作符為作業號,則列出其狀態。
若操作符為destination id,則列出運行在其上的屬於user_list 中用戶的作業狀態。
例:# qstat -f 211 查詢作業號為211 的作業的具體信息。
(3) qdel 命令—用於刪除已提交的作業
命令格式:qdel [-W 間隔時間] 作業號
命令行參數:
例:# qdel -W 15 211 15 秒后刪除作業號為211 的作業
(4) qmgr 命令—用於隊列管理
qmgr -c "create queue batch queue_type=execution"
qmgr -c "set queue batch started=true"
qmgr -c "set queue batch enabled=true"
qmgr -c "set queue batch resources_default.nodes=1"
qmgr -c "set queue batch resources_default.walltime=3600"
qmgr -c "set server default_queue=batch"
2、PBS 腳本文件
PBS 腳本文件由腳本選項和運行腳本兩部分組成。
(1) PBS 作業腳本選項 (若無-C 選項,則每項前面加‘#PBS’)
-a date_time : date_time 格式為:[[[[CC]YY]MM]DD]hhmm[.SS]
表示經過date_time 時間后作業才可以運行。
-c interval : 定義作業的檢查點間隔,如果機器不支持檢查點,則忽略此選項。
-C directive_prefix :在腳本文件中以directive_prefix 開頭的行解釋為qsub 的命
令選項。(若無此選項,則默認為’#PBS’ )
-e path :將標准錯誤信息重定向到path
-I :以交互方式運行
-j join :將標准輸出信息與標准錯誤信息合並到一個文件join 中去。
-k keep :定義在執行結點上保留標准輸出和標准錯誤信息中的哪個文件。
keep 為o 表示保留前者,e 表示后者,oe 或eo 表示二者都保留,
n 表示皆不保留。若忽略此選項,二者都不保留。
-l resource_list : 定義資源列表。以下為幾個常用的資源種類。
cput=N : 請求N 秒的CPU 時間; N 也可以是hh:mm:ss 的形式。
mem=N[K|M|G][B|W]:請求N {kilo|mega|giga}{bytes|words} 大小的內存。
nodes=N:ppn=M :請求N 個結點,每個結點M 個處理器。
-m mail_options :mail_option 為a:作業abort 時給用戶發信;為b:作業開始運行發信;為e:
作業結束運行時發信。若無此選項,默認為a。
-M user_list : 定義有關此作業的mail 發給哪些用戶。
-N name : 作業名,限15 個字符,首字符為字母,無空格。
-o path : 重定向標准輸出到path。
-p priority : 任務優先級,整數,[-1024,1023],若無定義則為0.
-q destination : destination 有三種形式: queue , @server,queue@server。
-r y|n : 指明作業是否可運行,y 為可運行,n 為不可運行。
-S shell : 指明執行運行腳本所用的shell,須包含全路徑。
-u user_list : 定義作業將在運行結點上以哪個用戶名來運行。
-v variable_list : 定義export 到本作業的環境變量的擴展列表。
-V : 表明qsub 命令的所有環境變量都export 到此作業。
-W additional_attributes : 作業的其它屬性。
-z : 指明qsub 命令提交作業后,不在終端顯示作業號。
(2) 運行腳本同LINUX 下一般的運行腳本文件。
[注]:腳本文件中的mpirun_rsh 命令行中的節點列表文件要用環境變量表示
$PBS_NODEFILE,這個環境變量表示由pbs 自動分配給作業的節點列表;
節點數為命令行中指定的進程數。
格式如下:
mpirun_rsh –np 進程數 –hostfile $PBS_NODEFILE 可執行程序名
3、PBS 環境下運行示例
(1)腳本文件編輯示例
實例1:運行mpi 程序
命令行:#vi aaa.pbs
編輯的內容:
#PBS -N myjob
#PBS -o /home/jz/my.out
#PBS -e /home/jz/my.err
#PBS –l nodes=2:ppn=2
cd 目錄(你們原來直接在節點上運行時所在的目錄)
mpirun_rsh –np 4 –hostfile $PBS_NODEFILE /home/jz/helloworld
解釋:原先大家都是在中斷輸入 mpirun_rsh…..這些命令執行程序的,現在只要把這些提交命令放
在.pbs 配置文件的最后,由PBS 來調度執行(自動分配節點和其它資源)。
Myjob 是為你此次要運行的程序起的任務名,可以改成你自己想要的名字
原先輸出信息都是直接在屏幕上顯示的,現在屏幕上的顯示全部輸出到文件中,上例中輸出文
件是/home/jz/my.out 文件,大家可以根據自己的需要修改(目錄,文件名)。程序運行時遇到的一些錯誤會
記錄在.err 文件中。好處:因為對每個任務都設定了不同的輸出文件,所以看結果只要打開相應文件看就可
以了,不需要開多個終端,而且里面有任務的詳細信息,比如實際分配的是哪些節點計算,運行時間等。
#PBS –l nodes=2:ppn=2,你們程序需要幾個節點只要修改nodes 后的數字就可以了,ppn=2 保持
不變,因為我們的機器每個節點都是雙cpu 的。
mpirun_rsh –np 4 –hostfile $PBS_NODEFILE /home/jz/helloworld
此例中-np 后的4 是並行數(2 × 2 = 4 個cpu ), –hostfile $PBS_NODEFILE 不需要改變。
/home/jz/helloworld 是你編譯好的可執行文件名,需修改。
對於每個你要運行的mpi 程序都需要這樣一個.pbs 配置文件
也就是說大家原來的操作是:mpirun…………
現在改成2 步走:1)寫個pbs 配置文件(比如xxx.pbs);2)向pbs 提交(qsub xxx.pbs)
實例2:運行非mpi 程序
有些用戶並不是自己編寫mpi 程序,同樣也可以用pbs 提交。
比如物理系運行程序時一般輸入的命令是 RunDMol3.sh TiFeCp2-pbe-dspp-m=1-opt ,那么配置文件可以
這樣寫:
命令行:#vi job.pbs
編輯的內容:
#PBS -N physics_job
#PBS -o /home/physics/physics_job.out
#PBS -e /home/physics/physics_job.err
#PBS -l nodes=1:ppn=2
#PBS -r y
cd 目錄(你們原來直接在節點上運行時所在的目錄)
RunDMol3.sh TiFeCp2-pbe-dspp-m=1-opt
解釋:也就是說把原來在終端直接輸入的命令RunDMol3.sh TiFeCp2-pbe-dspp-m=1-opt 放到pbs 配置
文件中,因為你們只要一個節點,所以nodes=1,至於用哪個節點系統自動分配,你們肯定很關心是分配
了哪個節點給你們,那么可以用qstat 命令查詢(比如qstat -n)。
(2) 提交作業示例
命令行:#qsub aaa.pbs
顯示結果:
(3) 作業狀態查詢示例
Qstat 后加不同參數可以查看不同的信息(各參數的意思,上面有詳細的說明,你們可以一個個試驗一
下,以后就知道查看哪些信息,需要哪些參數)
實例:
命令行:#qstat –a (查看作業的狀態)
顯示結果:
解釋:Job id 211 是給你提交的任務分配的任務號,S(任務狀態,R 表示正在運行,Q 表示正在排
隊等候調度)
8
命令行:#qstat –n (查看作業使用的節點)
顯示結果:
解釋:blade32 就是分給你這個任務的節點
命令行:#qstat –f 211 (查看有關作業運行具體信息)
顯示結果:
解釋:exec_host 顯示的是實際執行該任務的節點
